Resolution Suggest & Downscale
It Doesn't Downscale Anything — It's a Resolution Calculator
- image
- image
- width
- height
- info
The name lies a little. "Resolution Suggest & Downscale" doesn't resize a single pixel - it's a calculator that tells you what width and height to use, then hands those numbers to whatever actually does the resizing. Which is fine, honestly. It's a tiny, dependency-free utility that saves you from doing multiples-of-16 arithmetic in your head, and for that job it's actually decent.
What it's for
Every serious ComfyUI workflow eventually hits the resolution wall. Image models have a native resolution - generate too far above it and you get tiling, duplicated anatomy, stretched limbs (the KB's troubleshooting doc calls this the single most common complaint). Video models are stricter: WAN 2.2 wants dimensions that divide cleanly by 8 or 16, LTX 2.3 fails outright if width and height aren't divisible by 32. And when your card starts OOMing, the first lever everyone pulls is "make it smaller."
This node sits in that gap. You feed it your image, it preserves the aspect ratio, rounds down to a chosen multiple-of, and never upscales past the source size. It's the kind of "pick a sensible size" helper you'd otherwise do with a calculator app and a prayer.
How it works
Feed it an image and it reads the tensor's dimensions. Then it picks a target based on two dropdowns:
model_profile- which multiple to snap to: 8 (SD/general), 16 (WAN 2.2 / strict, the default), 32 (video/advanced), or 64 (legacy/extra safe). 16 is a fine default for most SDXL-era models.scale_preset- either a percentage (0–60% smaller, default 30%) or one of four "resolution suggestions" drawn from a static table of common resolutions (896×896, 768×768, etc. for a 1024×1024 input).
Here's the part that surprises people: the code snaps down to the nearest multiple. So "30% smaller" on a 1920×1080 image gives a raw 1344×756, which snaps to 1344×752 - two pixels lost off the height for free. That's by design, to keep the result compatible with model constraints, but it means the output isn't exactly what the percentage suggests. If you feed it an input size that isn't in the table (most inputs aren't), suggestions 1–4 fall back to approximate scales of ~80/70/60/50%.
The info output is genuinely nice. It's a STRING with everything the node decided - profile, preset, reduction percentage, raw vs. snapped dimensions, and the suggestions it considered. Wire it into a Show Text node and you can see exactly why you got the size you got.
The inputs and outputs that matter
You only really set the two dropdowns above. The outputs are the point:
widthandheight- the computed INTs. These are what you actually use.image- passthrough of the original tensor. Useful for keeping the graph wired, not for the size.info- the diagnostic string.
The canonical wiring: Load Image → this node → width → Resize Image (V2) → width, same for height. This is the trap. If you connect the node and nothing shrinks, you've found it: it calculates, it doesn't resize. The README's example workflow shows this connection explicitly, because otherwise you'd stare at an unchanged image and blame the node.
Installing it
Zero dependencies, zero model downloads, no requirements.txt - the pyproject.toml lists an empty dependency list, so there's no pip conflict to fight. Easiest via ComfyUI Manager: search "Resolution Suggest & Downscale" and install. Or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/TuonoMindCode/ComfyUI-Resolution-Suggest-Downscale
Then restart ComfyUI. It shows up as Resolution Suggest & Downscale under Resolution/Utilities.
Honest takes and gotchas
- It won't save your VRAM by itself. "Suggestion 4 (very low VRAM)" is just a 50% preset - you still have to actually resize downstream for the memory win. The node is a convenience, not a fix.
- The static table is the weak spot. It's hardcoded and, per the README, generated by ChatGPT. Great for common sizes (1920×1080, 1024×1024, 1280×720); anywhere else you get the fallback percentages. The
infostring tells you which path you took, so glance at it. - For a utility this small, the "written by ChatGPT, I have no programming experience" disclaimer (also from the README) is honestly refreshing - the logic is simple and inspectable, and there's no bloated dependency surface to trust blindly.
- It never upscales - if you feed it a small image and pick "0% smaller," you just get the original snapped to your multiple. That's a feature for constrained models, a quirk when you expected to grow something.
Worth a download if you resize by hand in workflows and are tired of doing division. Not worth it if you already have a resize node with presets you like. It's a small tool, and it knows it.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| model_profile | COMBO | multiple_of: 16 (WAN 2.2 / Strict (16)) | 4 options: multiple_of: 8 (SD / General (8)), multiple_of: 16 (WAN 2.2 / Strict (16)), multiple_of: 32 (Video / Advanced (32)), multiple_of: 64 (Legacy / Extra Safe (64)) |
| scale_preset | COMBO | 30% smaller (1920x1080→1344x756, 1280x720→896x504) | 11 options: 0% smaller (keep original) (1920x1080→1920x1080, 1280x720→1280x720), 10% smaller (1920x1080→1728x972, 1280x720→1152x648), 20% smaller (1920x1080→1536x864, 1280x720→1024x576), 30% smaller (1920x1080→1344x756, 1280x720→896x504), 40% smaller (1920x1080→1152x648, 1280x720→768x432), 50% smaller (1920x1080→960x540, 1280x720→640x360), +5 |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| width | INT | — |
| height | INT | — |
| info | STRING | — |