Nodes/WWAA-CustomNodes/🪠️ WWAA JoinString
ComfyUI Node

🪠️ WWAA JoinString

Name:1> strings for you

By hgabha·Created 2 years ago·Updated 6 months ago· 38
🪠️ WWAA JoinString
    • Joined String
    pre_textPre-text
    input_text
    post_textPost-text

    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.

    Category🪠️ WWAA/String

    Inputs (3)

    NameTypeDefaultDescription
    pre_textSTRINGPre-text
    input_textSTRING
    post_textSTRINGPost-text

    Outputs (1)

    NameTypeDescription
    Joined StringSTRING