Sonder Selector
A dropdown that hands your graph the label and the number
- selection
- index
Sonder Selector is the smallest node in the Sonder pack and the one you'll reuse constantly once you notice it. You give it a newline-delimited list of labels, it renders as a dropdown, and it outputs the label you picked plus its zero-based index. Two wires out of a menu - that's the whole job, and it's a genuinely useful one because ComfyUI has no built-in "list of choices" primitive.
Think about where that pattern actually helps. You're building a workflow with three character prompts, or four camera-movement LoRAs, or a choice between "soft", "medium", "hard" light settings. Instead of leaving a free-text widget where you retype the value every run (and typo yourself into a different seed), you enumerate the options once in choice_list and flip between them. The selected text feeds your prompt or filename; the index can feed a Sonder Switch or Cluster to route the matching branch - the Selector is the human-facing half of that combo, the Switch is the mechanical half.
How it works
choice_list is a multiline string, one label per line, and blank lines are ignored. choice is the currently selected label. Because the node ships with VALIDATE_INPUTS, it checks that choice actually exists in the list and gives you a clean error instead of silently passing a stale value - a nice touch for a node this small.
Outputs:
selection- the label text you picked.index- its zero-based position in the list ("Option 1" is 0, not 1 - worth remembering when you wire it into a switch).
There's no index input and no way to drive the selection from an upstream node; it's a manual control. If you need programmatic selection, this isn't it.
Install and quirks
It ships with the Sonder pack, so install once: ComfyUI Manager search Sonder Editor, or git clone https://github.com/SonderSaid/ComfyUI-Sonder-Editor.git into custom_nodes, pip install -r requirements.txt, restart.
The one gotcha that trips people: the dropdown only shows the labels you typed, but the default choice value is baked in as "Option 1" - if you delete that from the list the node yells at you until you pick something valid. That's the validation working as intended. And since index is zero-based, don't wire it straight into a 1-based consumer expecting "first option = 1" without accounting for it.
It's not flashy, and it's not the node you search for - but every Sonder workflow I've seen ends up with a couple of these defining the variants you iterate between.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| choice | COMBO | Option 1 | Selected label from choice_list. |
| choice_list | STRING | Option 1 Option 2 | One selectable label per line. Blank lines are ignored. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| selection | STRING | Selected label from the newline-delimited choice list. |
| index | INT | Zero-based index of the selected label. |