MultiString Prompts
Five prompt boxes in one node — batch text without the spaghetti
- prompt_1
- prompt_2
- prompt_3
- prompt_4
- prompt_5
- negative_prompt
- prompt_list
The name undersells it. MultiString Prompts isn't a fancy string library - it's five big multiline text boxes, a shared prefix and suffix, and one node where a stack of prompt variation work used to live. If you've ever run a sequence of images - shot-to-shot video, style sweeps, "same subject, five moods" - you know the alternative: a half-dozen String nodes wired into a loop, or editing a text file between every render. This collapses that into a single node that hands you five processed strings plus a ready-made list.
It's a small, dependency-free utility from the SquirrelRat/MultiString-Prompts pack, and its whole job is to let you type a bunch of prompts once and route them around. There's no API, no model download, no torch trickery - just string assembly.
How it works
The mechanism is dead simple, which is the point. Each of the five prompt boxes gets stripped of surrounding whitespace, then reassembled as prefix, prompt, suffix - with two wrinkles worth knowing:
- Empty boxes stay empty. If a slot is blank, the output is
"", not"prefix,suffix". So you can leave slots unused and the node won't inject stray commas or your quality keywords into nothing. - The prefix/suffix are opt-in. The
enable_prefixandenable_suffixdropdowns (yes, they're string"true"/"false"choices, not booleans) let you test prompts with and without your shared keywords without deleting them.
The prefix slot is where a beginner gets real value: it's the natural home for quality-tag blocks like score_9, score_8_up on Pony/Illustrious or a style/lighting phrase you want on every image. Since earlier tokens carry more weight in most encoders, putting that shared block at the front (rather than appending it per prompt) is arguably where it belongs anyway.
The inputs and outputs that matter
You'll actually set three things:
multi_prompt_1throughmulti_prompt_5- your five prompts, each multiline.prefix/suffix- single-line shared text, with their enable toggles.negative_prompt- yes, it's there, even though the README never mentions it. The schema and source both include anegative_promptinput that runs through the same prefix/suffix processing.
Outputs are prompt_1 through prompt_5 (STRING), a processed negative_prompt string, and prompt_list. That last one is the interesting bit: it's a single list of your non-empty processed prompts, made for feeding a Loop or batch node directly - the compact workflow the author clearly built this for.
Installing it
The pack is on the Comfy Registry, so the easy path is ComfyUI Manager: Manager → Install Custom Nodes → search "MultiString Prompts". Or clone it:
cd ComfyUI/custom_nodes
git clone https://github.com/SquirrelRat/MultiString-Prompts
Then restart ComfyUI. There's no requirements.txt to install - the only import is stock torch, which ComfyUI already runs on. No models, no weights, nothing to babysit.
Gotchas
The one that will actually bite: prompt_list drops empty slots. The node filters blanks out of the list, so if you have five boxes and leave two empty, the loop you feed the list into runs three times, not five. That's probably desirable most of the time - but if you're relying on index alignment between list position and a video frame sequence, count the entries, not the boxes.
The other classic ComfyUI step: if the node doesn't show up after install, refresh the browser tab and make sure the frontend fully reloaded - old cached UI is the usual reason a freshly installed node appears missing.
For the version of this node that encodes those prompts into conditioning blocks in one step, grab its sibling, MultiString Prompts Encode. The string node is the text side; the encode node is the "wire me straight into a KSampler" side.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| enable_prefix | COMBO | true | 2 options: true, false |
| enable_suffix | COMBO | true | 2 options: true, false |
| prefix | STRING | — | |
| suffix | STRING | — | |
| multi_prompt_1 | STRING | — | |
| multi_prompt_2 | STRING | — | |
| multi_prompt_3 | STRING | — | |
| multi_prompt_4 | STRING | — | |
| multi_prompt_5 | STRING | — | |
| negative_prompt | STRING | — |
Outputs (7)
| Name | Type | Description |
|---|---|---|
| prompt_1 | STRING | — |
| prompt_2 | STRING | — |
| prompt_3 | STRING | — |
| prompt_4 | STRING | — |
| prompt_5 | STRING | — |
| negative_prompt | STRING | — |
| prompt_list | * | — |