Free · Harmonies + shades · Click to copy

Color palette generator

Pick a base color and get harmonious schemes (complementary, analogous, triadic, tetradic) plus tints and shades. Spin a random palette and click any color to copy.

Tints & shades

Harmonies

🔒 Everything runs in your browser. Tap any swatch to copy its HEX.

How to build a color palette

Generate a harmonious color scheme from a single base color — perfect for websites, brands, slides and illustrations.

🎨

1. Pick a base color

Use the color picker or paste a HEX value to start.

🌈

2. Explore harmonies

Get complementary, analogous, triadic and tetradic schemes plus tints and shades.

📋

3. Copy any color

Click a swatch to copy its HEX, or spin a fresh random palette.

Good color combinations follow simple relationships on the color wheel: complementary colors sit opposite for contrast, analogous colors sit next to each other for calm, and triadic/tetradic sets are evenly spaced for vibrant, balanced schemes. Tints and shades give you a full range for backgrounds, text and accents. Grab colors from an image with the Color Picker, or build gradients in the Gradient Generator.

The arithmetic behind each scheme

Your base colour is converted from hex into HSL — hue as an angle, saturation and lightness as percentages — and every swatch on the page is that conversion with one number changed. The harmonies rotate the hue and leave saturation and lightness untouched. The tint and shade ramp does the opposite: it holds hue and saturation fixed and steps lightness down from 92% to 20% in nine even stops of nine points each.

SchemeHue offsets from the baseWhat it tends to be used for
Complementary0°, 180°Maximum separation between two colours — an accent against a dominant colour.
Analogous−30°, 0°, +30°Quiet, low-tension schemes where nothing competes for attention.
Triadic0°, 120°, 240°Three-way balance; usually needs one colour to dominate and the other two to be used sparingly.
Tetradic0°, 90°, 180°, 270°Two complementary pairs. The hardest to control — four strong colours rarely all belong.
Tints & shadesHue fixed; lightness 92% → 20%Surfaces, borders, disabled states and text, all provably the same hue.

The random button works differently: it picks a hue at random but constrains saturation to 55–90% and lightness to 45–60%, then builds a five-colour set from an analogous trio, a desaturated complement, and a near-white tint of the same hue. That shape — several close colours, one opposing accent, one near-neutral — is a more usable starting point than five unrelated colours, and the padlock on each swatch keeps the ones you like while you regenerate the rest.

What HSL gets wrong

Equal lightness in HSL is not equal brightness to your eye. This is the single biggest caveat on this page. Rotate the hue at a fixed lightness of 50% and you get a yellow that looks luminous next to a blue that looks nearly black, because HSL's lightness is a simple arithmetic construct rather than a perceptual measurement — human vision is far more sensitive to green than to blue. So a triadic set generated here will be mathematically even and visually lopsided. Expect to hand-correct the lightness of the yellows and cyans downward, and the blues and violets upward. Colour spaces designed for this, such as OKLCH, hold perceived lightness steady across a hue rotation; HSL never has.

"Complementary" here means the RGB complement, not the painter's one. On the HSL wheel, the opposite of red is cyan. On the traditional artist's wheel used in most colour theory teaching, the opposite of red is green. Neither is wrong, but they are different systems and this tool uses the first. If a scheme feels unlike what you expected from a colour-theory book, that mismatch is usually why.

Nothing here checks contrast. The hex label on each swatch flips between black and white at a lightness of 60%, which is a rough legibility hack and not a contrast calculation — it will happily show you a combination that fails accessibility requirements. Colours are also plain sRGB hex, so there is no wide-gamut or P3 output, and the exports name colours color-1 through color-n in display order rather than by role.

Turning a scheme into a usable palette

Start with a base at moderate lightness — somewhere around 45–60% is why the random generator restricts itself to that band. Because the harmonies inherit the base's lightness exactly, a base picked near white or near black produces a harmony set where every colour is near white or near black and the hue differences barely register.

Then split the work. Harmonies give you a hue relationship, not a design system: pick one hue to carry most of the interface, one accent from the harmony row, and derive everything else — surfaces, borders, muted text, hover states — from the tint and shade ramp of the dominant hue. That is what keeps a palette coherent, and it is the reason the ramp has nine steps rather than three. A common working split is roughly 60% dominant, 30% secondary, 10% accent.

Check text contrast before you commit. A pairing that looks fine on a large monitor can be unreadable at body-text size, and the requirement — 4.5:1 for normal text — is a measurement, not a judgement call. Run each foreground and background pair through the contrast checker and adjust with the ramp rather than by inventing new colours.

One detail about the export buttons: they collect every unique swatch currently on the page, deduplicated, in display order — the full nine-step ramp plus all four harmony rows, not just the five random swatches. That is usually around twenty colours. The CSS and SCSS files are meant as a paste-and-rename starting point; give them semantic names as you go, because --color-7 tells nobody anything six months later. If you are working from a photograph instead of a base colour, the image colour palette extractor quantises the image itself, and the gradient generator takes two of these colours and interpolates between them.

Color palette FAQ

What schemes does it create?

Complementary, analogous, triadic and tetradic harmonies, plus a nine-step tint and shade ramp. The harmonies rotate the base hue by 180°, ±30°, 120° and 90° respectively while keeping saturation and lightness fixed; the ramp keeps hue and saturation and steps lightness from 92% down to 20%.

Can I copy colors?

Yes — click any swatch to copy its HEX. The export buttons take the whole set at once as CSS custom properties, SCSS variables, JSON, a PNG strip or a plain list of hex codes.

Is it free?

Yes, and it runs entirely in your browser.

Why does one colour in my triadic set look much brighter than the others?

Because HSL lightness is not perceptual. All three colours share the same lightness value, but your eye is far more sensitive to yellows and greens than to blues, so an even rotation around the hue wheel produces an uneven-looking set. Correct it by hand: pull the yellows and cyans down a few points and lift the blues and violets.

Why is the complement of red cyan and not green?

This tool works on the RGB colour wheel, where hues are 180° apart by hue angle, so red's opposite is cyan. The traditional artist's wheel taught in colour theory puts green opposite red instead. Both are internally consistent; they are simply different models, and the schemes here follow the first.

How many colours does the export actually include?

All of them — every unique swatch shown on the page, in display order, with duplicates removed. That means the nine tints and shades plus each harmony row, typically around twenty colours, rather than only the five random swatches at the top.