Nodes/Prompt Palette/Prompt Palette (Combinatorial)
ComfyUI Node

Prompt Palette (Combinatorial)

Stop clicking Run a hundred times — generate every prompt combo at once

By z3rofeels·Created 2 months ago·Updated 21 days ago· 14
Prompt Palette (Combinatorial)
  • clip
  • model
  • Model list
  • CLIP list
  • Conditioning list
  • Prompt list
  • Seed list
  • Wildcards used
  • Prompt metadata (JSON) list
text
moderandom
count10
seed0
seed_modesequential
max_prompts0

If you migrated from A1111 or Forge, you know this exact pain: in those UIs, {a|b|c} in a prompt means all three images on one click. In stock ComfyUI it means clicking Run three times. Prompt Palette (Combinatorial) is the fix - you write one wildcard-aware template and it returns the whole batch in a single execution. It's from the same pack as the base Prompt Palette node, and it's the one you reach for when you want a deliberate sweep of variations rather than an afternoon of manual clicking.

How it works

Feed it a template with wildcards and choice groups - a __subject__ wearing __outfit__ in __location__ - and pick a mode:

  • Random resolves the template count times (default 10) with independently derived seeds. Sampling is with replacement, so repeats are possible. This is the quick "give me N variations" setting.
  • Combinatorial expands every unmarked wildcard and {a|b|c} group into the full Cartesian product - 3 subjects × 4 outfits × 5 locations gives you 60 prompts - stopping at the max_prompts cap.

The clever bit: a group carrying an explicit sampler marker (+, -, *, ~, @, %) opts out of full expansion and makes one pick per generated prompt. So you can sweep subject exhaustively while keeping lighting random. That's the Dynamic Prompts convention this pack follows, and it's old A1111 syntax most people who arrived after 2024 never learned - worth knowing even if you only ever use the base node.

The inputs that matter

  • mode - random vs. combinatorial. Everything else hangs off this.
  • count - random mode only; how many prompts to roll.
  • seed + seed_mode - sequential (seed, seed+1, seed+2…), fixed (same seed every prompt), or random (deterministic sequence derived from the base seed). Sequential is your friend for reproducible sweeps.
  • max_prompts - combinatorial safety cap. 0 uses the built-in 5,000 limit. The node shows an estimated output before you queue, and warns when expansion will hit the cap.

The fan-out trap

All seven outputs are lists: Prompt list, Seed list, Conditioning list, Model/CLIP lists, Wildcards used, and a Prompt metadata (JSON) list. In ComfyUI, a list output makes connected downstream nodes execute once per item - so an estimated output of 500 prompts genuinely means 500 sampler runs. That's the whole point, but it's also the number-one way people cook their own GPU and walk away confused. Check the estimate, mark groups that should only pick once, and set max_prompts deliberately. Connect model and clip and each generated prompt can also apply its own <lora:name:weight> tags before encoding - handy when different combinations select different LoRAs, though it makes each run slower.

Install and troubleshooting

Install is the same for the whole pack: ComfyUI Manager → search "Prompt Palette", or cd ComfyUI/custom_nodes && git clone https://github.com/z3rofeels/comfyui-promptpalette then restart. The only Python deps are PyYAML and typing-extensions - no model downloads, no torch shenanigans. Wildcards live in ComfyUI/wildcards/ (nested .txt/.yaml, referenced as __characters/monsters__). If the custom UI doesn't appear after updating, hard-refresh the browser (Ctrl+Shift+R) - and note the repository folder must stay named comfyui-promptpalette.

Honest take: this node is niche. The author says so himself - the base Prompt Palette is the everyday tool; Combinatorial is for test matrices and character-reference sweeps. But when you need one, "every subject × outfit × location" in a single run is exactly the thing A1111 users keep asking for in 2026 and rarely get in ComfyUI.

CategoryPromptPalette

Inputs (8)

NameTypeDefaultDescription
textSTRINGWildcard-aware source prompt expanded by this batch node.
modeCOMBOrandomGenerate independent random prompts or expand every combination.
countINT101–5000Random mode only; number of prompts to generate.
seedINT00–18446744073709550000Base seed for deterministic wildcard resolution.
seed_modeCOMBOsequentialChoose sequential, fixed, or deterministically randomized per-prompt seeds.
max_promptsINT00–5000Combinatorial mode safety cap; 0 uses the resolver default (5000).
clipoptCLIPOptional CLIP input used to encode every generated prompt.
modeloptMODELOptional model input used when applying per-prompt LoRA tags.

Outputs (7)

NameTypeDescription
Model listMODELOne model per prompt, individually patched when LoRA tags are applied.
CLIP listCLIPOne CLIP value per prompt, patched alongside the model when needed.
Conditioning listCONDITIONINGOne encoded conditioning value per prompt when CLIP is connected.
Prompt listSTRINGResolved prompt texts, one per generated item.
Seed listINTResolution seed used for each generated prompt.
Wildcards usedSTRINGWildcard files used during this batch, repeated for list-compatible fan-out.
Prompt metadata (JSON) listSTRINGOne resolved/source metadata record per generated prompt.