Nodes/ComfyUI-SA-Nodes-QQ/Text Concat Multi (QQ)
ComfyUI Node

Text Concat Multi (QQ)

Join a dozen text wires into one string, without a dozen concat nodes

By siraxe·Created 11 months ago·Updated about 18 hours ago· 72
Text Concat Multi (QQ)
    • text
    inputcount2
    text_1
    separator
    strip_newlinesfalse
    text_2

    TextConcatMulti is a text joiner with a knob on it: tell it how many inputs you want, and it grows that many string sockets, then joins whatever's wired into them with a separator. It's the "build a prompt from parts" node - subject from one place, style from another, camera move from a third - and it beats chaining two-input concat nodes together when your string has more than two pieces.

    Every workflow is 70% plumbing, and this is textbook plumbing: it touches no pixels, has no opinion, just makes a single string out of N others and hands it to whatever wants text - a positive prompt, a filename, an H3 or conditioning block.

    How it works

    Three things to set:

    • inputcount (INT, 2 to 1000) - how many inputs you want.
    • separator (STRING, default empty) - what goes between each piece. ", " for a prompt, "\n" for a multi-line caption. Empty string means pieces are glued directly.
    • strip_newlines (BOOLEAN) - strips line breaks from every input before joining, so a multi-line widget collapses to one line.

    Then the part people miss: the frontend adds an "Update inputs" button on the node. Set inputcount, click it, and text_2 through text_N sockets appear. That's not decoration - the backend's static schema only knows text_1 and text_2, so without clicking the button, raising the count does nothing visible. The extra sockets are added by the node's JavaScript, and they come back on workflow load as long as the pack is installed. text_1 is the one required input; the rest are optional, and an unconnected input just joins as an empty string.

    Output is a single text STRING. Wire it anywhere a string is accepted.

    Where people get burned

    The empty-string behavior is the usual trap. If you're joining with ", " and one branch upstream is unconnected or produced nothing, you get a double comma or a leading comma - "cat, , slow pan". A first-non-null switch upstream (rgthree's Any Switch and friends) or a separator you can live with is the fix; don't expect the node to skip blanks for you.

    Also worth knowing: inputs beyond text_2 are a frontend affordance, not part of the backend schema. If you save a workflow, edit the JSON by hand, or load it in an environment where the pack's JS isn't running, the extra sockets won't exist. Keep the pack installed and current and it's a non-issue.

    Install

    From ComfyUI Manager (search "WanVideoWrapper QQ", now renamed SA-Nodes-QQ) or:

    cd ComfyUI/custom_nodes/
    git clone https://github.com/siraxe/ComfyUI-WanVideoWrapper_QQ.git
    

    Restart ComfyUI. No extra dependencies - the pack ships without a requirements.txt and this node needs no models. One rename gotcha: v1.3.4 moved the repo to ComfyUI-SA-Nodes-QQ, and stale wanwrapper_qq folders in custom_nodes can cause spurious re-installs on old workflows - delete the old folder if that happens.

    Is it the best concat node in ComfyUI? Plenty of packs ship one (Impact, WAS, and the rgthree-style utilities all have a variant). This one earns its place by being in a pack you're already running for Wan video work, and by letting one node swallow five or six wires where a default install would make you daisy-chain.

    CategoryQQ/text

    Inputs (5)

    NameTypeDefaultDescription
    inputcountINT22–1000
    text_1STRING
    separatorSTRING
    strip_newlinesBOOLEANfalse
    text_2optSTRING

    Outputs (1)

    NameTypeDescription
    textSTRING