Signal Switch
The on/off gate that genuinely skips work
- input
- output
Signal Switch is the simplest useful gate in ComfyUI, and the reason people underestimate it is that it's almost too obvious. You feed it any value, you flip a toggle, and either the value passes through or - this is the part that matters - the entire downstream half of your graph stops running. Not "receives a dummy value and churns through anyway." Stops.
That's the difference between this and a hundred other switch nodes. ComfyUI has a built-in mechanism called an ExecutionBlocker: when a node emits one, every node downstream of it is skipped for that run. Signal Switch is a thin wrapper around exactly that. Flip passthrough to False and the output wire is dead; nothing below it executes, which means nothing below it burns VRAM, time, or queue slots.
Why you'd actually reach for it
You're tuning a workflow and you want to A/B an expensive step - a hires fix pass, a face detailer, a second sampler on a WAN video. Without a gate you're either deleting wires and re-adding them, or running both branches and comparing later. With a gate in front of the step, you flip one boolean and the expensive thing simply doesn't run. It's also the natural target for any boolean your logic is already producing: string or number comparisons, Is None checks, boolean AND/OR gates. Wire a condition into the decision and you've got a poor man's conditional pipeline.
One honest caveat about where the gate sits: it blocks below itself, not above. Everything feeding the switch still runs. If you want to skip the expensive work on both sides, put the gate as early as the data path allows.
Inputs and outputs
It's a one-in, one-out node, which is the whole point of calling it a signal switch:
- input - the value to gate. It accepts any type, so you can park it between a loader and a sampler, or between two random nodes that have nothing to do with each other. The tooltip spells it out: "Value to gate. Passed through when passthrough is True, blocked otherwise."
- passthrough - the toggle on the node (default
True).True= the input goes to the output.False= blocked, downstream skipped. - output - the gated value, or a blocked signal.
Installing it
Signal Switch ships in Nifty Nodes for ComfyUI (Stibo/comfyui-nifty-nodes). Easiest is ComfyUI Manager: search for "Nifty Nodes" and install, then restart ComfyUI. Or clone it manually:
cd ComfyUI/custom_nodes
git clone https://github.com/Stibo/comfyui-nifty-nodes
Then restart. One thing to know up front: the whole pack is built on ComfyUI's new v3 API (comfy_api.latest), so it needs a recent ComfyUI. On an older install the pack won't even import - update ComfyUI first. None of these logic nodes need extra pip packages; the pack's requirements (color-matcher, imageio-ffmpeg, dynamicprompts) are for its loader and media nodes.
Common gotchas
If you flip the toggle and nothing changes, check that the data path really does flow through the switch - it's easy to leave a parallel wire from the source node still connected, and ComfyUI will happily use that one. And if your downstream nodes are grayed out and not running, that's not a bug: that's the blocker doing its job. It's also worth remembering that a blocked output isn't None - it's "didn't run," which is subtly different when you have nodes like Is None downstream that expect an actual value.
Search aliases on the node include "gate", "passthrough", "block signal", "enable disable", and "toggle node" - useful if you can never remember its real name.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| input | COMFY_MATCHTYPE_V3 | Value to gate. Passed through when passthrough is True, blocked otherwise. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| output | COMFY_MATCHTYPE_V3 | — |