UtilToolkits2025-12-17
TL;DR — Build a balanced palette in 60 seconds with the Color Palette Generator (analogous, complementary, triadic, tetradic, monochromatic, OKLCH). Verify every text-on-background pair passes WCAG with the Contrast Checker. Explore relationships visually on the Color Theme Wheel.
Borrowed from interior design and used by almost every well-known design system: 60% dominant (usually a neutral background), 30% secondary (panels, surfaces), 10% accent (CTAs, focus states). Without this ratio, UIs feel either flat or chaotic.
| Harmony | Description | Best for |
|---|---|---|
| Monochromatic | One hue, varied lightness/saturation | Minimal, brand-focused UIs |
| Analogous | Adjacent on the wheel (blue → teal → green) | Calm, cohesive landing pages |
| Complementary | Opposite hues | High-contrast CTAs against background |
| Split-complementary | Base + two adjacent to its complement | Vibrant but not chaotic |
| Triadic | Three evenly spaced hues | Playful brands, dashboards with categories |
| Tetradic | Two complementary pairs | Rich illustration palettes |
A palette that fails WCAG is a palette that legally and practically excludes users. The targets:
The Contrast Checker shows the ratio for any foreground/background pair, with a pass/fail badge. Run every CTA, body text, and link color through it before shipping.
RGB and HSL look familiar but interpolate badly — try going from red to green in HSL and watch it pass through gray. OKLCH (lightness, chroma, hue in OK color space) is perceptually uniform: equal lightness values look equally bright across hues. Every major design system (Tailwind v4, Radix, Open Props) has moved to OKLCH for scales.
:root {
/* OKLCH primary scale - perceptually uniform */
--primary-50: oklch(97% 0.02 250);
--primary-500: oklch(60% 0.18 250);
--primary-900: oklch(20% 0.10 250);
}
#111 or oklch(20% 0 0).5–9 is the sweet spot: one neutral scale (gray, 9 steps), one primary scale (9 steps), one accent, and 2–3 semantic colors (success, warning, danger).
HSL is older and not perceptually uniform — equal-L values can look very different in brightness. OKLCH fixes this. Browser support is now universal.
Run every text-on-background combination through the Contrast Checker. Aim for 4.5:1 minimum on body text.
Yes — the generator outputs a ready-to-paste colors object for tailwind.config.js.
Check color contrast accessibility (WCAG).
Generate beautiful color palettes from a base color including complementary, hex, and harmonious schemes.
Interactive color wheel to generate color themes with harmony presets (analogous, complementary, triadic, and more).