CRZ Execute Switch
A 2-way router that only runs the branch you picked
- input
- true
- false
CRZ Execute Switch is the CRZ pack's answer to the "run one of these two pipelines" problem, and it's better than you'd expect from a dashboard pack. It takes one input, a boolean, and two outputs - true and false - and sends your input out the matching side. But the clever part is in the name: execute switch. The branch you don't pick doesn't just not receive data, it never runs at all.
This is the node people link when someone asks how to build a conditional pipeline in ComfyUI - it showed up in a workflow thread about loops as the go-to for branching execution, and in the pack's launch thread the toggle-into-switch pattern got called "goated." It's from ComfyUI-CRZnodes, CoreyCorza's dashboard-node pack.
How it works
The mechanism is the same ExecutionBlocker trick as the Execute Block, applied to routing. When the boolean is true, the node returns your input on the true output and an ExecutionBlocker on the false output - so everything hanging off the false side is skipped by the executor. When the boolean is false, exactly the reverse. The result is that a heavy unused branch (a second sampler, an upscaler, a whole detailer chain) costs you nothing when it's not selected.
Contrast that with the plain CRZ Switch, which only chooses data - with a data switch, everything on both branches still computes, because ComfyUI has to know the values before it picks. That's why Execute Switch exists: if your two options are expensive, this is the one that saves you the queue time.
Inputs and outputs
input(input,*) - the data to route. Since it only flows to the active side, you can route images, latents, conditioning, or just use it as a pure execution router.bool(input, BOOLEAN, defaultfalse) - the routing decision. Wire it from a CRZ Boolean Toggle for a manual switch, or a CRZ Compare for automatic branching.trueandfalse(outputs,*) - the two routes. Per the README, first output is True, second is False.
Two inputs, two outputs. The boolean decides which output your input appears on.
The workflow you'll actually build
The classic setup: a CRZ Float Slider feeds a CRZ Compare with >=, the compare's BOOLEAN feeds this node, and two different processing chains hang off the true and false outputs. When the slider crosses your threshold, the graph silently switches from "quick pass" to "full quality pass" - and the loser never burns a single GPU second. Hook the compare's output through a Boolean Toggle first if you want the final say to stay in your hands instead of the slider's.
Installing it
Standard pack install: ComfyUI Manager → search ComfyUI-CRZnodes → install → restart. No requirements, no models.
cd ComfyUI/custom_nodes
git clone https://github.com/CoreyCorza/ComfyUI-CRZnodes.git
Gotchas
Two things to keep in mind. First, the default boolean is false, so a freshly placed Execute Switch routes to the false output until you flip it - if your true-branch work is mysteriously dead, that's why. Second, because the inactive branch never executes, nodes on it don't run their side effects either: no image saves, no progress, no errors from that side. If something on the inactive branch "should" have failed and didn't, that's the feature working as intended. And if you need both sides to execute and just want to pick data, use the plain CRZ Switch instead - that's the one that evaluates everything.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| input | * | — | |
| bool | BOOLEAN | false | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| true | * | — |
| false | * | — |