DaisyChainText
The dead-simple text joiner that holds a workflow together
- text
Any workflow that isn't a fixed one-liner prompt ends up splicing text together: a wildcard roll, a LoRA's trigger words, a saved style block, a caption from a VLM, a date stamp. Core ComfyUI gives you text boxes, not text plumbing - there's no built-in "join these strings" node - so everyone grabs one from some pack. DaisyChainText from mittimi/ComfyUI_mittimiDaisyChainText is about the smallest honest version of that idea: three text inputs, one text output, done.
How it works
The whole node is roughly twenty lines of Python. DaisyChainTextMittimi takes text_that_comes_first, text, and text_that_comes_last, and returns text_that_comes_first + text + text_that_comes_last. That's the entire mechanism - plain string concatenation, no separator injection, no trimming, no regex, no API calls, no model files. The naming reads like a sentence, which is the point: you put the big block in the middle text box and wire the surrounding pieces from other nodes.
The inputs that matter
The three inputs that matter:
- text (required, multiline) - the body. This is the one you type into; the big text area. If you only use one input, this is it.
- text_that_comes_first (required) - the prefix. Wire a wildcard output or a style string in here.
- text_that_comes_last (optional) - the suffix. Leave it empty and it contributes nothing; it's a plain empty string.
The single output, text (STRING), plugs straight into a CLIP Text Encode prompt input, or anywhere else a string is expected. Nothing exotic.
The whitespace trap
Where people get burned, and it's a subtle one: the concatenation is literal. There is no automatic whitespace. "cat" + "sitting" gives you catsitting, and the node will not apologize. If your prefix is a complete word you need a trailing space on it, or a leading space on the middle text - plan your whitespace yourself. Same for newlines: if you want the daisy chain to break lines, type the \n (or actual line break) into one of the inputs. Also worth knowing, the first/last inputs are single-line STRINGs while only text is multiline, so don't expect to paste a wall of text into the suffix.
If your string-joining needs grow - a real delimiter, token counts, an actual template engine - this node will start to feel bare, and honestly it's fine to graduate to a fuller text toolkit like WAS Node Suite or one of the many text-node collections. For gluing two or three dynamic strings together, though, this stays the one you'd reach for: nothing to configure, nothing to load, and it can't break in ways that aren't visible in the output.
Installing it
Install is trivial. Via ComfyUI Manager, search mittimiDaisyChainText (the pack title is ComfyUI_mittimiDaisyChainText) and install; or clone it by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/mittimi/ComfyUI_mittimiDaisyChainText
Restart ComfyUI and the node appears under mittimiTools in the node menu. There are no dependencies beyond what ComfyUI already ships - no requirements.txt, no models to download, nothing heavy. It's GPL-3.0 and maintained by mittimi, a Japanese ComfyUI author whose blog lives at mittimi.blogspot.com.
Troubleshooting
Troubleshooting is short because there's so little to go wrong: node missing after install means you haven't restarted ComfyUI (or Manager's restart didn't take); text coming out jammed together means you forgot the whitespace. That's about it. If you see output that looks wrong, preview the text output with a Show Text-style node and you'll see exactly what got joined - the math is a + b + c, no more, no less.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| text_that_comes_first | STRING | — | |
| text | STRING | — | |
| text_that_comes_lastopt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| text | STRING | — |