SimpleConcat
The glue node that turns wildcard output into an actual prompt
- STRING
SimpleConcat is the plain-Jane sibling in the Simple Wildcard pack, and it exists because wildcards have a problem: they give you one string, and one string is rarely your whole prompt. The pack's headline node, SimpleWildcard, picks a random line from a .txt file for you. This one just bolts pieces together - up to ten of them - into a single string you can feed to CLIP Text Encode.
That sounds trivial until you actually want it. Stack a character wildcard, a scene wildcard, and your fixed style suffix into one prompt, and you'd otherwise be hand-glueing them with commas or reaching for a whole other pack. If you're already installing Simple Wildcard, SimpleConcat costs you nothing extra - it ships in the same repo.
Mechanically it's embarrassingly simple, and that's a compliment. Python's str.join runs over all the input_* fields, with one nice touch: it silently skips any input that's empty or blank. Leave input_3 unwired and you get "red hair, beach, style", not "red hair, beach, , style". No model, no API key, no state - it just concatenates. The name checks out.
The inputs that matter:
delimeter- the string inserted between pieces. Default is", ", which is right for most booru-style prompts. (The author spells it "delimeter," oneishort. You get used to it.)input_0throughinput_9- the ten pieces. They're all optional, multiline, andforceInput, which means they show up as sockets, not text boxes. You don't type into this node; you wire text into it from SimpleWildcard outputs, text/primitive nodes, or other SimpleConcats chained together. Need more than ten pieces? Chain two of these.
The output_text field on the node is a read-only display that fills in after each run - don't try to type in it, the frontend disables it on purpose.
The output gotcha people actually hit. SimpleConcat's output is a single STRING, and the natural target is the text field on CLIP Text Encode (Prompt). But SimpleConcat is registered as an output node, so the connection isn't always there to grab - you'll look at CLIP Text Encode and see no socket to drag into. This is the #1 support question for this whole pack. The fix: right-click the text field on CLIP Text Encode → Convert widget to input, then drag from SimpleConcat's output to the new input. Same move you use everywhere else in ComfyUI to turn a widget into a wire.
Installing it: ComfyUI Manager → search "Simple Wildcard" (the pack title), or:
cd ComfyUI/custom_nodes
git clone https://github.com/vanillacode314/SimpleWildcardsComfyUI
then restart ComfyUI. That's it - the only Python dependency is pipe==2.2, a tiny functional-programming helper the wildcard side uses. No model files, no downloads, nothing heavy. SimpleConcat itself doesn't even need the pipe package; it's pure str.join.
Honest take: if all you need is a string joiner and you've never touched this pack, plenty of bigger suites (WAS Node Suite, rgthree) can do it too. But this one is free, dependency-light, skips blanks for you, and sits right next to the wildcard node it's meant to feed. For a randomize-your-prompts workflow, it's the missing comma you'd otherwise be fighting.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| delimeter | STRING | , | — |
| input_0opt | STRING | — | |
| input_1opt | STRING | — | |
| input_2opt | STRING | — | |
| input_3opt | STRING | — | |
| input_4opt | STRING | — | |
| input_5opt | STRING | — | |
| input_6opt | STRING | — | |
| input_7opt | STRING | — | |
| input_8opt | STRING | — | |
| input_9opt | STRING | — | |
| output_textopt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| STRING | STRING | — |