Ultimate Concat (Mobile)
Assemble prompts from labeled parts without a pile of Text nodes
- value_1
- value_2
- value_3
- value_4
- value_5
- value_6
- value_7
- value_8
- value_9
- value_10
- value_11
- value_12
- value_13
- value_14
- value_15
- value_16
- value_17
- value_18
- value_19
- value_20
- value_21
- value_22
- value_23
- value_24
- Concat String
ComfyUI's default text handling is basic: Text nodes in, one string out. When you're assembling a prompt from parts - a base, a character, some style tags, a quality line - you end up with a chain of Text Concat nodes that's impossible to read. Ultimate Concat (Mobile) is the version that stays readable: up to 24 labeled prefix/value pairs, and only the ones you actually fill in get joined.
How it works
Every slot has two parts: a prefix_i text widget (the label or fixed content) and a value_i input of type * that accepts a wire from anything - another STRING, an INT from a math node, a filename, whatever you've got. A small JS helper in the pack hides the slots you're not using based on concat_count, and renames each value input to match its prefix, so the node reads like a labeled form instead of a wall of fields.
When it runs, for each active slot, if the prefix is non-empty the node appends prefix + value + delimiter. Slots with an empty prefix are skipped entirely.
The behavior that matters
The one thing that trips people up: delimiter is a suffix, not a separator. Joining "a", "b", "c" with , gives you a,b,c, - trailing comma included. Plan your delimiter accordingly.
Two nicer details, both straight from the code:
- Type the literal
\n(backslash-n) as the delimiter and it becomes a real newline - handy for multi-line prompts. - value_i inputs are
*typed, so you can pull in numbers or text computed by other nodes instead of hand-typing everything.
Output
One STRING output, named "Concat String". Wire it into a CLIPTextEncode's text input for prompt assembly, or into anything else that eats a string.
The small trap
concat_count claims a range of 1–25, but there are only 24 prefix/value slots. Set it to 25 and the 25th position evaluates to a literal NoneNone that gets appended to your string. Easy to avoid once you know; mildly confusing until you do.
Install and caveats
It's part of the same early-stage pack from Soze Inc (ComfyUI-Mobile). ComfyUI Manager, search "ComfyUI-Mobile", or:
cd ComfyUI/custom_nodes
git clone https://github.com/SozeInc/ComfyUI-Mobile
Then restart. requests is the only dependency, and there are no models to download. The pack README admits it's under active development and "not functional as a stand alone install", but this is the most self-contained node of the three: no external binary, no flow control, just string assembly.
Honestly, this is the one node in the pack I'd reach for. If you build prompts from modular parts - or want to pipe a value from another node into your prompt without copy-pasting - it does the job cleanly.
Inputs (50)
| Name | Type | Default | Description |
|---|---|---|---|
| concat_count | INT | 11–25 | — |
| delimiter | STRING | — | |
| prefix_1 | STRING | — | |
| prefix_2 | STRING | — | |
| prefix_3 | STRING | — | |
| prefix_4 | STRING | — | |
| prefix_5 | STRING | — | |
| prefix_6 | STRING | — | |
| prefix_7 | STRING | — | |
| prefix_8 | STRING | — | |
| prefix_9 | STRING | — | |
| prefix_10 | STRING | — | |
| prefix_11 | STRING | — | |
| prefix_12 | STRING | — | |
| prefix_13 | STRING | — | |
| prefix_14 | STRING | — | |
| prefix_15 | STRING | — | |
| prefix_16 | STRING | — | |
| prefix_17 | STRING | — | |
| prefix_18 | STRING | — | |
| prefix_19 | STRING | — | |
| prefix_20 | STRING | — | |
| prefix_21 | STRING | — | |
| prefix_22 | STRING | — | |
| prefix_23 | STRING | — | |
| prefix_24 | STRING | — | |
| value_1opt | * | — | |
| value_2opt | * | — | |
| value_3opt | * | — | |
| value_4opt | * | — | |
| value_5opt | * | — | |
| value_6opt | * | — | |
| value_7opt | * | — | |
| value_8opt | * | — | |
| value_9opt | * | — | |
| value_10opt | * | — | |
| value_11opt | * | — | |
| value_12opt | * | — | |
| value_13opt | * | — | |
| value_14opt | * | — | |
| value_15opt | * | — | |
| value_16opt | * | — | |
| value_17opt | * | — | |
| value_18opt | * | — | |
| value_19opt | * | — | |
| value_20opt | * | — | |
| value_21opt | * | — | |
| value_22opt | * | — | |
| value_23opt | * | — | |
| value_24opt | * | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| Concat String | STRING | — |