Prompt Palette
Toggle phrases and weights without touching the text
- STRING
Prompt Palette is the closest ComfyUI has come to a prompt playlist. It's a text utility node that splits your prompt into one phrase per line and gives you a checkbox to switch each one on or off, plus +/- buttons to nudge its weight - all by mouse, no editing the string. No API, no model files, no dependencies beyond a browser. It just makes the boring part of A/B testing prompt variants not-boring.
You'll reach for it in the middle of that endless ComfyUI loop: "is it the lighting tag? the composition tag? both?" Instead of typing, deleting, retyping into the CLIP Text Encode box for the tenth time, you tick boxes. It belongs in the same drawer as rgthree's quality-of-life nodes - it generates nothing, it just keeps a large, fiddly prompt something you can still work in.
How it works
The backend is almost insultingly simple - a string formatter. The text input holds one phrase per line, and the node's frontend (a custom JS overlay) renders each line as a row with a checkbox, the phrase text, and weight buttons. The trick is that every control maps to plain text conventions:
- Checkbox off = the line gets commented out. Toggling a phrase prepends
//to it. Theprocess()function then skips any line that starts with//and strips inline//comments too, so you can leave yourself notes mid-phrase. +/-wraps the phrase in attention syntax. Each click adds or removes0.1, clamped between0.1and2.0, so you get(phrase:1.3)in the text.
Underneath, everything is the text widget - you can open edit mode and hand-type anything the buttons can't do. The source keeps the whole thing to a single short class; the cleverness is all UI.
The inputs that matter
There are only three you'll set, from the node's own schema:
text(multiline string) - your phrases, one per line. This is the whole point of the node.delimiter(comma,space, ornone) - how enabled phrases get separated. Defaultcomma.line_break(boolean, default on) - true joins the phrases with newlines, false smashes them into one line. Handy when your text encoder is picky about whitespace.
The optional prefix input is worth a look: it's a forceInput string, meaning another node can wire into it. Drop a fixed base prompt in there and keep only the switchable phrases in text.
The single output is a STRING, not conditioning. That's the thing beginners trip on: you still feed it through a CLIP Text Encode (or a text-concatenate node if you're combining it with other prompt parts) before it reaches the sampler. It's a prompt source, not a condition.
Install
Dead easy, because there's nothing to download. Through ComfyUI Manager, search "PromptPalette" or "Prompt Palette". Or by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/kambara/ComfyUI-PromptPalette
Then restart ComfyUI. That's it - no requirements.txt to fight, no model files, no API key. The only wrinkle is that some editors pick up the node as "Prompt Palette" (the display name) rather than "PromptPalette", so search for both.
Gotchas worth knowing
- The
+/-weights are SDXL-lineage syntax.(phrase:1.3)only means something when the text encoder understands attention weights. On LLM-encoded models - Flux, Qwen-Image, Z-Image, Anima - the encoder wrapper discards weights entirely, so those buttons quietly do nothing. The checkbox still works; the weights don't. If you're on a modern model, treat the +/- buttons as decoration. - Trailing delimiters are normal. The delimiter gets appended after every phrase, so with comma selected you'll see a trailing
,at the end of each line. The encoders shrug it off; don't waste time cleaning it. //is a real comment marker. It's not just UI chrome - type a//yourself and that phrase is off. Great for stash-and-compare, confusing if you didn't mean it.
The pack's one known community review is a user calling it "works pretty well to make the prompting easier" when sharing it in a Qwen-Image-Edit thread - and they noted they had to tack on a text-concatenate node themselves, which is exactly the "it's a string, not a condition" trap above. It's a small single-author pack with modest history, but it's also one of the few utility nodes that explicitly claims ComfyUI Nodes 2.0 support (added in v1.2.0), so it's not rotting. For tweaking a prompt across runs without re-typing it, it's the node I'd actually reach for.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| text | STRING | — | |
| delimiter | COMBO | comma | 3 options: comma, space, none |
| line_break | BOOLEAN | true | — |
| prefixopt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| STRING | STRING | — |