Real-ESRGAN
The old reliable upscaler, now with no VRAM at all
- image
- image
Real-ESRGAN is the workhorse of upscaling, full stop. It's been the default "make it bigger, don't add garbage" tool since 2021 - a pixel upscaler that adds no new content, can't hallucinate, and runs in milliseconds locally. This node is that same model, but as a cloud call in the Runware pack: feed it an image, get back a 2× or 4× upscale as a native IMAGE. If your only reason for not upscaling was that you're on a laptop or a low-VRAM card and don't want the local ESRGAN pipeline fuss, this removes the excuse entirely.
Before you use it, though, know what it isn't. The KB's upscaling essay makes the distinction that resolves most arguments in this space: Real-ESRGAN is a pixel upscaler - it adds resolution, not detail. If your source is already sharp and you just need it bigger, this is the right tool and nothing else comes close for cheapness. If your source is soft, compressed, or small and you want the model to invent plausible detail (pores, fabric weave, sharp edges that were never there), you want a generative restorer like SeedVR2 or SUPIR instead - and this node will not do that job, no matter the settings.
How it works
It's an upscale task in the pack's classification, so like the image nodes it returns an IMAGE tensor (the pack maps upscale outputs to the image path). The node sends your image to Runware, the API upscales it with a Real-ESRGAN variant, and the result comes back as a native IMAGE you can preview, save, or chain into further steps.
The controls are refreshingly few:
image(required) - the input, anIMAGEtensor. Wire in whatever you want enlarged.upscaleFactor-(default),2, or4. 2 doubles both dimensions, 4 quadruples them (so a 1024² input becomes 4096²). The(default)sentinel lets the model pick. Realistically: 4× from a clean source, 2× if the source is soft - upscaling a blurry image 4× just gives you a bigger blur.outputFormat- JPG (default), PNG, WEBP.outputQuality- 20–99, default 95. At 4× you're writing a big file; drop quality a bit for a much smaller one if it's going to Discord, not print.ttl/ttl_value- only relevant if you're fetching the output URL directly; the node saves/holds the result for you, so ignore these.
Single output: image → Preview Image or Save Image.
Installing
cd ComfyUI/custom_nodes
git clone https://github.com/Runware/ComfyUI-Runware
pip install -r ComfyUI-Runware/requirements.txt
Or ComfyUI Manager → search Runware → install → restart. API key via ComfyUI Settings → Runware API key, RUNWARE_API_KEY, or runware auth login. No models to download.
When you shouldn't use this node
Honestly, the main argument against it is that Real-ESRGAN locally is already free and instant - if you have any GPU at all, the local version costs nothing per use, while this is a metered API call. The node makes sense when you're on hardware that can't run it, when you're already paying for Runware and want one consistent pipeline, or when you're upscaling a lot of images and don't want to manage models. The bigger trap is using it for the wrong job: it will not restore faces, fix compression, or invent detail. That's not a bug - it's the category. Reach for it when the source is already sharp. If it comes back bigger but still soft, that's the signal you actually needed a generative upscaler, not a bigger version of this one.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| upscaleFactoropt | COMBO | (default) | Factor by which to upscale the generated image. A value of 2 doubles width and height. |
| ttlopt | BOOLEAN | false | Enable to set ttl. Off uses the model's default. |
| ttl_valueopt | INT | 60 | Time-to-live (TTL) in seconds for generated content. Only applies when `outputType` is `URL`. |
| outputFormatopt | COMBO | JPG | File format for the generated image. |
| outputQualityopt | INT | 9520–99 | Compression quality of the output. Higher values preserve quality but increase file size. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |