Nodes/Kinburg-Nodes/Unlim Text Concat
ComfyUI Node

Unlim Text Concat

Glue as many strings together as you like, no limits

By Kinburg·Created 3 months ago·Updated 6 days ago· 1
Unlim Text Concat
    • text
    text_1
    separator
    skip_emptytrue
    text_2

    ComfyUI's core string-concat nodes come with a fixed number of inputs, and the moment you need a ninth string you're back to rewriting the graph. Unlim Text Concat is the version that never runs out: it starts with text_1 and text_2, and every time you connect the last slot a new empty one appears. If you've ever built a prompt from parts, joined captions into one block, or assembled a report line by line, this is the node you'll reach for instead of chaining six concat nodes in series.

    How it works

    The mechanism is boring in the best way. Every connected input is gathered in slot order and joined with separator between them - no magic, just "sep".join(parts). The "unlimited" part is a frontend trick: the node registers only text_1 and text_2, but any connected link arrives at the backend through **kwargs, so the growing slot list just keeps sending more values in. That's the same pattern the pack uses for its image batch/list nodes.

    Inputs that matter

    • text_1 / text_2 / … - the strings to join. text_1 is required; the rest appear as you connect.
    • separator - what goes between the parts. Multi-line allowed, and the default is a newline, which gives you one input per line - the natural shape for captions. Want comma-separated tags? Type , .
    • skip_empty - on by default. It drops empty or unconnected inputs so they don't leave stray separators like a leading newline or a dangling comma. Leave it on unless you specifically want empty slots to count.

    The single text output feeds anything that takes a string - a CLIP text encoder, a prompt node, a text preview, or a save node.

    Install

    Part of the Kinburg-Nodes pack: ComfyUI Manager (search "Kinburg-Nodes") or cd ComfyUI/custom_nodes && git clone https://github.com/Kinburg/Kinburg-Nodes, then restart. No extra dependencies - it's plain Python.

    Where people get burned

    The skip_empty default is the subtle one: if you turn it off, a bypassed branch leaves an empty line or separator in the middle of your output, and prompt nodes don't care but a ----delimited block parser might. If your output looks wrong with stray separators, check that skip_empty is on before you go debugging anything else. And if you're feeding the result into a prompt encoder, remember the newline default - a multi-line prompt is fine for CLIP but some downstream nodes expect single-line input.

    CategoryKinburg-Nodes/util

    Inputs (4)

    NameTypeDefaultDescription
    text_1STRING
    separatorSTRING Inserted between the inputs. Multi-line is fine; the default is a newline (one input per line).
    skip_emptyBOOLEANtrueSkip empty / unconnected inputs so they don't produce stray separators.
    text_2optSTRING

    Outputs (1)

    NameTypeDescription
    textSTRING