Join Strings
An autogrow text list that turns N blocks into one prompt
- texts
- STRING
Join Strings is the grown-up sibling in the comfy-join-prompt pack. Where Join Prompt gives you exactly two fixed slots, this one hands you a stack of text inputs that grows and shrinks as you add or remove them, then joins the whole pile into a single string with a delimiter you choose. If you've ever built a prompt from half a dozen building blocks - base tags, subject, character, style, a quality block - this is the node that makes that a clean list instead of a mess of nested text nodes.
How it works
The texts input is an autogrow field. In ComfyUI's newer node API this renders as a collapsible list where you click to add another text slot (text_1, text_2, …) up to a max of 50, or remove the ones you don't need. Every non-empty slot is gathered, and the node joins them with whatever delimiter you set. Then it's done: one STRING out.
Two details make it more than a dumb concat. First, the delimiter parses the common escape sequences - type \n and you get a real newline, \t a real tab. That's handy when you want line breaks between prompt blocks for LLM-style encoders that read structure (Flux, Chroma, the Qwen-based models - the knowledge base has a whole section on this). Second, the cleanup toggle: when it's on, each input is normalized before joining. It splits each line on commas, trims whitespace off every tag, and rejoins with ", ". So a sloppy line like red dress, blue eyes ,cinematic becomes red dress, blue eyes, cinematic. For tag-heavy prompts - the Danbooru/Illustrious style, where comma-and-space consistency genuinely matters - that's a small lifesaver.
Inputs and outputs
texts- the autogrow list of string inputs. The one you'll actually poke at.delimiter- a plain STRING, default"". Set to", "for tags,"\n"for block-separated prompts, or" "if your inputs already carry their own punctuation.cleanup- a BOOLEAN, defaultfalse. Flip it on to normalize comma-spacing in every input before joining.
The output is a STRING. It's not conditioning - wire it into CLIPTextEncode (or another node that wants text), never directly into a sampler.
The trap
Same footgun as its sibling: the delimiter defaults to empty. "cat" + "dog" joined with no delimiter is catdog. If you expected a separator to materialize, it won't - set it explicitly. That's honestly the only thing that's easy to get wrong here.
Install
Via ComfyUI Manager, search comfy-join-prompt; or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/jupo-ai/comfy-join-prompt
then restart ComfyUI. No Python dependencies, no model downloads, no API keys - it's a tiny pure-string pack. The one requirement that matters: it's built on ComfyUI's new comfy_api node framework, so it needs a current (2.x-era) ComfyUI. If the node loads as a red/missing class after install, update ComfyUI first. And if you only ever need two inputs, the pack's other node, Join Prompt, is the same idea with a fixed pair of slots.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| texts | COMFY_AUTOGROW_V3 | — | |
| delimiter | STRING | — | |
| cleanup | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| STRING | STRING | — |