SAX Prompt Concat
Many texts, one conditioning — SAX Prompt Concat
- pipe
- texts
- PIPE
- CONDITIONING
- POPULATED_TEXT
SAX Prompt Concat is what you reach for when your prompt stops being one sentence and becomes an assembly line. It takes up to 32 text inputs, concatenates them, runs the same wildcard and LoRA expansion as its big sibling SAX Prompt, encodes the result with CLIP, and hands you a ready-to-use CONDITIONING. The twist that makes it genuinely useful: you can point it at the negative conditioning too, with a single boolean.
The whole point is composability. Instead of one giant prompt box that you edit with trembling fingers, you build prompts from pieces - a character block, a style block, a quality block - and swap pieces in and out independently. That pattern only works if there's a tidy way to feed many strings in, and that's this node's entire job.
How it works
The texts input is an autogrowing connector (COMFY_AUTOGROW_V3): it starts as a couple of string ports and you add more as needed, up to 32. On execution the strings are joined, then the standard SAX pipeline runs - wildcard expansion, LoRA tag extraction, CLIP encoding. The target_positive boolean (default on) decides where the result lands: on for the positive conditioning, off for the negative. Since you can wire any string source in - including other SAX nodes - you can have one shared negative built from the same Text Catalog slots that feed your positive.
Empty strings are skipped, which is the quiet superpower. The docs note this aligns with the "output empty string for unset slots" contract of SAX Text Catalog, so you can leave relation slots unset and Prompt Concat just ignores them instead of choking on "". That's what lets you keep prompt fragments optional.
The outputs
PIPE- the pipe with the new conditioning stored in positive or negative.CONDITIONING- the encoded result, for wiring straight into a KSampler (or SAX KSampler) without unpacking the pipe.POPULATED_TEXT- the final joined, expanded string, for metadata embedding.
Installing it
It's part of the SAX_Bridge pack. ComfyUI Manager → "Install via Git URL" → https://github.com/so16tm/SAX_Bridge, or:
cd ComfyUI/custom_nodes
git clone https://github.com/so16tm/SAX_Bridge
Restart. Same optional-dependency note as SAX Prompt: wildcard expansion requires comfyui-impact-pack; LoRA tags and plain concatenation work without it.
Gotchas
Order matters and it's your order - the strings join in the order of the ports, so put the character block before the style block if that's how your model likes it. And because empty strings are skipped, a genuinely-empty-but-intentional string is indistinguishable from an unset slot; if you want an actual empty line in the middle of a prompt you can't get it here, so don't try. One node, one purpose.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| pipe | PIPE_LINE | — | |
| target_positive | BOOLEAN | true | — |
| texts | COMFY_AUTOGROW_V3 | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| PIPE | PIPE_LINE | — |
| CONDITIONING | CONDITIONING | — |
| POPULATED_TEXT | STRING | — |