PickResolution_DiffusionWave
The resolution dropdown that does your upscale math for you
- INT Width
- INT Height
- FLOAT Width
- FLOAT Height
- INT Upscale Width
- INT Upscale Height
- FLOAT Upscale Width
- FLOAT Upscale Height
- Custom Upscaler
ComfyUI already ships an EmptyLatentImage node, so the bar for a resolution-picker node is "what does this actually add?" PickResolution_DiffusionWave clears it with exactly one trick: it turns the upscaled-size calculation into a single knob. Pick a base resolution from a curated dropdown, tell it how much to upscale, and it hands you both the base and the upscaled dimensions as INT and FLOAT. That's the whole job, and it's a real convenience for workflows that grow a latent and then re-sample it bigger.
What it actually does
The dropdown lists 23 resolutions grouped into SQUARE, VERTICAL, and HORIZONTAL, each labeled with its aspect ratio - 512x512, 1024x1024, 720x1080 (2:3), 1280x720 (16:9), and so on. The labels matter more than they look: every architecture was trained in a specific resolution band, and staying near a trained ratio is what stops stretched bodies and repeated patterns (SDXL's trained ratios are things like 1024x1024 and 1152x896; Flux wants multiples of 64). A dropdown that labels ratios keeps beginners out of the "generate at 1920x1080 directly" trap without them having to think about it.
Under the hood it's dead simple: it parses the selected width and height, snaps the base down to a multiple of 8 ((w // 8) * 8), and computes an upscaled pair as base × CUSTOM_UPSCALER + SUM_EXTRA. The 8-snap is the right instinct - the VAE encodes latents at 8x downsampling, so off-multiple sizes misbehave - though every value in the dropdown already lands on a multiple of 8, so it's a safety net rather than a transformation.
The inputs and outputs that matter
Three inputs, and you'll mostly touch two:
- BASE_RESOLUTION - the dropdown. This is the one you actually pick.
- CUSTOM_UPSCALER - FLOAT, default 1.0, range 0.1 to 10.0. Set it to 1.5 for a 1.5x second-pass target.
- SUM_EXTRA - INT, default 0. Added to both dimensions of the upscaled result. Handy when you want "1.5x, plus a bit" without doing the arithmetic.
It fires nine outputs, and the ones you'll actually wire are the first six: INT Width/Height (feed into EmptyLatentImage) and INT/FLOAT Upscale Width/Height (feed into an ImageScale or a second-pass KSampler path). The FLOAT versions exist for nodes that want floats, and the last output just echoes your multiplier back so another node can reuse it. The ten-decimal-precision rounding on the floats is a personality quirk, not a feature - nothing in the stack cares about decimal place seven.
Installing it
ComfyUI Manager → search "PickResolution_DiffusionWave", or:
cd ComfyUI/custom_nodes
git clone https://github.com/DiffusionWave/PickResolution_DiffusionWave
Restart ComfyUI. There are no dependencies to install and no model files to download - the code only imports nodes, torch, and comfy.model_management, all of which ship with ComfyUI. It's about as low-risk an install as a custom node gets.
Where people get burned
Two real traps, both visible in the source.
First, the dropdown contains decorative rows - the "PICK RESOLUTION" header and the blank lines separating the groups. They look like options; they are not. Select one and the node throws, because it tries to parse the word "PICK" as a number. Stick to the actual NNNNxNNNN entries.
Second, the upscaled INT output is truncated, not 8-snapped. 512 × 1.3 gives 665.6, truncated to 665 - which a VAE will reject if you feed it into an EmptyLatentImage-style path. If your multiplier isn't a clean number, round the upscale result to a multiple of 8 yourself before using it.
One more thing that's worth knowing before you clone: as of August 2026 the repo's main branch ships only the README and an image - the node's Python files were deleted from the tree. A fresh install may register nothing at all. The last working copy is preserved in git history (commit 6df5fe6), so if the node doesn't appear after install, that's why, and it's likely the author tidying rather than abandonment.
Should you reach for it?
Honestly? If you're fluent with a math node and EmptyLatentImage, you don't need this. Where it earns its keep is beginner-facing or shared workflows, where a labeled dropdown self-documents the intended resolution, and where inline upscale preview saves you a text node. The author is a small YouTube channel (DiffusionWave), the community footprint is essentially zero, and the node has no real following - but it's tiny, free, and does one small job cleanly. That's a reasonable trade.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| BASE_RESOLUTION | COMBO | 23 options: PICK RESOLUTION, , SQUARE, 512x512 (1:1), 768x768 (1:1), 1024x1024 (1:1), +17 | |
| CUSTOM_UPSCALER | FLOAT | 10.1–10 | — |
| SUM_EXTRA | INT | 0 | — |
Outputs (9)
| Name | Type | Description |
|---|---|---|
| INT Width | INT | — |
| INT Height | INT | — |
| FLOAT Width | FLOAT | — |
| FLOAT Height | FLOAT | — |
| INT Upscale Width | INT | — |
| INT Upscale Height | INT | — |
| FLOAT Upscale Width | FLOAT | — |
| FLOAT Upscale Height | FLOAT | — |
| Custom Upscaler | FLOAT | — |