join (from data list)
Turn a data list back into one string
- STRING
split breaks a string into a data list. This node is the way back. If you've split a prompt into tags, or a file into lines, and now want them reassembled into one string - with a separator you control - this is the inverse operation, and it's genuinely one of the most-used nodes in this pack.
What it does
join (from data list) takes a data list of strings and concatenates them with a separator between each element. No separator at the start, none at the end - just between items. The inputs:
strings- a data list, i.e. the output of something like the pack'ssplit (to data list)node (required).sep- the separator string, default a single space (required).
Output: one STRING. Feed it ["a", "b", "c"] with sep = ", " and you get "a, b, c".
The data list vs. LIST distinction
The pack is careful about this, and it matters more than you'd think. ComfyUI has a native "data list" where each item flows separately, and the pack also supports a Python LIST passed as one variable. This node is the data list variant - it's marked INPUT_IS_LIST, so you must wire it from a list-producing output. If your strings come as a single LIST variable instead, use the pack's sibling join (from LIST) node. Mixing them up is the classic error, and it shows up as a type mismatch when you try to connect.
Why you'd reach for it
The canonical flow: split a big blob of text into pieces, process or filter the pieces, then join them back with a nicer separator. Tag lists are the poster child - split on commas, clean each tag, rejoin with ", " before feeding a prompt. It also works great with the pack's Data List nodes when you've been accumulating strings and need to flatten them.
Installing
Part of Basic data handling by StableLlama. In ComfyUI Manager search "Basic data handling" → Install → restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/StableLlama/ComfyUI-basic_data_handling
Restart ComfyUI. Zero runtime dependencies - pure stdlib - so nothing extra downloads and nothing conflicts.
Where people get burned
Besides the data-list-vs-LIST mixup, the default separator is a space, which is rarely what you want. If you're rejoining tags, set sep to ", ". And an empty list joined with any separator produces an empty string - not an error, but a silent one, so check upstream if your result mysteriously comes out blank.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| strings | STRING | — | |
| sep | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| STRING | STRING | — |