ComfyUI Node

SwinIR

The Cloud Upscaler That Skips the Whole Local Dance

By Runware·Created 2 years ago·Updated about a month ago· 140
SwinIR
  • image
  • image
upscaleFactor(default)
ttlfalse
ttl_value60
outputFormatJPG
outputQuality95

SwinIR is one of those names you see in every "best upscaler" thread and never quite place: it's the transformer-based super-resolution model, the pre-2024 workhorse that established what neural upscalers could do before the generative restorers (SUPIR, SeedVR2) took over the "invent detail" end of the job. This node runs it in the cloud, so you get the classic SwinIR upscale without downloading weights, juggling tile nodes, or praying about VRAM.

Worth being precise about what it is and isn't, because the upscaling community has spent years arguing about exactly this. SwinIR is a pixel upscaler: it makes a clean source bigger with fewer artifacts than a dumb bilinear resize, but it does not hallucinate new detail the way a generative restorer does. If your image is already sharp and you just want it at 2× or 4×, that's this node's job. If your image is soft or damaged and you want detail invented, that's SeedVR2 or SUPIR's job, and SwinIR will not do it.

What you set

Required is just image - wire in the tensor you want enlarged. Then:

  • upscaleFactor - the whole point. A dropdown with (default), 2, or 4. The tooltip spells out the math: 2 doubles both width and height, 4 quadruples them. Start at 2 for most work; 4 is for print-sized output or genuinely high-res targets.

That's it. The rest is output plumbing: outputFormat (JPG/PNG/WEBP), outputQuality, and the ttl toggle you can ignore. Output is one image at the upscaled resolution.

Where it fits in a workflow

The classic use is the tail of a generation pipeline: generate at 1024, upscale 2× to 2048, then sharpen or pass to whatever finish you want. Because it's a cloud call, you get the result without the local tiling/VRAM drama that makes local SwinIR setups fiddly - the community's standard local advice is a tile dance plus a ControlNet, and this node just... does it. The trade is cost per call (the title bar shows each one) and the fact that you shouldn't expect it to repair a garbage source. Feed it a clean 1024 and you're in business; feed it noise and you get a bigger version of the noise.

Install

Same as every node in the pack:

cd ComfyUI/custom_nodes
git clone https://github.com/Runware/ComfyUI-Runware
pip install -r ComfyUI-Runware/requirements.txt

Restart, or install "Runware" from ComfyUI Manager. You'll need a Runware API key (Settings → Runware API key or RUNWARE_API_KEY). No model files download - that's the pack's whole deal. For a quick A/B sanity check, run the same image through this and a local Lanczos resize; the difference will tell you quickly whether the cloud call is worth it for your specific sources, and for most clean inputs the honest answer is "sometimes, when 4× matters."

CategoryRunware/Image/runware

Inputs (6)

NameTypeDefaultDescription
imageIMAGE
upscaleFactoroptCOMBO(default)Factor by which to upscale the generated image. A value of 2 doubles width and height.
ttloptBOOLEANfalseEnable to set ttl. Off uses the model's default.
ttl_valueoptINT60Time-to-live (TTL) in seconds for generated content. Only applies when `outputType` is `URL`.
outputFormatoptCOMBOJPGFile format for the generated image.
outputQualityoptINT9520–99Compression quality of the output. Higher values preserve quality but increase file size.

Outputs (1)

NameTypeDescription
imageIMAGE