Why use this tool?
- Build light and dark variants with consistent token names.
- Choose an anchor step for an existing brand color.
- Compare black and white text contrast before assigning a step to a component.
Build an 11-step color scale from a brand color using OKLCH. Compare contrast against black and white, then export CSS, Tailwind v3/v4, SCSS, or JSON.
Runs locally in your browser
Saturation 69 percent, brightness 90 percent, hue 243 degrees.
Base color reads as OKLCH lightness 51.1% with chroma 0.230.
| Step | HEX | On white | On black | Text on it |
|---|---|---|---|---|
| brand-50 | #F2F6FF | 1.08 | 19.40AA | Black · 19.4:1 |
| brand-100 | #E5EDFF | 1.17 | 17.89AA | Black · 17.9:1 |
| brand-200 | #CFDCFF | 1.37 | 15.33AA | Black · 15.3:1 |
| brand-300 | #B3C2FF | 1.74 | 12.08AA | Black · 12.1:1 |
| brand-400 | #929BFF | 2.51 | 8.35AA | Black · 8.4:1 |
| brand-500 | #7677FF | 3.59 | 5.85AA | Black · 5.9:1 |
| brand-600 | #6159FF | 4.79AA | 4.38 | White · 4.8:1 |
| brand-700Base | #4F46E5 | 6.29AA | 3.34 | White · 6.3:1 |
| brand-800 | #3D34B7 | 8.85AA | 2.37 | White · 8.8:1 |
| brand-900 | #2F2892 | 11.42AA | 1.84 | White · 11.4:1 |
| brand-950 | #161154 | 16.90AA | 1.24 | White · 16.9:1 |
The same steps used the way a design system would.
Tinted panel
Background brand-50, border brand-200, text brand-900.
Dark surface
Background brand-950, heading brand-50, body brand-300.
@theme {
--color-brand-50: #F2F6FF;
--color-brand-100: #E5EDFF;
--color-brand-200: #CFDCFF;
--color-brand-300: #B3C2FF;
--color-brand-400: #929BFF;
--color-brand-500: #7677FF;
--color-brand-600: #6159FF;
--color-brand-700: #4F46E5;
--color-brand-800: #3D34B7;
--color-brand-900: #2F2892;
--color-brand-950: #161154;
}Complete tool guide
Create an 11-step color scale from one brand color, with steps from 50 through 950. The generator uses an OKLCH lightness and chroma curve, then converts the results into sRGB for preview and export. Use the ramp as a starting point for interface tokens.
Your input is processed in the current browser tab and is not sent to the application server.
Set the base color with the picker, or paste an existing brand value.
Name the scale, and choose which step the base color should occupy.
Adjust the hue shift and chroma if the light or dark end needs warming.
Copy the export format your project uses.
Auto selects the step closest to the base color’s lightness. With hue shift at 0 and chroma at 100%, the anchor preserves the exact base value.
Hue shift rotates colors across the ramp, and chroma changes color intensity. These adjustments can also change the anchor color; compare its value after editing.
Choose CSS variables, SCSS, JSON, Tailwind v4 @theme, or the Tailwind v3 configuration snippet. Previewed OKLCH values describe the resulting colors; the token exports use HEX.
Start with: #4F46E5, scale name brand
--brand-500: #4F46E5;The output is one declaration from the generated scale. Changing hue shift or chroma removes the exact-value guarantee.
Start with: #4F46E5 anchored at 500, name brand
@theme {
--color-brand-500: #4F46E5;
}This excerpt registers a theme color usable through utilities such as bg-brand-500. The full output also includes the other ten steps.
Numbers order a ramp from light to dark. They are naming conventions, not contrast grades. A 500 step in one hue can have very different contrast from a 500 step in another.
A fixed lightness and chroma curve is adjusted around the selected base. Hue and chroma controls tune the results. This is a generated starting point, not an exact copy of every Tailwind color family.
Each row compares the color against white and black. Read the applicable ratio rather than selecting text color by step number. Test other backgrounds with the contrast checker.
Exact preservation applies at the anchor when hue shift is 0 and chroma is 100%. Other settings modify generated colors, including the anchor.
The current token exports use HEX. The preview shows OKLCH values for inspection; convert a selected step with the Color Converter if you need its OKLCH notation.
No. Step numbers do not establish contrast. Use the white-text ratio for that specific color and the threshold required by your text size.
Keep working
Continue with another focused tool from the same collection.