NGs TextBoxes - Join
Glue two strings together with a separator
- text_1
The simplest possible string-concat node: your main text box, plus - if you've wired something into the optional second input - that string too, joined with whatever separator you set. The README's line for the TextBoxes family generally applies here directly: "Combine various text boxes to create more complex text structures."
How it works
text_1 is your primary multiline field. The optional text input is typed as a plain STRING, not specifically another TextBox node, so you can feed it from anywhere upstream that outputs a string - another TextBox, a line out of NGs String Squisher, or any other text-producing node in your graph. divider (default a newline) sits between the two when both are present.
This is the node that turns the rest of the TextBoxes family from "several isolated boxes" into an actual pipeline. On its own, NGs TextBoxes Simple, x2, and x3 just hold text - none of them combine anything. Join is what lets you take a title from one box, a body from another, and a tag list assembled somewhere else in your graph, and actually stitch them into one final string with control over exactly what sits between each piece.
The inputs and outputs that matter
text_1- multiline, required.divider- STRING, default\n(newline).text(optional) - the second string to join in.
Output is text_1 (STRING) - the output keeps the same name as the primary input field, a small quirk of how the widget's name carries through to the node's outward-facing socket.
How to install it
ComfyUI Manager: search "NeoGriever," install, restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/NeoGriever/ComfyUI-NeoGriever
then restart. No dependencies, no downloads.
Common issues & troubleshooting
Need to join more than two strings. Chain multiple Join nodes together - feed the output of one into the optional text slot of the next, giving each link its own divider if you want mixed separators between different pairs.
Output has an unexpected line break in it. divider defaults to a newline, which is easy to miss if you were expecting a single-line result - for something like a filename or a compact label, set divider explicitly to a space or an empty string.
Optional text left unconnected. With nothing wired into it, the node should just pass text_1 through unchanged - there's nothing to join, so don't expect an error, just the primary field's contents as-is.
Trying to join more than two strings in a single node call. This node's shape - one primary field, one optional second input - is deliberately minimal, not a general-purpose multi-string concatenator. That's a reasonable design choice for the common two-piece case (a label plus a value, a prefix plus a body), but if you're regularly gluing together four or five pieces, chaining Join nodes gets repetitive fast; at that point, building the string with a Python-expression-style node elsewhere in your toolchain will likely be less wiring than a long Join chain.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| text_1 | STRING | — | |
| divider | STRING | — | |
| textopt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| text_1 | STRING | — |