๐ Combine (Texts)
Merge prompt fragments into one string
- STRING
Prompts are rarely one blob of text. You've got a subject over here, a style string over there, a quality-tag boilerplate you reuse, maybe a LoRA trigger word. Combine Texts stitches those separate pieces into a single string with a separator you choose. It's plumbing - but it's the plumbing that makes a modular prompt setup actually work.
Why bother instead of just typing one prompt
Because the whole point of a node graph is not typing one prompt. Once you break a prompt into parts, you can swap a style without touching the subject, drive one part from a random node and pin the rest, loop over a list of subjects while keeping the boilerplate fixed, or toggle a fragment on and off. None of that is possible if it's all one text field. Combine Texts is the node that reassembles the parts at the end so your CLIP encoder still sees one clean prompt. In the Bjornulf pack it's the connective tissue between the "write text," "random text," loop, and text-generator nodes - most of those workflows end at a Combine Texts.
How it works
You tell it how many pieces you're merging and how to join them, then wire your fragments in. It concatenates them in order with the chosen separator between each.
The two inputs that matter:
- number_of_inputs - how many text slots to expose, from 2 up to 100 (default 2). Bump this and more input sockets appear on the node. Yes, a hundred, if you're building something absurd.
- delimiter - how to glue them:
newline,comma,space,slash,backslash, ornothing.commais the natural choice for tag-style prompts (SD 1.5 / SDXL),newlinereads cleanly when you want each fragment on its own line,spacefor natural-language prompts, andnothingwhen you're assembling something where you don't want any separator injected at all.
The single output is STRING - the combined text. That goes straight into a CLIP Text Encode, a Show node to check it, a Save Text node, or the next stage of a prompt-building chain.
The inputs that matter, in practice
Pick your delimiter to match your model's prompt style. Comma-separated tags are what SD 1.5 and SDXL were trained on; natural-language models like Flux read full sentences, so space or newline and normal phrasing serve you better. Getting this wrong doesn't error - it just quietly produces a prompt that reads slightly off, so it's worth a moment's thought.
Installing the pack
One pack, ~170 nodes. ComfyUI Manager โ Install Custom Nodes โ search Bjornulf_custom_nodes โ install โ restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/justUmen/Bjornulf_custom_nodes
Restart and it's under the Bjornulf category. Pure text logic, no dependencies or models - it works immediately.
Common issues
One historical wrinkle worth knowing: in an early version the author made all the text inputs optional, which was a breaking change that forced people to rebuild their Combine Texts nodes. If you're loading an ancient workflow and the connections look scrambled, that's likely why - just re-wire it. Otherwise the failure modes are mundane. An empty input slot contributes nothing (fine, that's often intentional), but it can leave you with doubled-up separators if you expected text there - check the output in a Show node if the spacing looks weird. And if your prompt reads strangely, it's almost always the delimiter not matching your model's expected style rather than the node misbehaving. It's a simple, dependable piece; the interesting decisions are all about how you split the prompt in the first place.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| number_of_inputs | INT | 22โ100 | โ |
| delimiter | COMBO | newline | 6 options: newline, comma, space, slash, backslash, nothing |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| STRING | STRING | โ |