Nodes/D2 Nodes ComfyUI/D2 Text Concat
ComfyUI Node

D2 Text Concat

Join any number of text inputs without the delimiter soup

By da2el-ai·Created 2 years ago·Updated 11 days ago· 67
D2 Text Concat
    • text
    text_count3
    separatorComma + Space
    skip_emptytrue

    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_1text_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 + Space for prompts; reach for Line break when 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.

    CategoryD2/Text

    Inputs (3)

    NameTypeDefaultDescription
    text_countINT31–50
    separatorCOMBOComma + Space6 options: Comma + Space, Comma, Line break, Semicolon, Space, None
    skip_emptyBOOLEANtrue

    Outputs (1)

    NameTypeDescription
    textSTRING