Generate harmonious color palettes in 6 modes — complementary, analogous, triadic, split-complementary, tetradic, or monochromatic — from any base color.
:root {
--color-1: #6366f1;
--color-2: #f16366;
--color-3: #66f163;
}A color palette gives an interface a repeatable set of colors for backgrounds, text, borders, actions, and accents. This generator starts with one HEX color and calculates related colors in HSL space. HSL separates hue from saturation and lightness, which makes harmony relationships easier to understand and adjust than raw RGB values.
Choose a base color, select a harmony, then click any swatch to copy its HEX value. Every swatch also shows RGB and HSL equivalents. Use the CSS variables output to move the palette into a stylesheet or design token file.
| Harmony | Hue relationship | Common use |
|---|---|---|
| Complementary | 180° apart | High-contrast accents |
| Analogous | Neighbouring hues | Calm, cohesive interfaces |
| Triadic | 120° apart | Balanced variety |
| Split-complementary | Base plus two near its complement | Contrast with less tension |
| Tetradic | Four hues in 90° steps | Rich, multi-purpose systems |
| Monochromatic | Same hue, varied lightness | Simple, restrained hierarchy |
Complementary palettes work well when one color should draw attention. Use an analogous palette when a page needs continuity between sections. Triadic and tetradic palettes can support dashboards or illustrations, but assign one dominant color and reserve the others for supporting roles.
HEX is compact and common in CSS:
:root {
--color-1: #6366f1;
--color-2: #f16666;
}
RGB represents red, green, and blue channel values:
.button {
background: rgb(99, 102, 241);
}
HSL expresses hue in degrees plus saturation and lightness percentages:
.button:hover {
background: hsl(239°, 84%, 67%);
}
The formats describe the same colors. Choose the one that matches the API or design tool where you will use the value.
Generated relationships are a starting point, not a complete accessibility system. Check contrast for normal text, large text, focus indicators, and disabled states before shipping.
CSS variables can be consumed directly from a component:
const styles = {
backgroundColor: "var(--color-1)",
color: "var(--color-2)",
};
No. Calculations happen in the browser. The selected HEX value is not sent to the server.
Yes. Three-digit values such as #09f are expanded to their six-digit form
before the palette is calculated.
Use complementary or split-complementary for contrast, analogous for cohesion, triadic for balanced variety, and monochromatic for a restrained visual scale.
This website and utility are provided for general informational, calculation, and educational purposes only. Always verify critical computation outputs prior to professional deployment or financial use. See our Terms of Service and Privacy Policy for full governance details.