Nodes/hd-nodes-comfyui/HD Ultimate SD Upscale
ComfyUI Node

HD Ultimate SD Upscale

ComfyUI Node Guide

By xiaoxiaodesha·Created 2 years ago·Updated 2 years ago· 18
HD Ultimate SD Upscale
  • image
  • model
  • positive
  • negative
  • vae
  • upscale_model
  • IMAGE
upscale_by2.00
seed0
steps20
cfg8.00
sampler_name
scheduler
denoise0.20
mode_type
tile_width512
tile_height512
mask_blur8
tile_padding32
seam_fix_mode
seam_fix_denoise1.00
seam_fix_width64
seam_fix_mask_blur8
seam_fix_padding16
force_uniform_tilestrue
tiled_decodefalse

The name is doing a lot of work here, and it's worth reading carefully. This node has the exact parameter list of the Ultimate SD Upscale everyone already has installed - the Coyote-A/ssitu tiled-diffusion classic that's been the go-to for arbitrary-size upscaling on limited VRAM since the A1111 days. Same tile width, same seam-fix modes, same everything. But this isn't that node wearing a new name. The pack's own README says plainly what changed: this fork only upscales the top half of the image, to save time. That's not a bug you'll hit later - it's the entire point of the node, and if you don't know it going in, you'll spend a while wondering why the bottom of your output looks untouched.

What it's for. Ultimate SD Upscale, in general, is tiled diffusion upscaling: split the image into overlapping tiles, run a real sampling pass on each one at proper resolution, blend the seams, stitch it back together. It's how you get a 4K+ output without a 48GB card - the community still reaches for it (or Tiled Diffusion) specifically for print-size and high-res jobs on modest VRAM, even now that generative upscalers like SeedVR2 have taken over the "add convincing detail" job everywhere else. This HD variant takes that same machinery and narrows it to half the frame, which only makes sense if you already know your subject lives in the top half - a portrait or headshot pipeline, basically, where re-diffusing background and legs at high cost buys you nothing.

Inputs that matter. Under the hood it's a KSampler bolted to a tiler, so most of the required inputs are exactly what you'd wire into any sampling node: image, model, positive, negative, vae, plus seed, steps, cfg, sampler_name, scheduler, and denoise. Keep denoise low - it defaults to 0.2, which is sane for a detail pass; push it toward 0.5+ and you're not upscaling anymore, you're regenerating, and the composition will drift. upscale_by sets the target multiplier, and upscale_model is a separate ESRGAN-style model that does the raw pixel resize the sampling pass then adds detail on top of. The tiling mechanics - tile_width, tile_height, tile_padding, mask_blur, mode_type (Linear/Chess/None, which is just the order tiles get processed in) - are your VRAM/quality dial: smaller tiles, less memory, more visible seams if you're not careful. That's what the seam_fix_* cluster (seam_fix_mode, _denoise, _width, _mask_blur, _padding) exists to clean up - turn on Band Pass or Half Tile if you're seeing a grid pattern in the output. force_uniform_tiles and tiled_decode are memory-side toggles worth leaving on their defaults unless you're actively fighting an OOM. One IMAGE comes out the other end.

Installing it. Search "hd-nodes-comfyui" (the repo's actual title) or "HD Nodes" in ComfyUI Manager, or do it manually: cd ComfyUI/custom_nodes && git clone https://github.com/xiaoxiaodesha/hd_node, then restart. One heads-up that applies to every node in this pack, not just this one: the README's install note says you need insightface in the same Python environment, full stop, no node named. ComfyUI extensions typically register every node from one file at load time, so if that import fails, you can lose the whole pack from the node search - not just the node that actually needed it. Install insightface before you go hunting for any HD node that's gone missing (the HD-FaceIndex article in this series has the gory details on why that dependency is such a pain).

Where people get tripped up. The obvious one: expecting a full-frame result and getting a half-processed image. That's by design, not breakage - if you want ordinary, whole-image Ultimate SD Upscale, the standard Coyote-A node most people already have is the one to reach for; save this fork for the specific portrait pipeline it was built for. Beyond that, the failure modes are the same as any tiled upscaler: visible seams mean turn on seam fix, an overly "regenerated" look means your denoise crept too high, and running out of VRAM means shrink the tile size before you shrink the upscale factor.

CategoryHD Nodes/upscaling

Inputs (25)

NameTypeDefaultDescription
imageIMAGE
modelMODEL
positiveCONDITIONING
negativeCONDITIONING
vaeVAE
upscale_byFLOAT2.000.05–4
seedINT00–18446744073709550000
stepsINT201–10000
cfgFLOAT8.000–100
sampler_nameCOMBO34 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +28
schedulerCOMBO9 options: normal, karras, exponential, sgm_uniform, simple, ddim_uniform, +3
denoiseFLOAT0.200–1
upscale_modelUPSCALE_MODEL
mode_typeCOMBO3 options: Linear, Chess, None
tile_widthINT51264–16384
tile_heightINT51264–16384
mask_blurINT80–64
tile_paddingINT320–16384
seam_fix_modeCOMBO4 options: None, Band Pass, Half Tile, Half Tile + Intersections
seam_fix_denoiseFLOAT1.000–1
seam_fix_widthINT640–16384
seam_fix_mask_blurINT80–64
seam_fix_paddingINT160–16384
force_uniform_tilesBOOLEANtrue
tiled_decodeBOOLEANfalse

Outputs (1)

NameTypeDescription
IMAGEIMAGE