Take a yellow and a blue that both declare the same lightness, 50%. Put them side by side. The yellow burns, the blue is almost black.

This is not an optical illusion. Their actual lightness is 0.93 and 0.07, a factor of thirteen, for two values the code declares identical. For twenty years I built palettes on that lie, and I corrected it by eye without ever asking myself why it needed correcting.

What OKLCH changes

In that notation, the declared lightness is the perceived lightness. Two colours at the same value look equally light, whatever their hue.

It sounds like a comfort detail. It is the property that makes everything else computable. A contrast ratio becomes readable directly in the code, without opening a tool: I look at two values and I know whether my text passes. That is the difference between a colour you try and a colour you decide.

The brown I had not seen coming

My dark theme carried a hint of warmth, barely measurable. On a small surface, invisible.

On the background of a whole page, it read as a frank brown. Two reasons, and OKLCH names both: the hue fell squarely in the orange, and at low lightness the eye judges colour far more easily than in full light. The light theme and the dark theme carried the same intent of a warm neutral. Only the dark one shouted it.

Turning the hue towards slate blue was enough. In the old notation I would not have found the culprit, because the number at fault does not exist there: it mixes the purity of a colour and its lightness into a single value, and so says neither.

Accessibility stops being a check

That is the real contribution, and it is a contribution of method. When lightness means something, the legibility threshold becomes a property of the construction, not a check you run at the end hoping it holds.

You still have to aim it at the right place. I had set my contrast against the page background, properly, with measurements to back it. Except that text does not only sit on the page background: it also sits on cards and alternating bands. My text held 4.9:1 on the background and 3.8:1 on the cards, below the threshold, and nothing had flagged it.

The lesson is not in the notation, it is in the use: you measure against the worst background the text meets, never against the main one.

What I take from it

OKLCH is often presented as a wider colour space. That is true, and it is secondary.

What counts is that a colour there finally declares its lightness without lying. Regular ramps, themes that switch without needing realignment, contrasts guaranteed rather than observed: all of it follows from that single piece of honesty.