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 tool is provided for general informational and utility purposes only. Results may be inaccurate, incomplete, outdated, or contain errors. Always verify results before relying on or using them.
Some tools may use AI, automated processing, third-party services, or server-side processing. Do not rely on these tools as a substitute for professional advice.
Use at your own risk. BestToolOnline makes no guarantees regarding the accuracy, reliability, completeness, availability, or suitability of results, to the maximum extent permitted by applicable law.
See our Terms of Service and Privacy Policy for complete details.