Strings Joiner [darkilNodes]
Join several text inputs into one string — and actually understand the joiner
- joined_text
- ❓help
Every text-heavy ComfyUI workflow eventually needs "take these three strings and glue them together with commas." The stock way is a chain of text-concat nodes that gets unreadable at six inputs. This node does it in one place: a Strings Joiner that takes a dynamic number of text inputs and joins them with a separator you control - including real newlines and tabs, not just commas.
How it works
The node exposes a single visible input, joiner (STRING) - the separator. The actual texts come from dynamic input slots that the node grows as you connect them, so you can join two strings or ten without swapping node variants. Before joining, it drops empty and None values, which is the behavior that saves you from "a,,b" accidents when a branch produces nothing.
The joiner field is where the subtlety lives: it supports escape sequences. Type \n and you get an actual newline in the output; \t becomes a tab; \\, quotes and apostrophes decode too. So:
joiner = ", "→foo, bar, bazjoiner = \n→ three separate linesjoiner = ""→foobarbaz
That's the full set of things you need to understand: an empty joiner concatenates, a comma-joiner makes CSV-ish text, and a newline-joiner builds lists.
Inputs and outputs
joiner(STRING) - the separator, with\n/\tescape support.- Dynamic text inputs - whatever you connect; empty ones are filtered.
joined_text(STRING) - the result.❓help(STRING) - the pack's signature live documentation socket.
There's one small escape gotcha to internalize: the node processes escape sequences at join time, so if you actually want the literal characters \n in your output (rare, but it happens), you'd need to double-escape.
Where people get burned
The most common mistake is expecting the joiner to be smart - it's a literal separator, not a formatter. It won't add spaces around a comma for you, so joiner = "," gives foo,bar. Type ", " (with the space) and you get the readable version. And because empty inputs are filtered, a node you thought was contributing text can vanish silently from the output; if the joined result looks short, check whether the upstream actually produced a non-empty string.
Installing
It's part of pytraveler/comfyui-darkil-nodes. ComfyUI Manager search ComfyUI-darkil-nodes, or:
cd ComfyUI/custom_nodes
git clone https://github.com/pytraveler/comfyui-darkil-nodes
Restart ComfyUI. No Python deps, no models - pure string handling.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| joiner | STRING | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| joined_text | STRING | — |
| ❓help | STRING | — |