SamplerCustom
The sampler that sits between 'just click it' and 'build it from parts'
- model
- positive
- negative
- sampler
- sigmas
- latent_image
- output
- denoised_output
Somewhere between KSampler - the all-in-one "model, prompt, settings, go" node - and SamplerCustomAdvanced - where you assemble noise, guider, sampler, and sigmas from four separate plugs - sits SamplerCustom. It's the middle child, and honestly it's the one I'd hand a beginner who wants to understand what the parts are without drowning in them.
It takes a sampler and sigmas as explicit inputs, which KSampler hides behind dropdowns. But it still handles noise, CFG, and conditioning itself, which SamplerCustomAdvanced makes you build by hand. In other words: it exposes the two knobs people actually swap around (sampler + schedule) while keeping the rest of the plumbing internal.
How it works
Internally it does what KSampler does, just with parts handed in as objects instead of chosen from a menu. It builds the noise from your noise_seed (or skips noise if add_noise is off), runs the classic CFG formula against your positive/negative conditioning at the given cfg, and walks the sigmas schedule with the given sampler. The output is two latents, not one:
output- the denoised result, the thing you'd normally decode to an image.denoised_output- the model's final clean prediction (the x0 estimate at the last step), which is a genuinely useful artifact for intermediate steps, previews, and some hybrid workflows.
The inputs that matter
model,positive,negative,latent_image- the usual suspects.add_noise(BOOLEAN, default true) - leave on for text-to-image; turn off and you're doing img2img-style sampling from an already-noised or structured latent.noise_seed- the seed, with the usual randomize/increment controls.cfg(FLOAT, default 8.0) - note the SD-1.5-era default. Flow-matching and distilled models want far lower (often 1).sampler(SAMPLER) andsigmas(SIGMAS) - the parts this node exists to expose. Feed them from SamplerSelect / a scheduler.
Where people get burned
- The cfg default. 8.0 is a relic. On an SD 1.5/SDXL checkpoint it's a fine starting point; on Flux or anything distilled it will oversaturate. Change it, don't trust it.
denoised_outputvsoutput. They look similar and are easy to wire into the wrong place.outputis the final latent;denoised_outputis a prediction artifact. If your image looks subtly "off," check which one you decoded.- Double noise, again.
add_noiseon plus an upstream AddNoise node = noising twice. Pick one place to add noise.
It ships with core, no install. If you're moving up from KSampler to understand the sampler/sigmas split but aren't ready for the full custom-sampler graph, this is the right next step - and for most workflows, honestly, it's a perfectly good final step.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| add_noise | BOOLEAN | true | — |
| noise_seed | INT | 00–18446744073709550000 | — |
| cfg | FLOAT | 8.00–100 | — |
| positive | CONDITIONING | — | |
| negative | CONDITIONING | — | |
| sampler | SAMPLER | — | |
| sigmas | SIGMAS | — | |
| latent_image | LATENT | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| output | LATENT | — |
| denoised_output | LATENT | — |