ExtendStringList
Merging Prompt Lists Without Merging Your Brains
- STRING
ExtendStringList concatenates several STRING lists into one big list, in order, nothing else. It's part of bmad4ever's list toolkit, and for text it's the difference between one batch of prompts and a whole prompt matrix assembled from reusable chunks.
Why you'd reach for it
Text is where lists earn their keep. You'll have a list of subjects from one node, a list of styles from another, and you want a combined pool to sweep - or you want to build a prompt list in pieces so each branch is easy to toggle on and off. ExtendStringList is the merge valve.
The workflow that keeps coming back: each style variation is its own small list node you can mute when you don't want it, and ExtendStringList stitches them into one feed for a CLIP-encode-each-prompt batch. Muting one branch shrinks the batch instead of making you rebuild a giant list. That's real quality-of-life, not a micro-optimization.
How it works
Same pattern as the whole Extend*List family. The inputs_len widget (default 2, max 32) decides how many string-list inputs exist, and - the README's ❔ warning - you must right-click the node and choose "update Inputs" after changing it, or the new sockets never appear. The node then extend()s each input list onto the result, so order follows the inputs top-to-bottom.
Each input socket wants a list of strings. If your other node hands you a plain string, run it through the pack's ToStringList node to wrap it into a one-element list before it hits this node.
Install
One install covers every node in this pack:
cd ComfyUI/custom_nodes
git clone https://github.com/bmad4ever/comfyui_bmad_nodes
then restart ComfyUI. Or use ComfyUI Manager and search "comfyui_bmad_nodes". The pack's requirements (opencv-python, scikit-image, gray2color, simpleeval) install alongside it; this particular node doesn't need any of them, but they're required by the pack's computer-vision half.
Common issues
- Sockets missing after changing
inputs_len. Right-click → "update Inputs". Universal first-stumble with this family. - Feeding single strings in. Wrap them with ToStringList first.
- Unwanted empty elements. A list input you left unwired can behave inconsistently; keep all slots fed or shrink
inputs_len.
If you're building prompt-sweep workflows with batch CLIP encoding, this is the node that keeps the pieces separate so you can reason about them.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| inputs_len | INT | 20–32 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| STRING | STRING | — |