Color pickers are everywhere. Color systems are not. As a designer in 2026 you don't need another rainbow wheel — you need a tool that turns one accent decision into a defensible system: a primary, a complementary call-to-action, a quiet neutral, and a warning hue, all spaced by harmony rules and all hitting WCAG AA contrast against your dark and light surfaces. That's what this generator does. Pick the seed, get the system, hand it to engineering without a Figma round trip.
Most generators stop at the swatches. The TinyTools palette tool keeps going: it shows the contrast ratio for every pair, flags any that fail AA, and serializes the result as Tokens Studio JSON, CSS custom properties, a Tailwind extend.colors block, and SCSS variables in the same view. Designers ship a system; engineers ship the same system; nobody re-types hex codes by hand.
Client meeting in an hour, brand has nothing but a logo color. Drop the logo hex in, choose split-complementary, and you have a defensible primary, two accents, and a neutral ramp before the meeting. You'll iterate later — but you walk in with a system, not a single swatch.
Most brands shipped in 2018 only have a light-mode palette. Switching to dark requires lightness inversion plus chroma reduction (full-saturation reds look like blood at 4am). Use the oklch() output mode to keep the hue stable and shift only L and C — exactly the move the iOS and Android system palettes use.
Inheriting a Figma library where 11 of the 28 button states fail AA. Paste each token into the contrast checker view, get a sortable list of pass/fail with the recommended adjustment per token. Comes out as a CSV your PM can paste into a Linear ticket.
Designers shouldn't have to know what tailwind.config.js looks like — but if the export comes pre-formatted, the dev gets the file and the designer stays in design tools. The Tailwind tab outputs the exact extend.colors block; the CSS tab outputs :root custom properties; the JSON tab matches the W3C Design Tokens Format.
Charts in product dashboards need 6-8 distinct hues that survive printing in grayscale and remain distinguishable for the ~8% of male users with red-green color vision deficiency. The triadic + analogous double-row gives you eight colors that pass both filters, and the export tags each one with a CVD-safe label.
| Tool | Harmony rules | WCAG built in | Figma export | Code tokens | Free |
|---|---|---|---|---|---|
| TinyTools palette | 5 at once | Yes | Tokens Studio JSON | CSS, Tailwind, SCSS | Yes |
| Coolors | One row at a time | Pro tier | Plugin (Pro) | CSS only (Pro) | Limited |
| Adobe Color | Harmonies | Yes | Adobe-only | No | With account |
| Realtime Colors | Manual | Yes | No | CSS only | Yes |
| Material Theme Builder | Tonal palette | Yes | Material plugin | M3 only | Yes |
Harmony rules are math, not magic. They are deterministic angle rotations on the color wheel. From a single seed at hue H:
// Step 1 — Tokens Studio JSON (paste into Figma)
{
"color": {
"brand": { "value": "#a855f7", "type": "color" },
"accent": { "value": "#ec4899", "type": "color" },
"warn": { "value": "#f59e0b", "type": "color" },
"success":{ "value": "#10b981", "type": "color" }
}
}
// Step 2 — CSS custom properties (engineering's copy)
:root {
--brand: #a855f7;
--accent: #ec4899;
--warn: #f59e0b;
--success: #10b981;
}
// Step 3 — Tailwind extend.colors (no manual translation)
theme: { extend: { colors: {
brand: '#a855f7',
accent: '#ec4899',
warn: '#f59e0b',
success: '#10b981',
}}}
Hex and HSL both lie about perceived lightness. #0000ff (blue) and #ffff00 (yellow) both have HSL lightness 50% but read as wildly different on screen. OKLCH uses a perceptually uniform L axis: same L means same perceived brightness across all hues. That's why every swatch in this generator also exposes an OKLCH equivalent — for projects that have moved past Tailwind v3 hex into v4's CSS-first theming, you can paste OKLCH straight in.
#000 on #a855f7 reads as 5.7:1 — barely passing AA, and it looks dirty. The tool suggests #15151f instead, lifting the contrast and visual quality.#ff0000 blooms on OLED. The generator caps chroma when you're in dark mode and proposes #ef4444 or warmer.Pick an accent. Get five harmonies, contrast scores on every pair, and exports for Figma + CSS + Tailwind + SCSS in one click.
Open the Color Palette Generator →No — it feeds them. Generate the palette here, export the Tokens Studio JSON, import into Figma. Your color styles stay where they are; the tool just removes the part where you tweak hex values by hand for an hour.
Drop the locked hex in as the seed. The generator builds the supporting palette around it. The seed is preserved exactly; only the harmony partners are computed.
Yes — outputs are MIT-style, no attribution required, no watermark. Use commercially without asking.
Two solid references: the Interaction Design Foundation's color theory primer and Erik Kennedy's Learn UI Design writeups. Both go deeper than this page can.