Combined Upscale (Model + Scale)
A model upscaler that lands on an exact target size
- image
- IMAGE
Upscaling models have a quirk that annoys everyone eventually: they upscale by a fixed factor. A 4× ESRGAN model takes your 1024×1024 to 4096×4096 - and only that. If what you actually wanted was a 2× image for a detail pass, or a specific print size, you're stuck doing a model upscale followed by a resize to get back down. Combined Upscale (Model + Scale) is the one-node version of that two-step dance, and it's built around a useful subtlety: the target size is computed from the original image, not the model's output.
The mechanism, straight from the source: it loads your upscale model, runs ImageUpscaleWithModel on the input, then rescales that result to original_width × scale_factor by original_height × scale_factor using your chosen upscale_method. So with scale_factor at 0.5, a 4× model becomes a clean 2× upscale - the model does the heavy lifting of adding detail, and the resize brings it back to a usable size. It's the difference between "bigger" and "bigger, but exactly as big as I asked for."
The inputs that matter
upscale_model_name- dropdown from yourComfyUI/models/upscale_models/folder. The usual ESRGAN-family suspects (4x-UltraSharp, 4x_NMKD-Siax for anime, RealESRGAN variants) all work; the node handles both the standard andmodule.-prefixed state dict formats.scale_factor(default 1.0, range 0.1–16) - the multiplier against the original dimensions. Below 1.0 you're effectively downscaling the model output; above 1.0 you're combining model detail with additional scaling.upscale_method- the resize algorithm for the final rescale (lanczos, bicubic, bilinear, area, nearest-exact). Lanczos is the usual default for clean results.
Output is a single IMAGE.
When you'd reach for it
The KB's upscaling guide splits the job into "more pixels" vs "more detail" - this node is firmly in the detail camp, letting a generative model invent plausible detail at a resolution you control. The natural use is detail-pass prep: upscale a small render to 2× with a model, feed that to a detailer, and the result stays under your VRAM budget instead of exploding to a 4× canvas. It's also the answer when a workflow gives you a "scale by factor" widget but your upscale is model-based.
Installing it
In mudknight-utils - ComfyUI Manager (search comfyui-mudknight-utils) or:
cd ComfyUI/custom_nodes
git clone https://github.com/mudknight/comfyui-mudknight-utils
No extra node packs; you need the upscale model file itself in models/upscale_models/.
Where people get burned
The trap is forgetting that model upscaling is generative in the "more detail" sense: it will happily invent or alter fine structure, and on faces that means the identity can drift - the upscaling KB is blunt that every generative rung rewrites faces, so give recognisable faces their own pass afterward. And if you pick scale_factor 1.0 with a 4× model expecting a no-op, you'll get exactly one 4× pass then a downscale back to 1× - that's detail-for-nothing, usually worth it, but know that's what's happening.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| upscale_model_name | COMBO | 0 options: | |
| scale_factor | FLOAT | 1.00.1–16 | — |
| upscale_method | COMBO | 5 options: nearest-exact, bilinear, area, bicubic, lanczos |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |