String List Concat
One Node for Every Prompt Box You Own
- inputs
- STRING
The day comes for every ComfyUI user when you're staring at eight prompt boxes and thinking "I cannot wire a waterfall of concat nodes again." That's the exact moment String List Concat exists for. It takes 2 to 32 string inputs, puts a delimiter you choose between them, and hands you one clean string on the other side.
There's a real demand for this. People post variations like "cleanly concatenate up to 10 or more prompt boxes into a final result" and the honest stock answers are "chain a waterfall of two-input concat nodes" or "learn enough Power Puter to write the join yourself." Both work. Both are annoying when what you actually have is a base prompt, three wildcard-ish additions, and a tag list you want to glue into a single thing before the CLIP text encode. This is the one-graph answer.
How it works
The mechanism is brutally simple, and that's the appeal. The node joins every input it receives with Python's delimiter.join(). No API, no model, no hidden preprocessing - the README credits "tttamaki and GitHub Copilot" and you can tell.
What's mildly interesting is how new it is. There's no NODE_CLASS_MAPPINGS anywhere in the pack. It's written against ComfyUI's newer backend authoring API - from comfy_api.latest import io, an io.ComfyNode subclass, a comfy_entrypoint() extension. That's the modern V3 style core ComfyUI itself is migrating to, and it coexists fine with classic nodes. So if you open the source and find no mapping dicts, that's "new," not "broken."
The autogrow part is the real feature. Slots are templated with a string prefix, minimum 2, maximum 32. Drag a wire out of another text node toward it and a new slot appears rather than you hunting for "add input" in a right-click menu.
Inputs and output
You set two things:
- inputs (autogrow string) - your 2–32 text slots. Slots are multiline, so a pasted caption or tag block goes straight in. They join top to bottom.
- delimiter (string) - what goes between each slot. Default is an empty string.
The single output is a STRING, wired straight into whatever wants text: a CLIP Text Encode, another concat node, a Save Text, an LLM node.
Installing it
ComfyUI Manager is the easy path - search for ComfyUI-StringListConcat and install. Or clone it in the old-school way:
cd ComfyUI/custom_nodes
git clone https://github.com/tttamaki/ComfyUI-StringListConcat.git
Then restart ComfyUI. That's the whole install: no requirements.txt, no model downloads, no token. It's the rare custom node that depends on nothing but ComfyUI itself.
Where people get burned
Honestly, the failure modes are the delimiter's fault, not the pack's. Since it's a plain join(), an empty default delimiter means "red" + "blue" becomes "redblue" with no space. Set the delimiter to ", " or a newline (the field accepts one) unless you actually want it jammed together.
Two more, both predictable once you know it's join(): a slot with a trailing newline will smuggle that newline into your output, and an empty slot yields double delimiters ("foo,,bar" with a comma). If your final prompt suddenly has holes in it, check for an empty box.
One caveat with zero community track record - a quick reddit scan turns up no mentions of this pack at all, and it shows zero search impressions. It's brand new and tiny. For a node this simple that's low risk (MIT, ~50 lines, nothing exotic), but if you're building a workflow hundreds of other people will run, the boring waterfall still travels better. For your own prompt-assembly mess, this is the one I'd reach for.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| inputs | COMFY_AUTOGROW_V3 | — | |
| delimiter | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| STRING | STRING | — |