Derp Concatenate
Stitch strings together with zero visible wires
- STRING
Derp Concatenate is the pack's string-joining node, and it's got a personality: it doesn't take wires at all. You pick which STRING-type wireless signals from across your canvas to combine, it stitches them top-to-bottom into one text blob, and it broadcasts the result back out as a fresh wireless signal. It's part of xcp_derp-UI (search "xcp_derp-UI" in ComfyUI Manager, by lordwedggie), living in the derpNodes menu under Utilities.
Why you'd reach for it
Prompt assembly is where this shines. Keep your style prefix, subject, and quality tags in separate derp String/seed/prompt nodes scattered around the canvas - no, really, that's the point - then point a single Concatenate at all of them and it glues them into one prompt string. Because it listens to the pack's wireless registry rather than drawing long looping wires, you can have sources a mile apart and the graph stays readable. That's the whole derp-UI philosophy in one node: keep the plumbing out of the wire view.
How it works
Under the hood it's a lot simpler than the other derp nodes, which is refreshing. The Python side is honest: it takes two multiline strings, text_a and text_b, and returns text_a + text_b as a STRING output. That's the fallback behavior - genuinely useful if you wire two text boxes into it, since both inputs exist in the schema.
But the designed usage is wireless. From the dropdown at the bottom of the node you select which STRING signals from signalOut nodes to combine; the node filters out anything it can't concatenate, so only compatible signals appear. Each selection gets its own entry with a live text preview - right-click an entry to hide its preview and keep the node compact, drag entries to reorder (top to bottom is the concatenation order), and use the close button to drop one. The node auto-sizes as signals come and go, and there's a loop guard that stops you selecting signals from nodes downstream of the Concatenate, so you can't build an infinite signal loop and watch your GPU catch fire.
The gotcha that bites everyone
Same as every derp node: this one needs a derpRouter in your workflow. It's pure wireless - "wired connections don't interact with it at all," per the docs. The Concatenate broadcasts its combined result as a new signal, and the Router is what routes that signal to a receiver. Drop the Router first, always. Without it you've got a very tidy string joiner that talks to nobody.
The other thing to know: even though text_a and text_b are in the schema, don't build the habit of doing all your joining through them. The whole reason to use this node over a plain core "Text Concatenate" is the wireless registry - the ability to pull from five different sources without drawing five wires. Use the signal picker, not the input boxes.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/lordwedggie/xcp_derp-UI-Release
Restart ComfyUI and you're done - no pip requirements, no model downloads, no npm install (the pack vendors its JS dependencies). Manager users: search xcp_derp-UI.
Common issues
If you pick a signal and the output doesn't change, check that the source node is actually broadcasting a signal (derp String/Notes-style nodes have to be signal-enabled), and that you haven't hit the loop guard by selecting something downstream. And since this pack is young and niche with thin community coverage, treat the pack's own node docs - derp_docs/Utility Nodes/Derp Concatenate.md - as the source of truth when in doubt.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| text_a | STRING | β | |
| text_b | STRING | β |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| STRING | STRING | β |