Nodes/ComfyUI-ZImageTurboHQNodes/ZImage Turbo Two Pass Refiner
ComfyUI Node

ZImage Turbo Two Pass Refiner

Upscale and refine in one node — the Z-Image second pass, automated

By marduk191·Created 7 months ago·Updated 7 months ago· 3
ZImage Turbo Two Pass Refiner
  • model
  • positive
  • negative
  • vae
  • image
  • image
seed13371438
upscale_by1.50
strengthnormal

Z-Image's native ceiling is around 2MP, and beyond that quality starts falling apart. So how do people get big, clean images out of it? They generate at a comfortable size, then run the result through a second pass: upscale it, re-encode, and let the model refine at low denoise. That whole second pass is what this node does, end to end, in one box. Give it an image, get a bigger, sharper image back.

How it works, step by step:

  1. It takes your image, upscales it by upscale_by with a Lanczos resize.
  2. Encodes the upscaled pixels to latent with your vae.
  3. Runs a partial-denoise sampling pass - CFG 1, using the pack's euler_flow/capitanZiT pair - at a denoise chosen by strength: subtle 0.25, normal 0.32, strong 0.40.
  4. Decodes back to an IMAGE and hands it to you.

The low denoise is the whole trick. A full-denoise pass would redraw the image and fight your composition; a 0.25–0.40 pass only replaces a fraction of the noise, which is exactly enough for the model to add real detail to the upscaled texture without wrecking what's there. It's the same "Z-Image as universal second-pass enhancer" pattern the community uses to push up images from Flux, Qwen, even Wan - here it's packaged with the tuned sampling profile built in.

Inputs that matter:

  • model / positive / negative / vae - your Z-Image Turbo UNet, the conditioning from the pack's conditioning node, and the Z-Image VAE. The negative is the usual zeroed formality at CFG 1.
  • image - feed it the VAEDecode output of your base pass.
  • seed - pair it with ZImageTurboSeedControl's refine_seed so the refine pass doesn't reuse the base seed.
  • upscale_by - 1.0 to 4.0, default 1.5. 1.5 is the "nice bump in detail" sweet spot; 2.0+ gets aggressive and can start inventing texture.
  • strength - subtle / normal / strong. Start at normal; drop to subtle if the refiner is changing your image's character, go strong if it's not doing enough.

Output: one image (IMAGE), ready for SaveImage or another pass. Note it decodes through the VAE, so this node hands you pixels, not a latent - if you want to keep refining, feed the output back into this node's image input and let it upscale again.

Install is pack-level: ComfyUI Manager → "ZImageTurboHQNodes", or

cd ComfyUI/custom_nodes
git clone https://github.com/marduk191/ComfyUI-ZImageTurboHQNodes

restart. No pip deps. Models come from Tongyi-MAI's Z-Image-Turbo HF repo, not the pack.

The thing that bites people: refining is not a free lunch. At strong with a high upscale_by you can over-crisp, and the low denoise means your conditioning still shapes the pass - a vague prompt gives you a vague sharpen. Also remember this runs a full sampler pass, so on a 3060 you're not saving time, you're buying detail. That's the deal.

Categoryzimage_turbo/hq

Inputs (8)

NameTypeDefaultDescription
modelMODEL
positiveCONDITIONING
negativeCONDITIONING
vaeVAE
imageIMAGE
seedINT133714380–18446744073709550000
upscale_byFLOAT1.501–4
strengthCOMBOnormal3 options: subtle, normal, strong

Outputs (1)

NameTypeDescription
imageIMAGE