Nodes/ComfyUI-Mobile/Ultimate Concat (Mobile)
ComfyUI Node

Ultimate Concat (Mobile)

Assemble prompts from labeled parts without a pile of Text nodes

By SozeInc·Created 2 years ago·Updated 2 years ago· 0
Ultimate Concat (Mobile)
  • 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
◄concat_count1►
◄delimiter►
◄prefix_1►
◄prefix_2►
◄prefix_3►
◄prefix_4►
◄prefix_5►
◄prefix_6►
◄prefix_7►
◄prefix_8►
◄prefix_9►
◄prefix_10►
◄prefix_11►
◄prefix_12►
◄prefix_13►
◄prefix_14►
◄prefix_15►
◄prefix_16►
◄prefix_17►
◄prefix_18►
◄prefix_19►
◄prefix_20►
◄prefix_21►
◄prefix_22►
◄prefix_23►
◄prefix_24►

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.

CategoryComfy Mobile

Inputs (50)

NameTypeDefaultDescription
concat_countINT11–25—
delimiterSTRING—
prefix_1STRING—
prefix_2STRING—
prefix_3STRING—
prefix_4STRING—
prefix_5STRING—
prefix_6STRING—
prefix_7STRING—
prefix_8STRING—
prefix_9STRING—
prefix_10STRING—
prefix_11STRING—
prefix_12STRING—
prefix_13STRING—
prefix_14STRING—
prefix_15STRING—
prefix_16STRING—
prefix_17STRING—
prefix_18STRING—
prefix_19STRING—
prefix_20STRING—
prefix_21STRING—
prefix_22STRING—
prefix_23STRING—
prefix_24STRING—
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)

NameTypeDescription
Concat StringSTRING—