Bypass Switch By Title
A dropdown that swaps between workflow configurations
- bypass
- index
Bypass By Title gives you an on/off for a set of nodes. Bypass Switch By Title is the multi-position version: a dropdown where each option is its own configuration, and picking one bypasses every other option's nodes. If you've ever wanted to switch a workflow between "fast draft," "full quality," and "video pass" from a single dropdown without deleting anything, this is the node.
How it works
The concept is inverted from what you might expect, so read this twice. Each option has a label (what appears in the dropdown) and a nodes list - and the nodes list contains the titles to bypass when that option is NOT active. The active option is the one whose nodes stay live; everything else gets bypassed. That's how a single dropdown cleanly enforces "exactly one configuration at a time."
Up to 16 options, each with its own labelN and nodesN inputs. The controls:
- bypass - the combo dropdown showing the active option.
- count - how many options to show (1–16). You don't have to fill all 16.
- selected - the 1-based index of the active option, updated automatically when you change the dropdown. Handy if you want to read or drive the selection numerically.
- search_from_root / enforce - same semantics as Bypass By Title: search the root graph from inside subgraphs, and actively prevent other nodes from overriding the state.
Title matching is case-insensitive and supports partial titles, so detailer matches a node titled "face detailer v2". It outputs bypass as a string (the active option's label) and index as an int.
Why you'd reach for it
The workflow that has three modes - draft, standard, upscale - each wiring different samplers, detailers, and post-processing. Instead of a pile of switches and a table of what's on when, this is one dropdown that defines the modes in place: each option's nodes list is the stuff to turn off when you're in another mode. It's a group-muter with presets, and it reads far better than a boolean per stage.
Install
Part of Nifty Nodes for ComfyUI. Manager: search "Nifty Nodes for ComfyUI" → Install → restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/Stibo/comfyui-nifty-nodes
Restart ComfyUI. No models, no special dependencies. Like the rest of Utils, it's experimental, and the pack is young (v2.1.0, mid-2026) - update before loading workflows that use it.
Gotchas
The inverted bypass semantics will bite you exactly once. It's natural to write the nodes you want active into an option - wrong; you write the nodes to disable. Double-check by toggling the dropdown and watching which sections grey out. Second, partial title matching is powerful and dangerous - a short title like img matches everything containing it. And remember bypass passes inputs through: bypassed nodes don't disappear, downstream nodes still run on passthrough values.
Inputs (37)
| Name | Type | Default | Description |
|---|---|---|---|
| bypass | COMBO | option 1 | The currently active option. All other options' nodes will be bypassed. |
| label1 | STRING | option 1 | Display label for option 1. |
| nodes1 | STRING | Node titles to bypass when option 1 is NOT active, one per line. | |
| label2 | STRING | option 2 | Display label for option 2. |
| nodes2 | STRING | Node titles to bypass when option 2 is NOT active, one per line. | |
| label3 | STRING | option 3 | Display label for option 3. |
| nodes3 | STRING | Node titles to bypass when option 3 is NOT active, one per line. | |
| label4 | STRING | option 4 | Display label for option 4. |
| nodes4 | STRING | Node titles to bypass when option 4 is NOT active, one per line. | |
| label5 | STRING | option 5 | Display label for option 5. |
| nodes5 | STRING | Node titles to bypass when option 5 is NOT active, one per line. | |
| label6 | STRING | option 6 | Display label for option 6. |
| nodes6 | STRING | Node titles to bypass when option 6 is NOT active, one per line. | |
| label7 | STRING | option 7 | Display label for option 7. |
| nodes7 | STRING | Node titles to bypass when option 7 is NOT active, one per line. | |
| label8 | STRING | option 8 | Display label for option 8. |
| nodes8 | STRING | Node titles to bypass when option 8 is NOT active, one per line. | |
| label9 | STRING | option 9 | Display label for option 9. |
| nodes9 | STRING | Node titles to bypass when option 9 is NOT active, one per line. | |
| label10 | STRING | option 10 | Display label for option 10. |
| nodes10 | STRING | Node titles to bypass when option 10 is NOT active, one per line. | |
| label11 | STRING | option 11 | Display label for option 11. |
| nodes11 | STRING | Node titles to bypass when option 11 is NOT active, one per line. | |
| label12 | STRING | option 12 | Display label for option 12. |
| nodes12 | STRING | Node titles to bypass when option 12 is NOT active, one per line. | |
| label13 | STRING | option 13 | Display label for option 13. |
| nodes13 | STRING | Node titles to bypass when option 13 is NOT active, one per line. | |
| label14 | STRING | option 14 | Display label for option 14. |
| nodes14 | STRING | Node titles to bypass when option 14 is NOT active, one per line. | |
| label15 | STRING | option 15 | Display label for option 15. |
| nodes15 | STRING | Node titles to bypass when option 15 is NOT active, one per line. | |
| label16 | STRING | option 16 | Display label for option 16. |
| nodes16 | STRING | Node titles to bypass when option 16 is NOT active, one per line. | |
| count | INT | 11–16 | Number of options to show (1–16). |
| search_from_root | BOOLEAN | true | When True, searches for nodes in the root graph even when used inside a subgraph. |
| enforce | BOOLEAN | true | When True, the bypass state is actively enforced and cannot be overridden by other nodes. |
| selected | INT | 11–16 | Index of the currently active option (1-based). Updated automatically when bypass combo changes. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| bypass | STRING | — |
| index | INT | — |