CSV Multi DropDown
One CSV, a row of dropdowns, zero text-node spaghetti
- combined_selections
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
If you've ever built a "variations" workflow - same scene, different character, different lighting, different lens - you know the pain of trying to choose between options inside ComfyUI. The CSV Multi DropDown node attacks that the way a spreadsheet person would: you hand it plain text, it renders a dropdown per line, and each dropdown's choice comes out as its own output. Feed the combined output into your prompt and you've got a batch-variation control panel without a single extra text node.
How it works
The input csv_text defines your dropdowns, one per line, and the format is refreshingly loose:
color,"green,blue,yellow"
camera,wide,medium,closeup
lighting,studio,neon,dramatic
Each line's first item is the dropdown's name, everything after the comma is an option. Both color,"green,blue,yellow" (quoted) and color,green,blue,yellow (bare) parse fine. Two behaviors worth knowing:
- An option literally named
randommakes that dropdown roll a random choice from its list on every run. - The remove_duplicates toggle strips duplicate entries from each dropdown when on.
The dropdowns themselves are rendered by the pack's web UI (the node registers an API handler to push your selections back into the node). The results come out of the right side: a combined_selections output that joins everything into one comma-separated string - ready to drop straight into a prompt - plus individual outputs named 1 through 30, one per dropdown. Wire the combined output into your positive prompt and you have a working prompt-variation system.
Why you'd actually use it
This shines when your workflow is "same render, many quick permutations." Instead of editing prompt text between runs, you set each dropdown once and the choices ride along. It also plays nicely with batch loops - change one dropdown between queue entries and watch the combined output change. The per-dropdown numbered outputs matter if you want individual options for different inputs (a color dropdown feeding one text input, a style dropdown feeding another), rather than one joined string.
Where it's less useful: it's not a random-prompt engine. The random option is per-dropdown and crude compared to a wildcard processor, and there's no seed control. For heavy randomization, pair it with the pack's Wildcards Processor instead.
Install
Same as the whole pack - ComfyUI Manager → search "Dados Nodes", or:
cd ComfyUI/custom_nodes
git clone https://github.com/dadoirie/ComfyUI_Dados_Nodes.git
cd ComfyUI_Dados_Nodes
pip install -r requirements.txt
then restart ComfyUI. No extra downloads for this node.
Common issues
The usual failure is malformed CSV - a line with only one item, or a stray quote, and that dropdown silently stops appearing. The tooltip's example is your friend; keep every line to name,option,option. If the dropdowns don't render at all, you're almost certainly running an older ComfyUI: this pack uses the newer extension API (ComfyExtension + comfy_api.latest), so keep ComfyUI updated. And if a random dropdown ever comes back empty, check that the line actually has entries after the name - a random pick from an empty list returns empty, and that's the node telling you the input is wrong.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| csv_text | STRING | Each line defines a dropdown. First item is the ID, rest are options. Use "random" to select a random option. color,"green,blue,yellow" & color,green,blue,yellow (both formats supported) | |
| remove_duplicates | BOOLEAN | false | Remove duplicate entries in dropdowns |
Outputs (31)
| Name | Type | Description |
|---|---|---|
| combined_selections | STRING | — |
| 1 | STRING | — |
| 2 | STRING | — |
| 3 | STRING | — |
| 4 | STRING | — |
| 5 | STRING | — |
| 6 | STRING | — |
| 7 | STRING | — |
| 8 | STRING | — |
| 9 | STRING | — |
| 10 | STRING | — |
| 11 | STRING | — |
| 12 | STRING | — |
| 13 | STRING | — |
| 14 | STRING | — |
| 15 | STRING | — |
| 16 | STRING | — |
| 17 | STRING | — |
| 18 | STRING | — |
| 19 | STRING | — |
| 20 | STRING | — |
| 21 | STRING | — |
| 22 | STRING | — |
| 23 | STRING | — |
| 24 | STRING | — |
| 25 | STRING | — |
| 26 | STRING | — |
| 27 | STRING | — |
| 28 | STRING | — |
| 29 | STRING | — |
| 30 | STRING | — |