D2 Text Concat
Join any number of text inputs without the delimiter soup
- text
D2 Text Concat is the smallest kind of useful: it takes 1 to 50 text inputs and joins them into one string. That's it. No API, no state, no models. But if you've ever wired three prompt parts together and got subject, , style,, - comma soup where a blank slot used to be - you know exactly why this node earns its place.
It's part of the D2 Nodes pack from da2el-ai, a "slightly convenient" collection that mostly gets talked about for its XY plot. This one is the unglamorous glue. Common uses: stitching a subject, a lighting phrase, and a quality-tag string into one prompt; combining CLIP text and a negative; appending a suffix like , best quality to a dynamic prompt before it hits the KSampler. Anywhere you'd normally reach for a pile of "Text Concatenate" nodes from other packs and a bag of empty-string edge cases.
How it works
The trick is that the inputs aren't fixed. A text_count integer sets how many sockets the node shows - the frontend adds text_1 … text_N dynamically. Leave an input unplugged and it's skipped. Then everything gets joined with the separator you pick: Comma + Space, Comma, Line break, Semicolon, Space, or None for a raw run-together string. That separator list is shared with the pack's D2 List To String, so the two feel consistent when you use them together.
The one setting that saves you
- skip_empty (default
true) - strips surrounding whitespace/newlines from each input and drops anything that ends up empty. This is the anti-comma-soup switch. With it on, a missing input just vanishes; with it off, you get the delimiter anyway. Leave it on. - text_count - how many input sockets you want, 1 to 50. Add more later, no rewiring needed.
- separator - the joiner. Most people want
Comma + Spacefor prompts; reach forLine breakwhen building multi-line text or caption blocks.
Output is a single text STRING, ready to plug into a CLIP text encode, a prompt node, or D2's own XY prompt tooling.
Installing it
Same story as every D2 node: ComfyUI Manager → search "D2 Nodes", or
cd ComfyUI/custom_nodes
git clone https://github.com/da2el-ai/D2-nodes-ComfyUI
then restart. Dependencies are trivial (just piexif and charset-normalizer), no model files. One thing to know: since v32.0.0 the pack targets the ComfyUI V3 node schema, so keep ComfyUI reasonably up to date - on an older version the node won't appear, and you'd need to pin the pack to a pre-32.0.0 tag instead.
Troubleshooting
The failure modes are all about the output looking wrong, not crashing. Stray ,, in your prompt? skip_empty is off, or an input genuinely contains a comma. Want text run together with no joiner? Set separator: None instead of deleting spaces. Inputs seem to be missing entirely? Check text_count - if it's set to 3 and you wired five things in, the extras are ignored.
It won't change your life. It'll just quietly stop a dozen small annoyances so you can get back to the part that actually matters.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| text_count | INT | 31–50 | — |
| separator | COMBO | Comma + Space | 6 options: Comma + Space, Comma, Line break, Semicolon, Space, None |
| skip_empty | BOOLEAN | true | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| text | STRING | — |