Nodes/Wireless Toggle Master/Dynamic Text Concatenate
ComfyUI Node

Dynamic Text Concatenate

The pack is called Toggle Master, but this is the text-joiner you'll actually use

By jonstreeter·Created 9 months ago·Updated 8 months ago· 2
Dynamic Text Concatenate
    • text
    text_1
    text_2
    text_3
    text_4
    text_5
    text_6
    text_7
    text_8
    text_9
    text_10
    delimiterspace
    custom_delimiter

    If you found this node while hunting for the Wireless Toggle Master's headline feature, take a second look at what you actually got. Dynamic Text Concatenate is the pack's quiet utility node: it takes up to ten text inputs, joins the non-empty ones with a delimiter you pick, and hands you one clean string on the other side. No APIs, no models, no keys - and honestly, it's the piece of this pack a lot of people end up using daily.

    Why you'd reach for it

    Prompts in ComfyUI are assembly jobs, not typing jobs. You want to swap the subject, the style, or a LoRA trigger without editing one giant wall of text every time - and the classic move is to break your prompt into chunks (subject, lighting, style tags, quality tags) and glue them back together before they hit CLIPTextEncode. That glue is exactly what this node is. Feed it a photorealistic portrait, of a woman, golden hour, and it hands back a photorealistic portrait of a woman golden hour (with the delimiter you chose).

    It composes especially well with this pack's own toggle node: build a few alternative text branches, switch between them by title/color match, and concatenate the survivors into the final prompt. A/B testing without the spiderweb of bypass nodes.

    How it works

    The Python side is refreshingly simple. Every input that's None or empty is skipped, so a half-wired node won't spew , , , into your prompt - leave text_7 unconnected and it just doesn't appear. The delimiter dropdown maps to real separators (space, none, comma, newline, pipe), and custom uses whatever you typed into custom_delimiter.

    The clever part is front-end JavaScript. All ten text slots are forceInput, which means they're sockets, not widgets - you can't type into them. The node starts with just two visible inputs, then grows a new one every time you fill the last slot, up to ten, and prunes unconnected trailing inputs again. That's the "Dynamic" in the name: the node resizes itself to fit what you're wiring.

    The inputs that matter

    For a beginner, honestly just these:

    • text_1text_10 - your prompt chunks. All optional, all wired, none typed.
    • delimiter - the joiner. space is the sensible default; comma is handy for tag-style prompts; custom lets you use, say, , with spaces or a BREAK-style splitter.
    • custom_delimiter - only read when delimiter is set to custom.

    One output: text, a plain STRING, straight into CLIPTextEncode (positive side - and remember, on modern flow-matching models the negative prompt may be doing nothing anyway).

    Installing it

    Same as the rest of the pack. In ComfyUI Manager, search "Wireless Toggle Master" and install; or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/jonstreeter/comfyui-togglemaster
    

    Then restart ComfyUI. That's the whole install - there are no model downloads and no pip dependencies to babysit. It's a couple of Python classes and some JS, MIT-licensed, from the same author behind the Deep Exemplar Video Colorization workflow.

    Where people trip

    The number one gotcha is also the design: you can't type into this node. People drop it in, see no text box, and assume it's broken. You need to wire text in from another text node - any STRING output works.

    Second: empty inputs get skipped, which is nearly always what you want, but it means the node gives you no visual feedback about what's actually in each slot. If your prompt looks wrong, check the sources, not this node.

    Third, a general ecosystem warning rather than a bug in this code: heavily-JS utility packs are exactly what breaks when ComfyUI's frontend gets rewritten (the Nodes 2.0 update in late 2025 took out plenty of rgthree's widgets, the pack this one credits). If the node's inputs stop auto-growing after a big ComfyUI update, that's the first thing to suspect.

    It's a thin tool, and it knows it. But for assembling prompts from swappable parts, it's the one utility from this pack you'll find yourself reaching for.

    Categoryutils

    Inputs (12)

    NameTypeDefaultDescription
    text_1optSTRING
    text_2optSTRING
    text_3optSTRING
    text_4optSTRING
    text_5optSTRING
    text_6optSTRING
    text_7optSTRING
    text_8optSTRING
    text_9optSTRING
    text_10optSTRING
    delimiteroptCOMBOspace6 options: space, none, comma, newline, pipe, custom
    custom_delimiteroptSTRING

    Outputs (1)

    NameTypeDescription
    textSTRING