Nodes/ComfyUI/Text (Multiline)
ComfyUI Node Runs on cloud

Text (Multiline)

The node beginners assume is a text encoder (it isn't)

By Comfy-Org·Created 4 years ago·Updated about 3 hours ago· 129,870
Text (Multiline)
    • STRING
    value

    The single most common new-user mistake in ComfyUI: they drag in "Input Text," type a beautiful prompt into it, wire its output straight into the model loader, run, and get... a green STRING that did nothing. The name sounds like a text encoder. It is not. It's a text box that hands your words to the nodes that do the encoding - and knowing that distinction is the entire game.

    PrimitiveStringMultiline (display name Input Text, formerly "Text String (Multiline)") is the workhorse string primitive: a big multiline box that emits whatever you type as a STRING output. In June 2026 core renamed it from "Text String (Multiline)" to "Input Text" and promoted it to the Essentials tab, because this is the text-input node ComfyUI wants you using.

    How it works

    Same machinery as its primitive siblings: one widget, one pass-through output, pure return (value,). The one input, value, is a STRING with multiline: true - so you get a resizable box with newlines, the thing you actually want for prompts. The output is STRING, and any node with a string input will accept it.

    The thing it feeds is usually CLIP Text Encode (Positive) or CLIP Text Encode (Negative), which convert the string into conditioning the sampler understands. On SDXL-era workflows you'll sometimes see it split: one Input Text feeding both the positive and negative encoders through a single shared box, so you edit your prompt in exactly one place.

    Why you'd actually reach for it

    Beyond the obvious "type your prompt here," Input Text earns its keep when you start assembling text programmatically:

    • Shared prompt across encoders. One box, both positive and negative branches, or an SDXL workflow with per-token encoders.
    • Prompt engineering workflows. Feed it into String Concatenate or String Format to stitch style tokens, LoRA trigger words, or seed numbers into a prompt at queue time. Keep the static template here, splice the dynamic bits elsewhere.
    • Custom node text inputs. Any extension node that takes a string - a Save Text widget, an LLM node, a dynamic prompt composer - gets its text from this.

    It's also what appears (or what you should build) when you Convert to input a prompt widget on another node: converted string widgets materialize as a primitive text node so the prompt lives on the canvas instead of buried in a node.

    How you get it

    Ships with ComfyUI core, no install, no model files. It's a stock node - you'll find it under the Essentials/Basics tab as "Input Text," or search "text" and pick the multiline one.

    Common issues

    • Wiring it to the wrong place. Again: Input Text outputs a string, not conditioning, not a model. It goes into a text-encoding node. Wire STRING → CLIP Text Encode, and that encoder's CONDITIONING output goes into the sampler's positive/negative inputs.
    • Single-line vs multiline. If you grabbed the deprecated single-line Text String node by mistake, newlines vanish and long prompts become unreadable. Use this one.
    • Whitespace surprises. Newlines and trailing spaces are real characters and get encoded. A prompt with a stray blank line isn't broken, but it can shift emphasis tokens if you're doing per-token weight tweaks. Copy-paste from elsewhere and you'll sometimes see it.
    • It's not a node that saves anything. Input Text holds text in the workflow only. If you want the prompt saved to disk as a file, you need a custom save node - the primitive won't do it for you.

    Think of it as the sticky note you can actually wire into your graph. Everything else about ComfyUI wants you to route data; this lets your words join in.

    Categoryutilities/primitive

    Inputs (1)

    NameTypeDefaultDescription
    valueSTRING

    Outputs (1)

    NameTypeDescription
    STRINGSTRING