ComfyUI Node Runs on cloud

Text Multiline

A resizable text box you can wire anywhere

By WASasquatch·Created 3 years ago·Updated about 22 hours ago· 1,840
Text Multiline
    • STRING
    text
    dynamic_promptstrue

    Sometimes you just want a text box. Not a CLIP encoder, not a prompt widget bolted to a sampler - a plain, resizable field where you type a block of text and send it down a wire as a STRING. That's Text Multiline, and its job is genuinely that simple.

    The reason it earns a spot in a lot of graphs is separation. In core ComfyUI your prompt is trapped inside the CLIP Text Encode node. Pull the text out into a standalone Multiline node and now that same block can feed several encoders at once, get run through a Find and Replace, get concatenated with other fragments, or get reused as a filename. The text becomes a first-class thing you can route, instead of a widget stuck to one node.

    How it works

    There's no mechanism to explain - it's a multi-line input field whose contents come out as a single STRING output. Newlines you type are preserved, so it doubles as a place to hold multi-line content: a long prompt, a list of tags, a template you'll token-replace later. It's the text equivalent of a primitive node.

    Worth knowing the pack-wide history: WAS text nodes output plain STRING now, not the old ASCII type. If a dated tutorial mentions ASCII, it's the same wire - the suite renamed it in 2023 so it's obvious what's flowing through.

    Inputs and outputs that matter

    The input is the text field itself - type into it. The output is one STRING. Wire that into a CLIP Text Encode, into this pack's Text to Conditioning, into a Save Image filename, or into any other WAS text node for further processing.

    The pattern that makes it click: use one Text Multiline as your positive prompt, feed it into both your encoder and a second branch that does something with the same words - an overlay, a log, a filename. One source of truth for the text, many consumers.

    How to install it

    ComfyUI Manager: search was-node-suite-comfyui, install, restart. By hand:

    cd ComfyUI/custom_nodes
    git clone https://github.com/WASasquatch/was-node-suite-comfyui
    

    then install the pack's requirements.txt in your ComfyUI venv and restart. This node is pure string handling - it pulls in nothing heavy on its own.

    Common issues & troubleshooting

    Do I even need this? Honest answer: often not. If your prompt only ever feeds one encoder, the built-in text widget on CLIP Text Encode is fine and it's one fewer custom node in your graph. Text Multiline pays off specifically when you want to route the text - reuse it, transform it, or reference it in a filename. Don't install the whole WAS Node Suite just to get a text box.

    The output plugs into the wrong socket. Its output is a STRING. A CLIP Text Encode wants that STRING as its text input, not as conditioning - encode first, then feed the CONDITIONING onward. If you want to skip the separate encode, use WAS's Text to Conditioning, which takes the string and a CLIP together.

    My newlines/formatting vanished downstream. Some nodes strip or collapse whitespace when they consume text. The Multiline node itself keeps what you type; if formatting disappears, it's the consumer doing it, so check what you wired into.

    The whole pack fails to import after a ComfyUI update. Standard WAS Node Suite behavior - it downgrades a few packages for older modules, and a ComfyUI bump can break the startup import. Re-run the pack's requirements against the activated venv (or install.bat). The suite's been maintenance-only since late 2023, so keep that reinstall step in your back pocket.

    CategoryWAS Suite/Text

    Inputs (2)

    NameTypeDefaultDescription
    textSTRINGThe text to emit. A line whose first non-blank character is # is left out, so part of a prompt can be parked instead of deleted. Tokens such as [time], [user] and [hostname] are replaced with their values, and a {red|blue} alternation picks one of the options at random unless dynamic_prompts is off.
    dynamic_promptsBOOLEANtrueWhether a {red|blue} alternation picks one option at random. `on` is the prompt behaviour; `off` keeps every brace as typed, which is what JSON needs. Lines starting with # are dropped either way, so code belongs in Text Multiline (Code Compatible). The choice is made on the canvas: text sent straight to the API is never rewritten.

    Outputs (1)

    NameTypeDescription
    STRINGSTRINGThe text with # lines removed and every token replaced.