ScarlotSoft String Concat
Twenty inputs, one string — the prompt joiner that grows its own sockets
- STRING
ScarlotSoft String Concat is a text-joining node with a party trick: it starts with one socket, and every time you connect another string it grows another one, up to twenty input_0 through input_19 slots. Feed it pieces of a prompt from different sources - a tagger's output, a style phrase, a LoRA trigger, a fixed prefix - and it glues them together into one string, joined with spaces, with any empty inputs skipped.
The mechanism is exactly as unglamorous as you'd hope. All twenty inputs are optional STRING sockets marked forceInput, so you never type into them - they exist to be wired. The node filters out anything empty, sorts the connected values by socket number, and joins them with a single space. input_0 before input_1 before input_2, no surprises. The dynamic socket growth is frontend work (the JS trims unused trailing sockets and adds one whenever the last one gets connected), so it looks tidy on the canvas instead of showing you a wall of twenty empty ports.
Why would you reach for it over typing a prompt into a CLIP Text Encode? Because the prompt is assembled at runtime from parts that change. The classic setup: wire a WD14 tagger's output into input_0, a fixed style string into input_1, and you get "1girl, solo, long hair, masterpiece, best quality" without ever retyping it. Change the source image and the whole prompt updates. It's the same "one value, fan it out / assemble it from pieces" pattern that all the plumbing nodes exist for (see the KB's node-plumbing doc) - repetition and illegibility are the two enemies, and this fights both.
The single output is a STRING you can feed into any text slot - a CLIP Text Encode, a prompt builder, a metadata node - by converting that widget to an input.
Install
Part of the ComfyUI_ScarlotSoft pack. ComfyUI Manager → search "ScarlotSoft" → install → restart, or:
cd ComfyUI/custom_nodes
git clone https://github.com/scarlotsoft/ComfyUI_ScarlotSoft
Then restart ComfyUI. No dependencies beyond what ComfyUI already has - this is pure string handling.
The honest take
There are a dozen prompt-concat nodes out there, and core ComfyUI's Text Concatenate and the primitive system cover most of this ground. What this one does differently is the auto-growing socket list and the automatic skipping of empty inputs, which genuinely removes a class of "why is my prompt full of double spaces" noise. It's a small convenience, not a revolution - and it's fine that way. If you're already running this suite for the tagger or the detailer, it slots in cleanly and you'll use it more than you expect. If you're deciding between this and rgthree or core nodes based purely on capability, they're interchangeable; pick the one whose canvas you like looking at.
One quirk: it only joins with spaces. If you need commas (the Danbooru-tag convention) or periods, that's what the suite's other joiner - ScarlotSoft String Concat DINO - is for.
Inputs (20)
| Name | Type | Default | Description |
|---|---|---|---|
| input_0opt | STRING | — | |
| input_1opt | STRING | — | |
| input_2opt | STRING | — | |
| input_3opt | STRING | — | |
| input_4opt | STRING | — | |
| input_5opt | STRING | — | |
| input_6opt | STRING | — | |
| input_7opt | STRING | — | |
| input_8opt | STRING | — | |
| input_9opt | STRING | — | |
| input_10opt | STRING | — | |
| input_11opt | STRING | — | |
| input_12opt | STRING | — | |
| input_13opt | STRING | — | |
| input_14opt | STRING | — | |
| input_15opt | STRING | — | |
| input_16opt | STRING | — | |
| input_17opt | STRING | — | |
| input_18opt | STRING | — | |
| input_19opt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| STRING | STRING | — |