Nodes/ComfyUI-FormInput/Text Input (FormInput)
ComfyUI Node

Text Input (FormInput)

The fill-in-the-blank box that turns your workflow into a form

By monkeyWie·Created about a year ago·Updated about a year ago· 0
Text Input (FormInput)
    • text
    text

    This node is one text box and one wire. You type, it passes the string through untouched. That's the whole thing - and for the workflow author who keeps handing graphs to people, that's exactly the point.

    ComfyUI's big problem for newcomers is that a shared workflow looks like an explosion in a cable factory. There's no "fill in the blanks" layer; every value is buried in a widget somewhere on a node. Text Input (FormInput) is the pack's answer to that. It gives you a clearly labeled, always-visible text box sitting at the top of your graph that the person running it just types into. The pack README frames it exactly that way: "input elements to create forms or interact with your workflows." Build a form, share it, stop explaining where to click.

    How it works. Under the hood it's a pass-through. The node declares one required input, text - a STRING with multiline set, which is why you get a resizable box that can hold a paragraph instead of a single line. The process_text function in nodes.py just does return (text,). No model, no API, no secret processing. The output is a STRING named text, and it's a single value (not a list), so it plugs into anything that wants one string.

    Where the real utility is. You've got two honest options for a box like this in stock ComfyUI: the built-in Primitive node, which can hold a string or any other type, or this. If you're only building for yourself, the Primitive does 90% of this job and you may not need this node at all. But a fixed STRING type has one advantage: it always connects where strings connect, and it's one labeled node per purpose. In a workflow you intend to share, "Prompt - fill in" reads a lot better than a loose Primitive floating in the graph.

    Wiring it in is where people trip once. You can't plug the STRING output straight into a CLIP Text Encode's prompt box - that's a widget, not a port. Right-click the CLIP Text Encode, choose "Convert widget to input," and suddenly the wire fits. Same trick works for any text widget, including things like filename_prefix on save nodes.

    Install. Same as any custom node: search "FormInput" in ComfyUI Manager, or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/monkeyWie/ComfyUI-FormInput
    

    Then restart ComfyUI and look under the "FormInput" category. There's no requirements.txt, no model downloads, no heavy dependency - this is one of the rare packs that cannot break your environment, because it doesn't import anything but ComfyUI's own types. The downside: it's a single-commit project from May 2025, so don't wait on rapid updates.

    The traps. Expecting more than pass-through is the big one - nothing here transforms, sanitizes, or summarizes your text. And the box remembers what you typed: if you hardcode a value and save, it's baked into the workflow JSON you share. If you're shipping a blank-looking form, clear the field first, or your "empty" form shows up with your last prompt already in it.

    CategoryFormInput

    Inputs (1)

    NameTypeDefaultDescription
    textSTRING

    Outputs (1)

    NameTypeDescription
    textSTRING