Nodes/Skoogeer-Noise/Conditioning (Add Noise)
ComfyUI Node

Conditioning (Add Noise)

Jittering Your Prompt Embeddings on Purpose

By ttulttul·Created 8 months ago·Updated 2 months ago· 14
Conditioning (Add Noise)
  • conditioning
  • CONDITIONING
seed0
strength0.10

Most people think of conditioning as a fixed input: encode your prompt, feed it to the sampler, done. Conditioning (Add Noise) is for when you deliberately want that not to be true. It adds seeded Gaussian noise directly to your conditioning embeddings - and to pooled_output when present - so you can inject controlled randomness into what the sampler is being told, rather than into the latent. The difference matters: latent noise scrambles the image, conditioning noise scrambles the instructions.

The honest use cases: squeezing variation out of the same seed by nudging the prompt embedding, weakening prompt adherence by a controlled amount, or batch-generation runs where each sample gets a slightly different semantic nudge. The default strength is a timid 0.1 because embeddings are high-dimensional and don't tolerate much abuse - a little goes a surprisingly long way.

How it works

The node walks the conditioning list, and for each [embedding, metadata] entry it computes the embedding's standard deviation, draws matching Gaussian noise from a seeded generator, scales it by std * strength, and adds. The metadata dict is copied so nothing else about your conditioning is disturbed. If pooled_output exists (it does on most modern text encoders - it's the global "image-level" embedding used heavily by SDXL and Flux-style models), it gets the same treatment with its own std. Because everything scales by per-tensor std, strength means roughly the same thing across different encoders.

The inputs that matter

  • conditioning - any CONDITIONING output, straight from a CLIP Text Encode node.
  • seed - reproducibility. Same seed, same nudge, same result.
  • strength - relative to each tensor's std. 0.05–0.2 is the sane range for most models; the default 0.1 is a fine starting point.

Output is a single CONDITIONING, wired into your sampler's positive or negative port like any other.

Installing it

Ships in the Skoogeer-Noise pack. ComfyUI Manager → search "Skoogeer-Noise", or:

cd ComfyUI/custom_nodes
git clone https://github.com/ttulttul/Skoogeer-Noise

Restart ComfyUI. Only dependencies are torch, numpy>=1.26, einops, pyyaml>=6.0.3 - no downloads beyond the pack itself.

Common gotchas

The main trap is cranking strength and wondering why your subject dissolved. At 0.5+ on an SDXL embedding you're not nudging, you're rewriting the prompt into gibberish. Keep it low and, when you want reproducible batch variety, pair it with the pack's Next Seeds node so each batch item gets its own deterministic seed offset - that's the combo this node was built for. Also note it only touches embeddings and pooled outputs; it won't rescue a conditioning that's already degenerate. And no, this isn't a sampler-noise substitute - the noise is in prompt space, not image space.

Categoryconditioning/noise

Inputs (3)

NameTypeDefaultDescription
conditioningCONDITIONINGConditioning list to perturb with Gaussian noise.
seedINT00–18446744073709550000Seed that drives the conditioning noise.
strengthFLOAT0.100–5Noise strength relative to each tensor's standard deviation.

Outputs (1)

NameTypeDescription
CONDITIONINGCONDITIONING