Nodes/ComfyUI-LG_SamplingUtils/ZImage Timestep Noise
ComfyUI Node

ZImage Timestep Noise

Z-Image looks identical on every seed? This is the fix

By LAOGOU-666·Created 8 months ago·Updated 8 months ago· 193
ZImage Timestep Noise
  • model
  • sigmas
  • mask
  • MODEL
modeflow
noise_strength0.05
seed0
start_percent0.00
end_percent0.50

If you've generated a few Z-Image Turbo images, you know the complaint: pick ten different seeds and you get ten near-identical pictures. Same pose, same lighting, same composition - the seed feels decorative. It was the defining Turbo criticism from launch week, and it's exactly the problem this node exists to solve. Instead of accepting the sameness, it jitters the sampling process itself so each seed actually follows a different path. The community calls this whole family of tricks "noise injection," and on Z-Image it's not a gimmick - it's the standard fix.

How it works

ZImageTimestepNoise patches your model so that, during denoising, the timestep the model perceives gets a small random nudge. The model believes it's slightly further along (or earlier) in the schedule than it really is, so it denoises differently. Two modes, picked by mode:

  • flow (default) - additive noise, built for Flow Matching models like Z-Image and Lumina2, where timesteps live in the 0–1 range. The node clamps the nudged value so it can't leave the valid range.
  • sigma - multiplicative noise for traditional diffusion models, where timesteps are bigger numbers and a factor makes more sense.

The nudge is seeded, so a given seed reproduces the same perturbation. And because the node gets the actual sigmas from your scheduler, it can match the current step to a 0–1 progress value and only apply noise inside start_percent to end_percent.

The inputs that matter

You only really touch three of them:

  • noise_strength - the amplitude of the perturbation. Default 0.05. Start there; 0.05–0.1 is plenty. Above ~0.3 on flow mode, images start going mushy and incoherent.
  • mode - flow for Z-Image/Lumina2/AuraFlow, sigma for SD/SDXL-lineage models.
  • seed - changes which perturbation you get. Different seeds + noise = the variety Turbo is missing.

start_percent/end_percent (defaults 0 and 0.5) control when noise is applied. Early steps are where composition is set, so leaving the default window of the first half of sampling is sensible. There's also an optional mask - white areas get the noisy timestep, black areas run normally - for localizing the effect.

Inputs: model, sigmas, mode, noise_strength, seed, start_percent, end_percent, optional mask. Output: a single patched MODEL, which you wire into the sampler's model slot.

Wiring it up

The catch beginners hit immediately: it needs a SIGMAS input, and KSampler hides sigmas behind its step/cfg widgets. So you use the SamplerCustom route - exactly what the pack's own randomness_enhancer_zimage.json example does:

BasicScheduler (from your steps/denoise) → SigmasEditor → SamplerCustom
UNETLoader → ZImageTimestepNoise → SamplerCustom (model input)

If you want to verify it's doing anything, watch the console: the node logs [ZImageTimestepNoise] lines for the first few steps showing whether each step was APPLIED or SKIPPED and the timestep delta. That's a lifesaver when a setting isn't having an effect.

Installation

This is one of five nodes in the ComfyUI-LG_SamplingUtils pack, so install the pack and you get it (plus Model Sampling ZImage, Sigmas Editor, and the two Noise Injection nodes). ComfyUI Manager is easiest - search for ComfyUI-LG_SamplingUtils. Or:

cd ComfyUI/custom_nodes
git clone https://github.com/LAOGOU-666/ComfyUI-LG_SamplingUtils.git

Restart ComfyUI. No Python dependencies, no model downloads - the node only needs your normal Z-Image files (z_image_turbo_bf16.safetensors in models/diffusion_models, the Qwen3 text encoder, a VAE). The pack is GPL-3.0, small, and authored by a Chinese ComfyUI tinkerer (LAOGOU-666); as of late 2025 it's a one-man project, so don't expect rapid updates.

Gotchas

  • Strength too high is the #1 failure mode. Crank it to 1.0 and you get washed-out, structureless garbage. 0.05, then creep up.
  • sigma mode on a flow model (or vice versa) produces nonsense. Match the mode to the architecture.
  • This is the same idea as SeedVarianceEnhancer or ConditioningNoiseInjection, but those perturb the conditioning; this perturbs the timestep. They're not mutually exclusive, though the community wisdom is don't stack every diversity hack at once - you get chaos, not variety.
  • If end_percent is small, you only perturb the earliest, most composition-critical steps - which is usually where you want the variety anyway.
Category🎈LAOGOU/Sampling Utils

Inputs (8)

NameTypeDefaultDescription
modelMODEL
sigmasSIGMAS
modeCOMBOflowsigma: 传统扩散模型(乘性噪声); flow: Flow Matching 模型(加性噪声)
noise_strengthFLOAT0.050–2噪声强度
seedINT00–18446744073709550000噪声种子
start_percentFLOAT0.000–1开始应用噪声的采样进度 (0.0 = 开始)
end_percentFLOAT0.500–1停止应用噪声的采样进度 (1.0 = 结束)
maskoptMASK

Outputs (1)

NameTypeDescription
MODELMODEL