Stable Diffusion Latent Upscaler
The classic latent upscaler, now with nothing to download
- image
- image
There's an old distinction in the upscaling world that still matters: more pixels versus more detail. The first is what ESRGAN and Lanczos do - they make the image bigger without inventing anything. The second is what generative upscalers do - they run the image through a model that adds plausible detail where the upscaled pixels are empty. This node (runware:502@1) is the classic Stable Diffusion latent upscaler, the second-pass workhorse from the SD 1.5 era, running on Runware's cloud. You feed it an image, it comes back 2x bigger, with real added texture instead of just interpolated mush.
If that sounds modest next to the FLUX nodes in this pack, it is - and that's sort of the point. The latent upscaler is a utility. It's the detail-add pass you chain after a generation, the "hires fix" intermediate, the thing that buys you a bigger canvas before a final refinement. It does one job, does it cheaply, and asks nothing of your GPU.
How it works
The mechanism is the SD latent upscale trick: the input image is encoded into latent space, the latent is scaled up (a factor of 2 doubles width and height), and then a diffusion pass re-renders it at the larger size, adding detail consistent with what's already there. Because it works in latent space with the SD 1.5 upscaler model, it's fast and light - but it's also a 2023-era model. It adds detail in SD 1.5's idiom, not FLUX's. Think of it as a dependable first rung on the upscale ladder, not a SUPIR replacement.
Inputs that matter
- image (required) - whatever you're scaling, as a plain
IMAGEsocket. - upscaleFactor - the dropdown, default
(default); the concrete choice is 2 (doubles width and height). - settings.steps - toggle-gated, 20–60, default 20. More steps = more detail time.
- settings.CFGScale - toggle-gated, 3–12, default 3. This is the img2img pass's guidance; keep it low.
- settings.positivePrompt / negativePrompt - the detail pass has its own prompt (e.g. "detailed, sharp" style cues), separate from the original generation's.
- settings.clipSkip - 0–2, the classic CLIP-layer skip from the SD1.5 bag of tricks.
- settings.seed,
outputFormat,outputQuality- the usual.
The image output is a native IMAGE, 2x the input, ready to feed the next stage or straight to Save.
The honest notes
- It adds SD 1.5-flavored detail. On a FLUX or Z-Image render, the latent upscaler's idea of "detail" can fight the source's style. It's great on SD-family images; on modern backbones you may prefer a modern generative upscaler.
- The
(default)factor - if you leave it, you're trusting the model's default; the concrete choice in the dropdown is 2. There's no 4x here, so plan your upscale ladder accordingly (2x → 2x if you need 4x). - Prompts actually matter on the pass. A positive prompt pointing at "detail" plus a negative that keeps artifacts out does noticeably better than empty strings.
- Toggle pattern, again.
settings.steps,settings.CFGScale,settings.seedare all enable-to-set booleans with paired_valuefields.
It's the least glamorous node in the Runware catalog and one of the most useful, because a working 2x latent detail pass is something every serious workflow eventually needs. Here it costs a fraction of a cent and zero VRAM.
Inputs (16)
| 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. |
| settings.CFGScaleopt | BOOLEAN | false | Enable to set settings.CFGScale. Off uses the model's default. |
| settings.CFGScale_valueopt | FLOAT | 3.003–12 | Guidance scale representing how closely the output will resemble the prompt. Higher values produce results more aligned with the prompt. |
| settings.clipSkipopt | BOOLEAN | false | Enable to set settings.clipSkip. Off uses the model's default. |
| settings.clipSkip_valueopt | INT | 00–2 | Number of layers to skip in the CLIP model. |
| settings.negativePromptopt | STRING | Prompt to guide what to exclude from generation. Ignored when guidance is disabled (CFGScale ≤ 1). | |
| settings.positivePromptopt | STRING | Text prompt describing elements to include in the generated output. | |
| settings.seedopt | BOOLEAN | false | Enable to set settings.seed. Off uses the model's default. |
| settings.seed_valueopt | INT | 00–9223372036854776000 | Random seed for reproducible generation. When not provided, a random seed is generated in the unsigned 32-bit range. |
| settings.stepsopt | BOOLEAN | false | Enable to set settings.steps. Off uses the model's default. |
| settings.steps_valueopt | INT | 2020–60 | Total number of denoising steps. Higher values generally produce more detailed results but take longer. |
| 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 | — |