String List to String
Fold a list of strings into one, joined by whatever you want
- STRING
Some nodes hand you back a list of strings - one per detected region, one per batch item, one per wildcard expansion - and then the next node you want to use only accepts a single string. String List to String collapses that list into one string, gluing the pieces together with a separator you choose. It's a tiny plumbing node, the kind you don't think about until a workflow refuses to connect and you realize you've got a list where a scalar is expected.
Nothing clever going on. It's the ComfyUI equivalent of a join.
How it works
It takes an incoming string list and concatenates every item into a single string, inserting your join_with value between them. Feed it ["a red car", "on a wet street"] with a space as the separator and you get "a red car on a wet street". The default separator is a newline, so out of the box each list item lands on its own line - which is exactly what you want when you're assembling something like a multi-line prompt or a labels block.
The inputs and outputs that matter
string_list(STRING) - the incoming list. The node is only meaningful because this arrives as multiple strings rather than one.join_with(default\n) - what goes between the items. Newline by default. Set it to a space to make a flowing sentence, a comma for a tag list, or leave it empty to concatenate with nothing between.
The single output is a STRING - the joined result, ready for any node that wants plain text.
How to install it
ComfyUI Manager: search ComfyUI Impact Pack, Install, restart.
Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/ltdrdata/ComfyUI-Impact-Pack
cd ComfyUI-Impact-Pack
pip install -r requirements.txt
Run the pip in ComfyUI's Python environment and restart. No models, no dependencies beyond the pack itself.
Common issues & troubleshooting
The \n default is a literal, and it does what it says. With the default separator your items come out stacked on separate lines. If you wanted them on one line, change join_with to a space or a comma. This surprises people who expected a plain concatenation.
Everything ran through and you got just the first string back. That usually means the upstream output wasn't actually a list - if a node emits a single string, there's nothing to join and this node passes it through unchanged. Check that the source really is producing multiple items.
You wanted the opposite. If you're trying to split one string into several, this isn't your node - this only goes list → single. Look for a string-split or selector node (Impact Pack's own String Selector picks a line out of a multi-line string, which is a different but related job).
Trailing or missing separators. The separator goes between items, not after the last one, so a two-item join has exactly one separator. If you need a leading or trailing delimiter, bake it into the item text or add it downstream - this node won't.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| join_with | STRING | \n | — |
| string_list | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| STRING | STRING | — |