Controls perceived brightness. 0 is absolute black, 1 is white.
Perceptually uniform: stepping from 0.4 to 0.5
produces the same visual change as from 0.7 to 0.8.
Lightness · Chroma · Hue
Every OKLCH color is defined by three independent values. Unlike HSL, each axis controls exactly one perceptual property without affecting the others.
Color intensity — similar to saturation but in absolute perceptual units.
0 always produces a neutral gray. The maximum varies by hue
and available gamut.
The hue angle in degrees. 0° red, 120° yellow-green,
180° cyan, 264° blue, 300° magenta.
Changing only H never affects perceived brightness.
Color Picker
Adjust the three axes and observe how each one modifies the color in a predictable, independent way.
Perceptual Uniformity
With the same Lightness value in OKLCH, every hue is perceived at the same brightness level. In HSL, yellow always appears lighter than blue.
Gradients
The interpolation space determines which colors are generated between stops. OKLCH preserves saturation; other methods produce muddy midpoints or unwanted rainbows.
/* ✓ OKLCH — saturation preserved throughout */ background: linear-gradient(to right in oklch, oklch(0.65 0.22 45), oklch(0.65 0.22 264) ); /* También con color-mix */ color: color-mix(in oklch, red 60%, blue);
Our Palette in OKLCH
The system colors expressed in OKLCH. Hover each step to see its exact value. The 500 level is the central chromatic reference for each family.
CSS Syntax
OKLCH is a native CSS function. No preprocessor or external library required.
/* Basic value */ color: oklch(0.7 0.15 220); /* With percentages */ color: oklch(70% 0.15 220); /* With alpha */ color: oklch(0.7 0.15 220 / 50%);
/* color-mix in OKLCH */ color: color-mix( in oklch, oklch(0.7 0.2 145) 40%, oklch(0.7 0.2 264) ); /* Gradient with interpolation */ background: linear-gradient(in oklch, oklch(0.8 0.1 145), oklch(0.8 0.1 264));
/* Dynamic custom properties */ :root { --hue: 264; --brand: oklch( 0.65 0.2 var(--hue)); } /* Hover — only lower Lightness */ :hover { background: oklch(from var(--brand) calc(l - 0.08) c h); }
/* Robust fallback pattern */ color: #127ae6; /* sRGB fallback */ color: oklch(0.52 0.19 254); /* Or with @supports */ @supports ( color: oklch(1 0 0) ) { color: oklch(0.52 0.19 254); }
Browser Support
OKLCH is supported in all modern browsers since 2023. Over 92% of users have native support today.