Nodes/Enviral Design Node Pack/Enviral Krea2 Seed Variance Enhancer
ComfyUI Node

Enviral Krea2 Seed Variance Enhancer

Same prompt, same seed, same composition every time? This node fixes that

By EnviralDesign·Created 4 months ago·Updated 21 days ago· 1
Enviral Krea2 Seed Variance Enhancer
  • conditioning
  • conditioning
randomize_percent50
strength20.0000
noise_insert
steps_switchover_percent20
seed0
mask_starts_at
mask_percent0
log_to_consolefalse

If you've run Krea 2 or Z-Image Turbo for more than an afternoon, you know the specific annoyance this node exists for: nudge the seed and the model keeps returning the same composition with slightly different paint. Distilled flow-matching models are fast, but they're also narrow - the sampler lands in the same layout over and over, and breaking out of it feels like wrestling the prompt.

The Enviral Krea2 Seed Variance Enhancer attacks that from a different angle than prompting. Instead of touching the prompt, it adds seeded random noise directly to the CLIP text conditioning embedding after CLIPTextEncode. That makes the sampler's starting text representation genuinely different each seed, which is exactly the nudge these models need to stop repeating themselves. It's aimed at Krea2, Z-Image Turbo, and similar workflows, but nothing stops you using it on any model that takes CONDITIONING.

How it works

It's an adapted fork of ChangeTheConstants' SeedVarianceEnhancer v2.2.0 (MIT-0 licensed), so the core idea is community-tested. Every run, the node picks a percentage of embedding values - randomize_percent - and scales them by strength worth of noise, generated deterministically from the seed you give it.

The Enviral version makes two meaningful changes under the hood. It uses a torch.Generator seeded manually instead of touching PyTorch's global RNG, so it doesn't scramble the state of every other node in your graph. And it guards conditioning entries that carry untagged metadata, which matters when you're chaining conditioning through a bigger graph. Both are the kind of fixes you only appreciate after a random node upstream starts misbehaving.

The inputs that matter

  • conditioning - the output of CLIPTextEncode. Wire this in, take the output to KSampler.
  • randomize_percent - how much of the embedding gets noise. Default 50 is a fine starting point.
  • strength - the noise scale. Default 20; the author suggests starting around the range printed by log_to_console (roughly std/10 to std×10 of your embedding tensor). Fun quirk: add 1,000,000,000 to this value to switch to the upstream v2.1 seed behavior - it's a flag hiding inside a float, so don't be alarmed when the number looks absurd.
  • noise_insert - which sampler steps use the noisy embedding: beginning, ending, all, or disabled. Pair with steps_switchover_percent for the split point.
  • seed - the one to vary for batch diversity.
  • mask_starts_at / mask_percent - protect a chunk of the prompt (say, the first 20% where the subject usually sits) from noise, so variance doesn't wreck your subject.

Output is a single conditioning, straight into KSampler. Nothing else to wire.

Install

This ships in the Enviral Design Node Pack. Easiest is ComfyUI Manager - search "Enviral Design Node Pack" and install. Or:

cd ComfyUI/custom_nodes
git clone https://github.com/EnviralDesign/comfyUI-enviral-design-node-pack

Then restart ComfyUI. No model downloads, no extra Python deps - it runs on ComfyUI's existing PyTorch.

Where people get burned

Set noise_insert to "disabled" and the node becomes a pass-through - handy for A/B testing whether noise is actually helping. If your results get less consistent, that's expected at high strength; it's a variance tool, not a quality tool. Turn on log_to_console and watch the ComfyUI console for the suggested strength range - that's the author's own calibration aid, and it beats guessing. The classic mistake is cranking strength to "more variety, please" and getting chaos; 10–30 with randomize_percent around 50 is the sane band to explore.

CategoryEnviralDesign/conditioning

Inputs (9)

NameTypeDefaultDescription
conditioningCONDITIONING
randomize_percentFLOAT501–100Percentage of embedding values that receive random noise.
strengthFLOAT20.0000-4294967295–4294967295Scale of the random noise. Add 1 billion to use the v2.1 seed behavior.
noise_insertCOMBOWhich generation steps use the noisy text embedding.
steps_switchover_percentFLOAT201–99Percentage of sampler steps before switching between noisy and original embeddings.
seedINT00–18446744073709550000Seed used for embedding-value selection and noise generation.
mask_starts_atCOMBOWhich end of the prompt is protected from noise first.
mask_percentFLOAT00–99Percentage of the prompt protected from noise.
log_to_consoleBOOLEANfalseLog tensor statistics and suggested strength values. Source version 2.2.0.

Outputs (1)

NameTypeDescription
conditioningCONDITIONING