⚗️🔬| Palette Library v2.0
Pick a color palette without writing a color novel
- palette
- PALETTE
Z-Image is a weirdly color-literate model. Its Qwen3-4B text encoder responds to plain descriptive language - "muted teal, warm tungsten highlights, dusty beige backdrop" - far better than it does to SD-era tags like "colorful" or "vibrant." But writing a small color essay into every prompt is exactly the kind of thing you stop doing by the third generation, and then every image comes out in the same default palette. Palette Library v2.0 is Martin Rizzo's fix: a picker for it.
It ships in ComfyUI-ZImagePowerNodes, the pack from the same Martin Rizzo who built the famous Amazing Z-Image Workflow. And full transparency before you get excited: this node does nothing by itself. It's a one-input, one-output selector. All it does is hand a chosen palette object to the Style + Prompt Encoder (the experimental X2.2 Advanced node), which is the thing that actually turns that palette into prompt text.
How it works
Version 2.0 ships 18 predefined palettes, and each one is exactly four colors, ordered from brightest to darkest. They're defined in plain-text files inside the pack (styles/palettes-v20.pal.txt, in the @PALETTES format), and every color carries four pieces of data:
- a hex code,
- a plain-English name,
- an optional texture word ("velvet", "matte"),
- an optional object word.
When the encoder applies a palette, it resolves those names into the prompt, so you get "deep indigo velvet" rather than a bare #2A2A5C. That's the whole trick: converting color numbers into the descriptive words the Qwen3-4B encoder actually understands. It's a small move, but it's the difference between "the palette vaguely applied" and a mood that holds across a whole batch.
The input that matters
There's only one, which is refreshing. The palette input (type ZIPN_PREDEFINED_PALETTE) isn't a plain dropdown - it opens a searchable gallery dialog with thumbnail previews. Handy when you're torn between two palettes and can't remember which is "Noir Film" and which is "Ocean Breeze."
The output is PALETTE, typed ZIPN_CUSTOM_PALETTE. Notice the switch from "predefined" to "custom" - pack-internal types, so the only sensible place to plug it is the palette input of StylePromptEncoderX22Advanced. Don't expect a generic ComfyUI node to know what to do with a palette object.
Installing it
Install the pack once and all three of these nodes come with it:
cd ComfyUI/custom_nodes
git clone https://github.com/martin-rizzo/ComfyUI-ZImagePowerNodes.git
Then restart ComfyUI. Easier path: ComfyUI Manager → Custom Nodes Manager → search "Z-Image Power Nodes" → Install. Good news for a change: this pack has zero extra Python dependencies - no requirements.txt, nothing to pip install. The real weight is the models it assumes you already have for Z-Image: the Turbo diffusion model, the Qwen3-4B text encoder, and the Flux 1 VAE (ae.safetensors, 335 MB). If you use GGUF checkpoints you'll also need the ComfyUI-GGUF pack, since ComfyUI doesn't load GGUF natively.
Where people get burned
The honest caveat: this node sits in the ⚡Z-Image/__experimental category, and its own description carries the author's warning that experimental nodes can change or be removed without notice. It's also brand new with essentially zero community adoption yet. Treat it as a preview of where the pack's style system is heading, not a stable API you should build a workflow on top of today.
And one type-check gotcha: if you wire a palette into something that isn't the encoder and ComfyUI complains about the ZIPN_CUSTOM_PALETTE type, that's not a bug - it's doing exactly what it should. These custom types only mean anything inside this pack.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| palette | ZIPN_PREDEFINED_PALETTE | The color palette to use to enhance the prompt's visual description. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| PALETTE | ZIPN_PALETTE | The selected color palette. |