HSL's lightness is just a mathematical average of sRGB values, so it drifts from actual perceived brightness — pure yellow already looks bright at L=50%, pure blue still looks dark at L=50%. OKLCH sidesteps this by expressing the perceptually-modeled OKLab space in cylindrical coordinates: L for lightness, C for chroma, H for hue.
In CSS it looks like oklch(62% 0.15 250). Sweep H while holding L constant and brightness stays far more even than the same experiment in HSL — which matters a lot when you want several palette colors to carry the same visual weight.
OKLCH can also reach beyond sRGB into wider gamuts like P3 on capable displays. Support is solid across modern browsers since 2023, but ship an HSL fallback if you still need to support older ones.
When to use
Use it for palettes or token systems that need a consistent brightness feel across many hues.