Color Palette Generator
A color theory palette generator that speaks to your prompt, not just to your eyes
- palette_string
- color_1
- color_2
- color_3
- color_4
- color_5
- color_6
- color_7
- color_8
- primary
- secondary
- accent
- neutral
- metallic
- palette_preview
- palette_info
You can pick colors by eye. The reason to reach for this node is that it hands colors to your prompt - it generates a harmonious palette and outputs the colors as named strings that drop straight into a text encoder. "A red dress" becomes a deliberate, coordinated choice from a palette that a second node, Prompt Color Replace, injects into every outfit line with the same names. If you've ever generated five images of the same character wearing "navy," "teal," and "dark blue" that all rendered as the same blob of blue, this is the fix: one palette, one vocabulary, consistent color across an entire batch.
How it works
It applies color theory the old-fashioned way. Pick a harmony_type - analogous (neighboring hues, calm), complementary (opposite hues, bold), triadic, tetradic, split-complementary, monochromatic - or leave it on auto and it picks based on the seed. Then it pulls from a built-in catalog of 161 fashion-relevant named colors, filtered through your sliders: vibrancy (saturation), contrast (lightness spread), warmth (cool-to-warm bias), and neutral_ratio (how many desaturated grays/beiges sneak in). There are also 14 style_presets - beach, cyberpunk_neon, evening_gala, office_professional, pastel_dream - that bias the whole selection toward a mood. include_metallics reserves a slot for gold/silver/bronze, which is genuinely handy for jewelry and accessories.
The magic is reproducibility: same seed + same settings = same palette, every time. That's what makes it usable across a multi-image character set where every image must share the wardrobe colors.
The outputs that matter
The star is palette_string - a comma-separated string of color names that wires directly into Prompt Color Replace. Beyond that you get individual outputs: color_1 through color_8, and the semantic roles primary, secondary, accent, neutral, metallic. The roles map to positions (position 1 = primary, position 2 = secondary, and so on), so a 5-color palette covers all five roles. palette_preview is an IMAGE - a swatch you can actually look at, or even feed into Person Selector Multi's outfit-palette input if you're using the face tools. palette_info is a human-readable dump of what was chosen and why.
There's also a palette_source mode worth knowing: set it to from_file and it reads from a wildcard_file - a text file of palettes, one comma-separated line each - and picks a line by palette_index (-1 = random by seed). Handy if you want to lock a specific curated list and never trust the generator.
Installing
This is the zero-drama corner of the pack:
cd ComfyUI/custom_nodes
git clone https://github.com/ping1979ping/comfyui-FVMtools
No Python deps beyond numpy (already in ComfyUI), no model downloads, nothing to auto-fetch. Restart and it's live. If you're only interested in the color/fashion side, you never need the insightface stack at all.
The honest take
It's a flavor generator with training wheels, not a replacement for a designer's eye. The auto harmony is random-ish per seed, so "harmonious" sometimes lands on combinations that look muddy - but that's precisely what vibrancy, contrast, and the style presets are for, and why the preview swatch is there. Where this node shines over a hand-typed palette is scale and consistency: 20 images, 3 characters, one seed-managed color story. For a single one-off image, just type the colors.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| seed | INT | 00–4294967295 | Random seed for deterministic palette generation. Same seed + same settings = same palette every time. |
| num_colors | INT | 52–8 | Number of colors to generate (2-8). 5 is recommended — maps to the semantic roles: primary, secondary, accent, neutral, metallic. Extra colors are available as color_6, color_7, color_8. |
| harmony_type | COMBO | Color harmony algorithm for hue selection. auto — picks a harmony type based on seed analogous — neighboring hues (calm, cohesive) complementary — opposite hues (bold contrast) split_complementary — one hue + two adjacent opposites triadic — three evenly spaced hues (vibrant) tetradic — four hues in two complementary pairs monochromatic — single hue, varied lightness/saturation | |
| style_preset | COMBO | Visual style that influences color selection. Each preset defines preferred hue ranges, saturation, and lightness profiles. E.g. 'pastel' favors light desaturated colors, 'gothic' favors dark reds/purples/blacks. | |
| vibrancy | FLOAT | 0.500–1 | Color saturation intensity. 0.0 = muted, desaturated (grays, pastels) 0.5 = balanced (default) 1.0 = vivid, highly saturated colors |
| contrast | FLOAT | 0.500–1 | Lightness spread between colors. 0.0 = all colors at similar brightness 0.5 = moderate light/dark variation (default) 1.0 = maximum spread (very light + very dark colors) |
| warmth | FLOAT | 0.500–1 | Color temperature bias. 0.0 = cool (blues, greens, purples) 0.5 = neutral (default) 1.0 = warm (reds, oranges, yellows) |
| neutral_ratio | FLOAT | 0.40–1 | Proportion of neutral/muted colors in the palette. 0.0 = all colors are chromatic (vibrant) 0.4 = ~40% neutrals like gray, beige, cream (default) 1.0 = mostly neutrals (subdued palette) |
| include_metallics | BOOLEAN | true | Include metallic colors (gold, silver, bronze, rose-gold, etc.). When enabled, one palette slot is reserved for a metallic color and output as the 'metallic' role. Useful for jewelry/accessories. |
| palette_sourceopt | COMBO | generate — create palette from seed + settings (default) from_file — pick a palette from the wildcard_file text below | |
| wildcard_fileopt | STRING | Manual palette list (one per line, comma-separated color names). Only used when palette_source = 'from_file'. Example: navy-blue, soft-pink, charcoal, gold, cream forest-green, burgundy, tan, silver, ivory Use palette_index to pick a specific line, or -1 for random by seed. | |
| palette_indexopt | INT | -1-1–9999 | Which line to pick from wildcard_file. -1 = random line based on seed (default) 0+ = specific line number (wraps around if too large) |
Outputs (16)
| Name | Type | Description |
|---|---|---|
| palette_string | STRING | — |
| color_1 | STRING | — |
| color_2 | STRING | — |
| color_3 | STRING | — |
| color_4 | STRING | — |
| color_5 | STRING | — |
| color_6 | STRING | — |
| color_7 | STRING | — |
| color_8 | STRING | — |
| primary | STRING | — |
| secondary | STRING | — |
| accent | STRING | — |
| neutral | STRING | — |
| metallic | STRING | — |
| palette_preview | IMAGE | — |
| palette_info | STRING | — |