IF Text Typer✍️
A big comfortable text box that passes its content downstream
- STRING
IF Text Typer is the pack's answer to "where do I type the long thing?" It's a multiline text input - the same widget you'd get on any prompt node - but its only job is to hand that text to the string output. You type, it passes. The name tells the whole story: it's for typing text into a graph and having it be usable downstream.
In vanilla ComfyUI you're constantly fighting for a decent text entry point. Most string nodes give you a cramped one-line field, and pasting a long system prompt or a multi-line template into it is miserable. IF Text Typer gives you a proper multiline box, so you can keep a system prompt, a base prompt, or a reference text in one place and wire it to several downstream nodes without duplicating it. It's also an output node, which means what you've typed shows up in the UI as you write.
How it works
There's no mechanism to speak of - the text widget is defined as a multiline STRING, and output_text just returns it. The output node flag means ComfyUI treats it as a display point, so the text is visible in the node itself. That's the whole trick, and it's a genuinely useful one for workflow organization: your static text lives in one well-labeled node instead of buried inside a conditional chain.
The inputs that matter
text- the multiline string. Everything else is irrelevant, because there is no else.
Output: one STRING - whatever you typed.
Installation
Pack standard:
cd ComfyUI/custom_nodes
git clone https://github.com/if-ai/ComfyUI-IF_AI_tools.git
pip install -r requirements.txt
Or "IF_AI_tools" via ComfyUI Manager and restart. Nothing to download.
Gotchas
The only real limitation is that the output is a pass-through - there's no trimming, no cleanup, no line handling. What you type is what you get, exactly. If you need a string from another node instead of from your keyboard, this isn't the node (that's IF Display Text's cousin behavior, or just wire the source directly). It's the smallest, most forgettable node in an archived pack - and that's precisely why it keeps getting used. Sometimes a text box is just a text box.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| text | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| STRING | STRING | — |