Custom Combo
A dropdown you write yourself — and an index for your switches
- STRING
- INDEX
Every ComfyUI dropdown has a fixed list of options the node author chose for you. Custom Combo flips that: the options are yours. You type whatever labels you want into the dropdown, and the node hands you back two things - the text you selected and the number of its position in the list. It's a tiny idea with a surprisingly wide footprint, and it's one of those "oh, so that's what that's for" nodes once you see it in action.
It ships with ComfyUI core and arrived in 2026 as part of the new-style logic nodes. It's marked experimental, which mostly means the UI around it is still settling - not that it falls over.
How it works
Under the hood it's almost nothing: you define the combo's options in the node's dropdown widget, pick one, and it passes your choice through. The backend doesn't validate against a fixed list because the list is user-defined - that's the whole point. What you get on the other side is the selected string and its index.
That index is the underrated half. People ask the community all the time for "a node that outputs an integer based on a dropdown selection" - so they can feed a labeled choice into a Switch node instead of remembering that 0 means photoreal and 1 means sketch. Custom Combo is exactly that: pick "Photoreal" and you get 0 out the index port.
Inputs and outputs
One input, choice - the combo widget where you type your options, one per line. Two outputs:
- STRING - the text of the option you selected.
- INDEX - the zero-based position of that option in your list. First entry is 0, second is 1, and so on.
Where people get burned
The order of your options is the contract. Since INDEX is zero-based and positional, if you add an option in the middle, every downstream index shifts. A switch wired to INDEX = 1 silently starts selecting a different option. Put your options in a stable order and don't reorder them casually.
Second: it's a string output, not magic. If the thing downstream wants a number, feed INDEX to it; if it wants text, feed STRING. Sounds obvious, but the most common failure is wiring the string into a numeric input and wondering why everything is 0.
Third: don't use it for things a fixed dropdown does better. If your options never change, a normal node with baked-in choices is clearer and self-documents the workflow. Custom Combo earns its keep when the options are genuinely yours - style presets, subject names, prompt fragments you want to toggle between - or when a workflow gets shared and the person using it wants to swap labels without editing node internals.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| choice | COMBO | 0 options: |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| STRING | STRING | — |
| INDEX | INT | — |