Nodes/ComfyUI_ScarlotSoft/ScarlotSoft Upscaler HiRes Fix
ComfyUI Node

ScarlotSoft Upscaler HiRes Fix

Upscale, then re-diffuse at low denoise — a whole hi-res fix in one node

By scarlotsoft·Created 2 months ago·Updated about a month ago· 0
ScarlotSoft Upscaler HiRes Fix
  • model
  • positive
  • negative
  • image
  • vae
  • divisor_1
  • divisor_2
  • IMAGE
upscale_model
upscale_method
scale_by1.50
seed0
steps15
cfg5.0
sampler_name
scheduler
denoise0.35

ScarlotSoft Upscaler HiRes Fix is the suite's finishing move: one node that takes your generated image, upscales it with a real upscale model, then runs a second diffusion pass at low denoising to add detail that the first pass didn't have resolution for. It's the "hi-res fix" pattern from the upscaling doc - generate at native res, upscale, then img2img at low denoise - bundled into a single node so you don't have to wire six core nodes every time.

Here's the mechanism, straight from the source, because it matters for how you use it. The node isn't doing anything exotic - it's calling ComfyUI's own core nodes in sequence: UpscaleModelLoaderImageUpscaleWithModelImageScaleByVAEEncodeTiled (512px tiles, 64px overlap) → KSampler at your chosen denoiseVAEDecodeTiled (same tiling). The tiled encode/decode is the interesting choice: it keeps VRAM in check on high resolutions and, with the overlap, avoids the grid artifacts tiling usually produces. You're paying a little extra compute for that safety.

The inputs are the usual sampler stack plus upscale controls:

  • model, positive, negative, vae - your existing sampler's model and conditioning, wired straight in. Note it takes a decoded image, not a latent, so it sits after a VAE Decode.
  • upscale_model - picked from your models/upscale_models folder. This is the one external file you need: an ESRGAN-class upscaler like 4x-UltraSharp (general) or 4x-AnimeSharp (anime).
  • upscale_method (lanczos, bicubic, etc.), scale_by (default 1.5).
  • seed, steps (15), cfg (5), sampler_name, scheduler, denoise (0.35) - the second-pass sampler.

The defaults are honestly well-chosen for the pattern. denoise 0.35 sits inside the 0.3–0.5 sweet spot the upscaling doc calls out - high enough to add detail, low enough that the composition doesn't drift. scale_by 1.5 is the sensible first try. steps 15 is plenty for a second pass. It outputs an IMAGE, ready to save or post-process.

Install

Standard for the suite - ComfyUI Manager, search "ScarlotSoft", install, restart, or:

cd ComfyUI/custom_nodes
git clone https://github.com/scarlotsoft/ComfyUI_ScarlotSoft

Then the one thing people miss: drop an upscale model in ComfyUI/models/upscale_models/ or the upscale_model dropdown will be empty. 4x-UltraSharp from any CivitAI mirror is the classic drop-in.

The honest take

This node is a convenience wrapper around core nodes - you can build the identical pipeline by hand, and on pure flexibility you might want to (tile size and overlap aren't exposed, they're hardcoded at 512/64). But that's also the point: it collapses a fiddly six-node chain into one clean node with sane defaults. Watch the denoise if your results come back looking like a different image than you started with - that's the sign you pushed it too high. And remember the sequencing rule from the KB: detail at native resolution first, then upscale; this node is the "then."

CategoryScarlotSoft/Upscaler/HiRes Fix

Inputs (16)

NameTypeDefaultDescription
modelMODEL
positiveCONDITIONING
negativeCONDITIONING
imageIMAGE
vaeVAE
divisor_1SCARLOT_DIVIDERUpscaler
upscale_modelCOMBO0 options:
upscale_methodCOMBO5 options: nearest-exact, bilinear, area, bicubic, lanczos
scale_byFLOAT1.500.01–8
divisor_2SCARLOT_DIVIDERHiRes Fix Sampler
seedINT00–18446744073709550000
stepsINT151–10000
cfgFLOAT5.00–100
sampler_nameCOMBO44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
schedulerCOMBO9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3
denoiseFLOAT0.350–1

Outputs (1)

NameTypeDescription
IMAGEIMAGE