Color Palette Generator

Generate a 6-step color palette (50, 100, 300, 500, 700, 900) with HEX values from any base color. Copy one shade or all as CSS variables.

Everything happens locally in your browser. Nothing is uploaded or transmitted.

#6366f1

Your base color is the 500 step. Lighter steps (50, 100, 300) interpolate toward white; darker steps (700, 900) interpolate toward black, in HSL space.

50
#000000
100
#000000
300
#000000
500
#000000
700
#000000
900
#000000

How It Works

Design systems rarely use a single color — they use a ramp of related shades for backgrounds, borders, accents, hovers and text. This generator builds that ramp from one base color by interpolating in HSL (hue, saturation, lightness) space, where "lighter" and "darker" behave the way our eyes expect.

HSL interpolation
Hue, saturation and lightness are separated, so shading a color means moving only the lightness (and, toward white, the saturation) while the hue stays fixed. That is what keeps a ramp looking like one color family instead of drifting into adjacent hues the way naive RGB mixing can.
Lighter steps (50, 100, 300)
These interpolate the base color toward white: lightness climbs from the base value to 100% and saturation fades toward zero. The highest step (50) ends up almost white with a faint tint of the original hue — ideal for backgrounds and subtle fills.
Darker steps (700, 900)
These interpolate toward black: lightness drops from the base value toward 0% while hue and saturation are preserved. Step 900 lands near-black with the base hue's undertone — the classic choice for text and dark surfaces.

Frequently Asked Questions

How are the six shades generated?

Your base color becomes the 500 step. The three lighter steps (50, 100, 300) are made by interpolating in HSL space toward white — lightness rises and saturation fades proportionally. The two darker steps (700, 900) interpolate toward black — lightness drops while hue and saturation are kept. The result is a smooth, predictable ramp around your base color.

Why six steps instead of a full 0–1000 scale?

Most design systems only need a handful of stops per color: a near-white tint, a light tint, a soft accent, the primary color, a darker hover state and a near-black shade for text. Steps 50, 100, 300, 500, 700 and 900 cover exactly those jobs without the noise of a 10- or 12-stop scale.

Which step should I use for what?

500 for primary actions and accents, 700 for hover and active states, 50 or 100 for subtle backgrounds and fills, 300 for borders and disabled states, and 900 for text on light backgrounds. This is the same role split most token systems (like Tailwind's) use.

Does the tool upload my color anywhere?

No. A color value is just three numbers. Everything — HSL conversion, interpolation, HEX output and CSS variable generation — happens in JavaScript inside your browser. Nothing is stored or transmitted.

Can I edit individual shades?

Not directly — the whole ramp is derived from the base color so the steps stay consistent with each other. To change a shade, pick a different base color (or nudge it) in the color picker and the entire palette regenerates instantly.