Nodes/comfyui-mudknight-utils/Upscale (full-pipe)
ComfyUI Node

Upscale (full-pipe)

I2i upscale with an optional upscale model

By mudknight·Created 8 months ago·Updated 2 months ago· 1
Upscale (full-pipe)
  • full_pipe
  • image
  • full_pipe
  • image
sampler_nameeuler_ancestral_cfg_pp
scheduleralign_your_steps
steps20
cfg1.5
denoise1.00
upscale_model
scale_by2.00
variations1

Upscale (full-pipe) is a hires-fix in a single pipe node: it scales an image up, VAE-encodes it, samples it img2img-style, and decodes the result - with an optional upscale model to keep the details sharp while the sampler works. If you know ComfyUI's classic two-pass workflow (generate small, upscale, low-denoise resample), this is that, collapsed into one node that reads and writes a FULL_PIPE.

It's worth being clear about which kind of "upscale" this is, because the community distinguishes sharply. This is the generative upscaler (the KB's "more detail" bucket): the sampler invents detail during the resample, which is why the denoise dial exists. It is not a pure pixel-pusher like Lanczos alone. The author's own SDXL example workflow does exactly this - generate, upscale, then detail the face - which is the classic recipe.

How it works

It takes the image (from the pipe, or an optional image input), scales it by scale_by using either lanczos or an upscale model (CombinedUpscaleNode - model + lanczos to hit the target), encodes the scaled image to a latent once, then samples it variations times. Each variation uses the base seed from the pipe incremented by its index (seed, seed+1, …), so you get a batch of related results from a single encode - a cheap way to pick the best of several. The decoded images are concatenated into a batch and stored back into the pipe.

Notable quirk: the scheduler list here includes beta57 (via the BetaSamplingScheduler) and align_your_steps is the default, because the author's sampling helper routes those through SamplerCustom. If you're on an SDXL anime model, the align_your_steps default is a known good pairing.

The inputs that matter

  • scale_by - default 2.0, up to 8x. This is the multiplier; 1.0 means no upscale but still a resample.
  • denoise - default 1.0, which is a red flag for newcomers: at full denoise you're not "upscaling," you're re-rolling the image. For a classic hires-fix you want 0.3–0.6. The author ships it at 1.0, which makes sense as a "generate a bigger version" default but will destroy your composition if you expected a gentle upscale. Dial it down.
  • upscale_model - none or any .pth/.pt/.safetensors in your upscale_models folder. A good ESRGAN-family model here adds real sharpness before the sampler touches it.
  • variations - default 1. Bump it to get N sampled versions as a batch.
  • steps / cfg / sampler_name / scheduler - the usual sampler controls, all exposed because this is a full sampling pass, not just a resize.

Outputs: the updated full_pipe (with the batch as image) and the image batch itself.

Installing

Part of the mudknight utils pack. ComfyUI Manager → search comfyui-mudknight-utils, or:

cd ComfyUI/custom_nodes
git clone https://github.com/mudknight/comfyui-mudknight-utils

Restart. If you want the model path, drop an ESRGAN-family upscaler (4x-UltraSharp, Remacri, etc.) into ComfyUI/models/upscale_models - the node picks them up automatically.

Gotchas

  • Output looks completely differentdenoise is at 1.0. Lower it. This is the #1 surprise with this node.
  • "No image in pipe" - feed the optional image input or make sure the pipe carries one.
  • Huge batch memory spike - variations × decode at 2x+ resolution adds up fast. Each decoded frame is full res; on a 12GB card keep variations modest at 2x.
  • align_your_steps on non-SDXL - the helper detects model type (SD1/SDXL/SVD) to pick sigmas, so it mostly just works. If results look off, switch scheduler to karras.

A niche pack with zero comfy.icu impressions, but if you're already chaining full-pipe nodes this is the least-fiddly hires-fix on offer - once you've met the denoise default.

Categorymudknight/generation

Inputs (10)

NameTypeDefaultDescription
full_pipeFULL_PIPE
sampler_nameCOMBOeuler_ancestral_cfg_pp44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
schedulerCOMBOalign_your_steps11 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +5
stepsINT201–10000
cfgFLOAT1.50–100
denoiseFLOAT1.000–1
upscale_modelCOMBO1 options: none
scale_byFLOAT2.000.01–8
variationsINT1Number of images to generate. Each variation uses the base seed incremented by its index.
imageoptIMAGE

Outputs (2)

NameTypeDescription
full_pipeFULL_PIPE
imageIMAGE