π§ KSampler Variations with Noise Injection
KSampler Variations with Noise Injection (ComfyUI Essentials)
- model
- latent_image
- main_seed
- positive
- negative
- variation_seed
- LATENT
You found a generation you almost love and you want near-misses of it - same composition, small tweaks - not a completely different image from a new seed. That's exactly what this node is for. It's a KSampler that injects a controlled second dose of noise so you can dial how far each result drifts from your base image, from barely-there variation to a meaningful reroll.
Why you'd reach for it
Normal seed-hopping is all-or-nothing: change the seed and you get an unrelated image. Noise injection gives you the in-between. Keep the main seed fixed, add a pinch of a second noise, and you get a family of images that share the base's structure but vary in the details - great for exploring around a good result, and a known trick for breaking Flux out of its "same face" rut (the community's Fluxmaxxing fixes explicitly include "use noise injection"). It's the sampler you reach for when you want variety with a leash on it.
How it works
There are two seeds. main_seed produces the base image the way any sampler would. variation_seed generates a second noise pattern that gets mixed in at variation_strength - a 0-to-1 dial for how much that second noise perturbs the result. Low strength (the default is 0.17) nudges details while keeping the composition; crank it up and you drift further from the base until, near 1.0, you've essentially rerolled. So you hold main_seed steady and sweep variation_seed / variation_strength to explore the neighborhood of a generation.
Inputs and outputs that matter
It's a full KSampler, so the familiar controls are here: model, positive / negative conditioning, latent_image, steps, cfg, sampler_name, scheduler, and denoise. The three that make this node special are main_seed (your base), variation_seed (the injected noise's seed), and variation_strength (how hard it's mixed in). The single output is LATENT - decode it as usual. The workflow is: lock main_seed on an image you like, then iterate variation_seed at a low strength.
Installing it
Part of ComfyUI Essentials by cubiq (Matteo Spinelli, the IPAdapter node author). Via ComfyUI Manager: search ComfyUI Essentials, install, restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/cubiq/ComfyUI_essentials
then restart. It's π§ KSampler Variations with Noise Injection under essentials/sampling, class KSamplerVariationsWithNoise+. Maintenance-only pack as of April 2025.
Common issues
The main thing to internalize: variation_strength is sensitive. The 0.17 default is deliberately low because a little injected noise goes a long way - push it to 0.5+ and you've thrown away the resemblance you were trying to keep. If your "variations" look unrelated, turn strength down, not up. Also mind your cfg and sampler choice for the model you're on - the default cfg 8 is an SD 1.5/SDXL number and is wrong for guidance-distilled models like Flux or Z-Image Turbo, which want cfg ~1. Fix the base sampler settings first; the variation knobs only shape what a correctly-configured sampler produces.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | β | |
| latent_image | LATENT | β | |
| main_seed | INT:seed | 00β18446744073709550000 | β |
| steps | INT | 201β10000 | β |
| cfg | FLOAT | 8.00β100 | β |
| sampler_name | COMBO | 44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38 | |
| scheduler | COMBO | 9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3 | |
| positive | CONDITIONING | β | |
| negative | CONDITIONING | β | |
| variation_strength | FLOAT | 0.170β1 | β |
| variation_seed | INT:seed | 123450β18446744073709550000 | β |
| denoise | FLOAT | 1.000β1 | β |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| LATENT | LATENT | β |