Uncond Zero
Sharp images without ever running the negative pass
- model
- MODEL
Classifier-free guidance - the thing "CFG scale" controls - normally costs you a second forward pass every single step. The UNet runs once on your prompt, once on the negative (or an empty one), and the sampler extrapolates away from the unconditioned result. That's the actual reason CFG doubles your render time. Uncond Zero patches the model so you can get a comparable quality boost while running that negative pass zero times - hence the name. The author's own explanation on the launch thread: "it goes twice as fast because in ComfyUI it disables generating the negative predictions, cutting the computing needs in half."
If that sounds like what guidance-distilled models (Z-Image Turbo, Flux Klein) do at CFG 1 by baking the correction into training weights - it's the same idea, applied differently. Those models learn it during training. Uncond Zero does it at runtime as a model patch, on ordinary checkpoints - SD 1.5, SDXL, and per the author it should work on PixArt Sigma too. You don't need a distilled model to get some of that free lunch.
How it works
Connect it right after your model loader, same as any model-patch node. The README lays out two behavior modes:
- CFG at 1, or no active negative (you can zero one out with
ConditioningSetTimestepRange): does the actual Uncond Zero trick - no negative prediction, output still gets sharpened. - CFG above 1 with a real negative running: falls back to acting like the author's other node, AutomaticCFG, instead.
So the speedup isn't automatic just because the node is in your graph - you get it specifically in the CFG-1/no-negative regime.
The inputs and outputs that matter
scale(default 0.75, range 0–10) - the CFG-scale analogue for this mode. It's tuned for the no-negative regime, so don't treat it as a 1:1 swap for your old CFG number.pre_fix(default true) - reuses the previous step to inform the current one. Per the README this is "the main trick to get a better quality / sharpness," so leave it on unless you're specifically comparing against it off.pre_scale(default 1, range 0–2) - how strong that effect is. Author's own tuning advice: 1 for SDE/ancestral samplers, 1.5 if you're on something like dpmpp_2m.
Output is a MODEL - wire it straight into your KSampler like you would any patched model.
How to install it
Via ComfyUI Manager: search Uncond-Zero-for-ComfyUI (or just "Uncond Zero"), install, restart. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/Extraltodeus/Uncond-Zero-for-ComfyUI
then restart. No model downloads, no heavy dependencies - it's pure sampling-function patch logic, so this is about as low-friction an install as custom nodes get.
Common issues & troubleshooting
Don't stack it with AutomaticCFG. Same author, same trick, and they patch the same underlying function. Confirmed directly by Extraltodeus on the launch thread: "It is not to be used with automatic CFG as it patches the same function but integrates a similar logic." Pick one.
Not seeing the speedup? If CFG is above 1 and you still have a live negative prompt wired in, you're in the AutomaticCFG-like fallback branch, not the no-negative-pass mode. Drop CFG to 1, or neutralize the negative with ConditioningSetTimestepRange, if you actually want the free half-step.
Wrong pre_scale for your sampler gives mushy or over-sharpened results - match it to the sampler family per the recommendation above rather than leaving the default blind.
A lazy one-word prompt reads worse here than with a real negative prediction. The author is upfront about this in the README - without CFG doing the heavy lifting through a negative, the model leans more on what you actually wrote. Two or three descriptive words is usually the difference between "fine" and "good" output.
If you want to keep a negative-prompt feel while running in this mode, pair it with this pack's other two conditioning nodes - see the Conditioning combine positive and negative article for how that works.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| scale | FLOAT | 0.750–10 | — |
| pre_fix | BOOLEAN | true | — |
| pre_scale | FLOAT | 1.00–2 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | — |