Nodes/Sage Utils/Zero Conditioning
ComfyUI Node

Zero Conditioning

A true-zero negative, without typing an empty string

By arcum42·Created 2 years ago·Updated 24 days ago· 32
Zero Conditioning
  • clip
  • conditioning

A CLIP Text Encode node with an empty string typed into it isn't actually the same thing as "no conditioning" - CLIP still runs that empty sequence through and produces some embedding, it's just the embedding for "nothing," which isn't literally a zero tensor. On some architectures that distinction barely matters; on others (flow-matching and distilled models especially) it's the difference between a negative that quietly does something and one that's genuinely inert. This node skips the CLIP encoding step entirely and just returns a conditioning tensor that's actually all zeros.

You've probably already seen this behavior without a dedicated node for it: Sage_DualCLIPTextEncodeLumina2 automatically zeros any pos or neg field you leave disconnected. This node is that same idea, pulled out into its own standalone piece so you can wire true-zero conditioning into anything in your graph, not just Sage's own text-encode nodes.

Why it still needs a CLIP input

It doesn't encode any text, but it still needs to know clip - the CLIP model whose output shape the zeroed tensor has to match. A conditioning tensor from a Flux CLIP and one from an SDXL CLIP aren't interchangeable shapes, so the node needs the model reference to build a correctly-shaped zero, not because it's doing any actual encoding.

Output is a single conditioning - plug it in anywhere you'd normally plug a negative conditioning, most obviously as the negative input on Sage_KSampler or its variants when you don't want a written-out negative prompt at all.

Installing it

Through ComfyUI Manager: search Sage Utils, install, restart. Manually:

cd ComfyUI/custom_nodes
git clone https://github.com/arcum42/ComfyUI_SageUtils
cd ComfyUI_SageUtils
pip install -r requirements.txt

Restart afterward. This is one of the lightest nodes in the pack - no models to download, no extra dependencies beyond the pack's own requirements.txt.

Common issues

The main thing to get right is when to reach for this versus a real negative prompt. On models where CFG is doing real work and negative prompting genuinely steers output away from unwanted content, swapping in zero conditioning removes that steering entirely - you're not getting a "neutral" negative, you're getting no negative influence at all. That's exactly what you want on models where a negative prompt isn't the expected workflow (some distilled/flow-matching setups run with CFG effectively off, where a written negative prompt does nothing useful anyway), and exactly what you don't want if you're still relying on classic negative-prompt behavior to keep bad anatomy or unwanted elements out of your generations. If your negative prompt suddenly seems to stop working after you swap in this node somewhere upstream, that's not a bug - that's the node doing exactly what it says.

CategorySage Utils/clip/conditioning

Inputs (1)

NameTypeDefaultDescription
clipCLIPThe CLIP model used for encoding.

Outputs (1)

NameTypeDescription
conditioningCONDITIONINGA conditioning containing all zeros.