🪠️ WWAA JoinString
Name:1> strings for you
- Joined String
WWAA JoinString (class name WWAA_BuildString) exists to solve one annoyingly fiddly problem: constructing a string from a dynamic value plus fixed text around it. The canonical use case - and the reason the author built it, per the README - is LoRA syntax. Instead of typing <lora:Foo:1> into a prompt, you feed the LoRA name into the middle of this node with pre_text set to <lora: and post_text set to :1>, and you get a proper LoRA tag out the other end. Wire the middle input to a dynamic source and you can cycle through a stack of LoRAs without ever hand-editing prompt text.
It's part of the WWAA-CustomNodes pack from WeirdWonderfulAI.Art, and it's the kind of utility that's easy to dismiss until you've had to swap LoRA names in a prompt string a hundred times. It also gets used for wrapping any generated text in a prefix/suffix - say, adding a fixed trigger word to the front of a caption line.
How it works
This is about as close to zero logic as a node gets: the function is literally pre_text + input_text + post_text. The one detail that catches people: input_text is marked forceInput, which means the widget is hidden - you must wire a string into that port. The other two, pre_text and post_text, are editable widget fields (defaults are literally "Pre-text"/"Post-text", so change them). There are no optional inputs, and a single Joined String output that feeds into a CLIPTextEncode positive/negative prompt, or into a prompt-builder chain.
A typical LoRA-cycling setup: put the filename output of the WWAA Image Batch Loader (or a LoRA-name list) into input_text, set pre_text to <lora: and post_text to :1>, and the resulting string is ready to drop into your prompt. The author's original motivation was exactly this - dynamically cycling LoRAs to generate comparison images.
The inputs that matter
input_text- the dynamic middle; must be wired (no widget).pre_text/post_text- fixed wrappers, edited as widgets.
Installing it
It ships with the pack, so install that rather than hunting for a standalone node:
cd ComfyUI/custom_nodes
git clone https://github.com/hgabha/WWAA-CustomNodes
Restart ComfyUI, or use ComfyUI Manager → search "WWAA Custom Nodes" → Install → restart. It's under 🪠️ WWAA/String. No models, no dependencies beyond what ComfyUI ships.
Gotchas
Honestly, few. The main trap is forgetting the middle port can't be typed into - if you load a workflow and the field looks absent, that's forceInput doing its job; connect a string and it fills in. Also note there's no whitespace added: <lora: + name + :1> gives you exactly <lora:Name:1>, which is correct for LoRA tags - but if you use it for human-readable text you'll need to include spaces in pre_text/post_text yourself. For building LoRA tags specifically, it's the one WWAA node you'll keep coming back to.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| pre_text | STRING | Pre-text | — |
| input_text | STRING | — | |
| post_text | STRING | Post-text | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| Joined String | STRING | — |