Nodes/ComfyUI-HiresFix-Ultra-AllInOne/Hires Fix Ultra - All in One
ComfyUI Node

Hires Fix Ultra - All in One

Your whole hires-fix chain in one box, washed-out colors included

By ThetaCursed·Created 5 months ago·Updated 5 months ago· 29
Hires Fix Ultra - All in One
  • image
  • model
  • vae
  • positive
  • negative
  • upscale_model
  • image
  • latent
upscale_methodModel
upscale_by1.5
denoise0.35
steps20
cfg5.00
sampler_name
scheduler
seed1234
tile_size_vae1024
overlap64
color_fix_typeDeep Histogram
color_fix_strength1.00

Your whole hires-fix chain in one box, grayed-out colors included

You know the hires-fix ritual. Generate at native res, then take the image, VAE-encode it, upscale the latent, run a second sampling pass at low denoise, VAE-decode, and - because the second pass quietly drained the saturation out of everything - bolt on a color-match node to claw the original colors back. That's six or seven nodes strung across your graph, and it's exactly the chain Hires Fix Ultra - All in One collapses into a single box. Feed it your low-res image, your checkpoint, VAE, and conditioning, and it runs the whole second pass internally, then hands you a finished hires-fix image on the other side.

Why bother? Because "hires fix" is really two problems glued together. First is the upscale itself - going 1.5–2x above native resolution without repeating texture artifacts (the upscaling essay in our KB calls this the two-pass generation, and 1.5–2x at denoise 0.3–0.5 is the documented sweet spot). Second is the color drift: re-sampling at high denoise is notorious for graying out or fading the image, the same "washed out" failure you get from a mismatched VAE. The node's headline trick, Deep Histogram, is a full histogram match between your upscaled result and the original low-res image, so colors stay 1:1 instead of drifting. There's also Standard (mean/std matching) and None, if you want to see how bad it is without it. A color_fix_strength slider lets you blend the fix in rather than slam it at full.

How it works

Internally it's a VAE Encode → upscale → KSampler → VAE Decode pipeline with a color pass on the tail. The upscale step is where you have a real choice: upscale_method defaults to Model, which means it wants an ESRGAN-style upscaler (Real-ESRGAN, 4x-UltraSharp, that family) plugged into the optional upscale_model input. Or pick one of the six latent methods - Bicubic Antialiased, Bislerp, Area, and friends - which need nothing extra and are the cheap, fast option. Either way the node snaps your result to a multiple of 8 so nothing tiles or blurs at decode time.

Since this is a genuine sampler, you get the whole knob set: steps (default 20), cfg (5), sampler_name (the full 44-sampler list), scheduler (9 options), and seed for reproducibility. The two that actually matter for a beginner are upscale_by (1.5–2x is the zone) and denoise (keep it 0.35–0.5; push past that and you're re-drawing the composition, not refining it). Outputs are image, ready to save or wire on, and latent, in case you'd rather decode yourself or chain another img2img pass.

Installing it

ComfyUI Manager, search ComfyUI-HiresFix-Ultra-AllInOne, install, restart. Or from a terminal:

cd ComfyUI/custom_nodes
git clone https://github.com/ThetaCursed/ComfyUI-HiresFix-Ultra-AllInOne.git

Restart ComfyUI and it'll show up under Image/Upscaling. One thing worth knowing: the README lists no model downloads - the node is a wrapper over stuff ComfyUI already ships. The only file you need to supply yourself is the ESRGAN upscale model if you keep upscale_method on "Model". It's not a huge pack, no heavy Python deps, no VRAM-eating download that sneaks in on install.

Where people get burned

The classic first-run mistake: upscale_method defaults to Model, no upscale_model is connected, and the node errors or silently does nothing sensible. Either drop in an ESRGAN model or switch to a latent method - Bicubic Antialiased is the honest "just make it bigger" default. If you're chasing 4K on a mid-range card and hit OOM, lower tile_size_vae from 1024 toward 512 (the overlap of 64 is fine where it is) - that tiled encode/decode is your OOM insurance. And if the output still looks faded, check that color_fix_type isn't set to None and nudge color_fix_strength up.

The trade-off for this convenience is control. You can't thread a ControlNet Tile pass or a custom scheduler through the middle of it - it's a monolith, and monoliths are opinionated. For the standard "make my good image bigger and keep the colors" case, though, it's genuinely the one-node answer, and it comes from ThetaCursed, the same dev behind the hugely popular Anima Style Explorer and Anima TrainFlow - an active, known quantity rather than a one-off script dump.

CategoryImage/Upscaling

Inputs (18)

NameTypeDefaultDescription
imageIMAGE
modelMODEL
vaeVAE
upscale_methodCOMBOModel7 options: Model, Latent (Bicubic Antialiased), Latent (Bislerp), Latent (Nearest-Exact), Latent (Bicubic), Latent (Area), +1
positiveCONDITIONING
negativeCONDITIONING
upscale_byFLOAT1.50.1–4
denoiseFLOAT0.350–1
stepsINT201–100
cfgFLOAT5.000–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
seedINT12340–18446744073709550000
tile_size_vaeINT1024256–4096
overlapINT640–512
color_fix_typeCOMBODeep Histogram3 options: None, Standard, Deep Histogram
color_fix_strengthFLOAT1.000–1
upscale_modeloptUPSCALE_MODEL

Outputs (2)

NameTypeDescription
imageIMAGE
latentLATENT