Nodes/ComfyUI/Upscale Image (using Model)
ComfyUI Node Runs on cloud

Upscale Image (using Model)

Run an ESRGAN upscaler on your image

By Comfy-Org·Created 4 years ago·Updated 16 days ago· 121,575
Upscale Image (using Model)
  • upscale_model
  • image
  • IMAGE

This is the node that takes your image and an upscale model and hands you back a bigger, sharper version. It's the "more pixels" path - no diffusion, no hallucinated detail, no rewritten faces. You feed it a trained super-resolution model (a 4x ESRGAN variant, usually) and it runs the image through it. Milliseconds, minimal VRAM, completely predictable.

First thing worth knowing: despite where you found this page, ImageUpscaleWithModel is a core ComfyUI node, not a custom one. Its python_module is comfy_extras.nodes_upscale_model, which means it ships with ComfyUI itself. You don't install anything to get it. In the menu it's called Upscale Image (using Model), under image/upscaling.

What it actually does

It's the second half of a two-node pair. UpscaleModelLoader loads a .pth upscale model off disk and outputs an UPSCALE_MODEL; this node consumes that plus your IMAGE and applies it. The model has a fixed scale factor baked in - most of the popular ones are 4x - so a 512px image comes out 2048px whether you wanted exactly that or not.

That fixed factor is the thing to internalize. This node doesn't let you pick a target size. If you want 2x, not 4x, the standard move is to run the 4x model here and then shrink the result with a plain resize node - Image scale by ratio at 0.5, or Image scale to side to nail an exact edge length. Upscale big, scale down to taste.

The inputs and outputs that matter

There are only two inputs and both are required:

  • upscale_model (UPSCALE_MODEL) - comes straight from an UpscaleModelLoader.
  • image (IMAGE) - whatever you want enlarged.

Out comes a single IMAGE. Wire it into a Save Image, or into that downscale step, or feed it as the pixel input to a second sampler pass if you're doing detail work.

Which model to load

The node is only as good as the model you give it, and this is where the real choices live. The community workhorses, per our upscaling notes:

  • 4x-UltraSharp - the default recommendation for general photos. Clean, doesn't over-sharpen.
  • 4x_NMKD-Siax_200k and RealESRGAN_x4plus_anime_6B - for anime and illustration.
  • Remacri - another well-liked general-purpose 4x.

Grab these from OpenModelDB or the usual model sites and drop them in ComfyUI/models/upscale_models/.

Where this sits in the bigger picture

Understand what category you're in. This is a pixel upscaler - it adds resolution, not content. If your source is already sharp and you just need it larger, this is exactly right, and contrary to what you'd assume, this cheap non-generative rung is gaining share in the community, not fading. If your source is soft, damaged, or low-detail, a pixel upscaler can't invent what isn't there - that's a job for a generative restorer like SeedVR2 or SUPIR, which is a different node entirely. Decide which problem you actually have before reaching for anything.

Common issues & troubleshooting

"Required input is missing: upscale_model." You wired the image but not the model. This node has no built-in model - it needs an UpscaleModelLoader feeding it.

The output is way bigger than expected. That's the model's fixed factor (usually 4x), not a bug. Add a downscale after it to hit your real target.

Out of memory on huge images. A 4x pass on an already-large image can blow up VRAM because it holds the full upscaled tensor. Downscale the input first, or tile it, if you're pushing past 4K.

It looks over-sharp or plasticky. That's the model, not the node - swap 4x-UltraSharp for a gentler variant, or blend the upscale back over a Lanczos resize of the original.

Categoryimage/upscaling

Inputs (2)

NameTypeDefaultDescription
upscale_modelUPSCALE_MODEL
imageIMAGE

Outputs (1)

NameTypeDescription
IMAGEIMAGE