Text ++
Assemble prompts from parts without a stack of concat nodes
- text
- prepend
- body
- append
The most common text operation in ComfyUI isn't generating text, it's assembling it: a quality prefix, a subject, a style suffix, glued together. Text ++ is the pack's take on that job - prepend, body, append, joined by a delimiter you control, in one node. It's the text sibling of Number ++ in the same DRMBT nodes category, and like its sibling it's an output node that displays its result in the UI, so it doubles as a live prompt preview while you build.
You can get this done with a chain of concat nodes - and if that's working for you, fine. This exists for the 90% of cases where you don't need a chain, you need one box with three labeled fields.
How it works
It joins three text fields: prepend, body, and append, separated by delimiter. The defaults are sensible - empty prepend/append, space as the delimiter - so with nothing else touched, the output is just the body text. The subtle bits:
- The delimiter is escape-processed, so
\nin the delimiter field becomes an actual newline. That's the feature that turns a prompt assembler into a multi-line block builder. - Empty prepend/append are skipped cleanly - no stray leading/trailing delimiters in your output.
bodyis multiline, which is where the real content goes. The other two are single-line by design, for the tags you're toggling around a block of body text.
It also re-exposes all three inputs as outputs (prepend, body, append). That's the same routing-hub trick as Number ++: wire this node in the middle of a graph and you can tap the raw parts downstream without adding passthrough nodes.
The inputs that matter
- prepend - text added before the body (quality tags, style prefixes).
- body - the main, multiline text.
- append - text added after the body (style suffixes, seed stamps).
- delimiter - separator, default a space.
\nfor newlines, or anything else you want.
Outputs: text (the assembled result), plus prepend, body, append echoes.
Installing
Text ++ is part of the drmbt/comfyui-dreambait-nodes pack. Install the pack via ComfyUI Manager (search comfyui-dreambait-nodes) or:
cd ComfyUI/custom_nodes
git clone https://github.com/drmbt/comfyui-dreambait-nodes
# restart ComfyUI
No models, no extra dependencies.
Where people get burned
The most common complaint is the opposite of a bug: people expect prepend and append to be multiline like body, and they're not. That's deliberate - the single-line fields keep the node compact - but if you want to prepend a multi-line block, put it in the body and use a newline delimiter, or chain two nodes. Second gotcha: the delimiter is literal. A delimiter of " " gives you "prepend body append"; a delimiter of ", " gives comma separation; but if you type \n literally, you must make sure it's the two-character backslash-n in the field, because that's what gets unescaped into a newline. And the truth-telling limitation: this is assembly only, no override, no conditional logic - if you need "use this text instead of the body sometimes," that's a switch's job (Switch Duo in the same pack), not this node's. For the everyday "tag + subject + style" build, it's the node you'll actually reach for.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| prepend | STRING | prepend this text to the body parameter separated by the delimiter | |
| body | STRING | — | |
| append | STRING | append this text to the body parameter separated by the delimiter | |
| delimiter | STRING | split the text fields by this delimiter |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| text | STRING | — |
| prepend | STRING | — |
| body | STRING | — |
| append | STRING | — |