Not
Flip any value into its opposite
- value
- BOOLEAN
Sometimes the cleanest fix in a workflow is just to reverse a condition. Your upscale toggle is "on" but the whole graph is wired as if it means "skip upscale" - and re-wiring is painful. Not is the one-node answer: feed it anything, get back its opposite as a BOOLEAN. True becomes false, false becomes true, and you move on.
It's the smallest member of ComfyUI's core logic family, and it earns its place in exactly two spots: flipping a toggle's meaning before it hits a switch, and inverting the result of another logic node. That's it. It does one thing, and it does it without ceremony.
How it works
Not computes Python's not value and outputs the result. The input is wildcard-typed (*), so it accepts any type - a boolean, a string, a number, anything you can drag a wire from. And like its siblings And and Or, it follows Python's truthiness rules rather than pretending everything is a boolean. So:
not True→Falsenot False→Truenot ""→True(empty string is falsy)not "hello"→Falsenot 0→Truenot None→True
That last row is the one to remember. Not on an empty or missing value returns True, which is exactly what you want when you're testing "is this input missing?" - the node doubles as an "is empty" check without you having to think about it.
The inputs and outputs that matter
- value (any type) - whatever you want inverted. Usually a boolean from a toggle, a comparison, or another logic node, but anything works.
- BOOLEAN output - the inverted truthiness. Wire it into an If/Else Switch's
switchinput to flip which branch runs, or into an And/Or node as part of a bigger condition.
How you get it
Ships with ComfyUI core as part of the utilities/logic category, added in early 2026. If you don't see it in the node menu, update ComfyUI - it's too new to be in older installs.
Common issues
"It inverted my string to True and I didn't want that." You're hitting truthiness. If your input is a non-empty string - including the string "false" - Not returns False because the string is truthy. These nodes are blunt instruments: they invert truthiness, they don't parse text. If you're coming from a real programming language's strict type system, that's the adjustment.
"Why does an empty result come out True?" Because it should. This is the "is empty" behavior above, and it's usually a feature, not a bug - it means Not plays well with optional inputs that might arrive as None. If it surprises you, now you know why.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| value | * | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| BOOLEAN | BOOLEAN | — |