SamplerEulerCFG++
The Euler sampler built for the CFG-1 era
- SAMPLER
The modern sampler landscape has a funny inversion in it: the safest, most-used value for CFG is now 1, and most of the standard samplers aren't actually happy there. CFG++ was built specifically for the sub-1 regime, and SamplerEulerCFG++ is the way ComfyUI exposes its Euler variant as a SAMPLER node you can drop into any advanced sampling stack.
Why CFG++ exists. Normal classifier-free guidance amplifies the difference between the positive and unconditional predictions, and the CFG++ paper (Chung et al., arXiv 2406.08070) argues that pushing this hard pushes samples off the natural image manifold - which is why high CFG looks burned and oversaturated. CFG++ reframes guidance as a manifold-constrained operation and, crucially, operates at guidance scales below 1. In practice, ComfyUI ships a family of eight _cfg_pp samplers, and this node wraps the Euler one. The knowledge base is explicit about where they belong: they're the recommendation for v-prediction models (NoobAI vpred at CFG 1.5–2.0 with the Normal scheduler) and for the guidance-distilled, CFG-1 models that dominate 2026. The _pp samplers also force the unconditional pass to run even at CFG 1 - the pass most samplers skip at exactly 1 - which is why they're the documented exception that can make negative-prompt-style steering work at low CFG.
Inputs. Just one:
- version - a combo with
regularandalternative.regulargives you the standardeuler_cfg_ppsampler.alternativeuses a slightly different inline implementation that captures the unconditional prediction and feeds it back into the Euler step. If one gives you weird results with the rest of your graph (other post-CFG patchers can interact with the CFG++ hook), try the other.
Output is a SAMPLER, which means it goes into SamplerCustomAdvanced's sampler input (paired with a scheduler and a guider), or the sampler slot on any advanced sampler node. It doesn't take a model, prompt, or CFG - those live on the other inputs of the node you're wiring it into.
When to reach for it. Two clear cases. First: you're on a v-prediction checkpoint that wants CFG++ - plug this in with CFG around 1.5–2.0 and the Normal scheduler. Second: you're on a distilled model at CFG 1 and you want to reclaim some prompt adherence without the full double-pass cost of real CFG - the _pp family exists exactly for that. The community's standing warning, from the KB's CFG essay, is that people dismiss these samplers after trying them at a normal CFG 7 on an SDXL model, where they're simply not meant to work. Run them at CFG 1–1.5 or you're not testing the thing they're good at.
Gotchas. A real (even empty) negative conditioning often matters more with _pp samplers than with the default - the unconditional pass is actually being used now, so leaving the negative slot zeroed can behave differently than you're used to. And the CFG box and these samplers interact in a non-obvious way: the paper's lambda in (0,1) is a rescaled parameterization, not the same number as the CFG slider, so don't try to map paper values one-to-one onto the box. Finally, regular and alternative are close but not identical - if you're hunting a subtle difference, A/B them on a fixed seed.
It's a quiet node with zero search impressions, but it's quietly load-bearing for a chunk of 2026 workflows. If you're building a SamplerCustomAdvanced stack for a CFG-1 model, this is the Euler you want.
Ships with ComfyUI core; search "SamplerEulerCFG++" to add it. No install.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| version | COMBO | 2 options: regular, alternative |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| SAMPLER | SAMPLER | — |