Comparison
Lab vs OKLab
Same shape: a lightness axis and two opponent axes. Forty-four years apart, and fitted to different data.
Short answer. Build new work in OKLab — it fixes CIELAB’s blue-region hue shift, which is the failure you will actually hit when interpolating — and keep CIELAB where ΔE and existing colour-management tooling require it.
CIELAB, standardised in 1976, was the first widely-adopted attempt at a space where numeric distance approximates perceived difference. It succeeded well enough to become the foundation of colour difference work across print, textiles and manufacturing, and every ΔE formula in common use is defined over it.
Its known weakness is hue uniformity in the blue region. Interpolate from blue toward white in CIELAB and the path bends through purple — not subtly, and not because of anything you did. The Abney effect is visible in the space itself. L* also tracks perceived lightness less closely than later models manage.
OKLab, published in 2020, keeps the shape and refits it. It converts to LMS cone responses, applies a cube root, then a matrix — a structure closer to the visual system than CIELAB's piecewise transfer function. The practical result is that interpolation stays on a sensible path, which is why CSS chose oklab as the recommended interpolation space rather than lab.
CIELAB vs OKLab, side by side
| Dimension | CIELAB | OKLab |
|---|---|---|
| Published | 1976 (CIE) | 2020 (Björn Ottosson) |
| Lightness range | L* 0–100 | L 0–1 |
| Hue uniformity | Poor in blue; visible purple shift | Substantially better across the wheel |
| Interpolating to white | Drifts purple from blue | Stays on hue |
| ΔE formulas | ΔE76, ΔE94, ΔE2000 all defined on it | No standardised ΔE; Euclidean distance works well |
| Industry tooling | Universal in print and manufacturing | Mostly web and design tooling |
| CSS | lab() and lch() | oklab() and oklch(), the recommended default |
| Best used for | Colour difference, print workflows | Generating ramps, gradients, interface color |
Where this comparison is unfair
CIELAB is not obsolete. If you are computing ΔE against a tolerance, working with ICC profiles, or exchanging measurements with anyone in print or manufacturing, CIELAB is the language and OKLab is not. Substituting it would mean your numbers stop meaning what everyone else's mean.
OKLab is also not perfect — it is a better fit, not a solved problem. It is fitted primarily to sRGB-range data, and very saturated wide-gamut colors are where its uniformity is least tested.
Frequently asked questions
What is the difference between Lab and OKLab?
Both are perceptual opponent-axis spaces with the same overall structure. OKLab is a 2020 refit with markedly better hue uniformity — most visibly, interpolating from blue toward white does not drift purple the way it does in CIELAB.
Which should I use for gradients?
OKLab. It is why CSS added linear-gradient(in oklab, …), and it removes both the muddy midpoint of gamma-encoded sRGB and the purple drift of CIELAB in one move.
Does OKLab have a delta E?
Not a standardised one. Because the space is closer to uniform, plain Euclidean distance in OKLab is a reasonable difference measure, but if you need a number others will recognise — a print tolerance, a QA threshold — use ΔE2000 over CIELAB.
Is OKLCH the same as OKLab?
Same space, different coordinates. OKLab uses two opponent axes, a and b; OKLCH reads the same point in polar form as chroma and hue. Use OKLCH when you want to adjust hue or colourfulness independently, OKLab when you are interpolating or doing arithmetic.
Try it yourself
Definitions
- CIELABCIELAB is the 1976 CIE perceptual color space, with an L* lightness axis and a* and b* opponent axes, and it is the basis of the ΔE color difference metrics.
- OKLabOKLab is a perceptual color space with one lightness axis and two opponent axes, fitted in 2020 to improve on CIELAB’s hue uniformity.
- OKLCHOKLCH is the cylindrical form of OKLab: perceptual lightness, chroma as an absolute distance from gray, and hue as an angle in degrees.
- Delta EDelta E (ΔE) is a measure of how different two colors look, defined so that roughly 1.0 is the smallest difference a person can notice.
- InterpolationInterpolation is computing the colors between two endpoints, and the space you do it in determines whether the result looks right.
Further reading
Other comparisons
- OKLCH vs HSLBoth are cylindrical: a hue angle, a colourfulness axis and a lightness axis. Only one of them measures lightness in a way your eye agrees with.
- WCAG contrast vs APCAOne is the standard you will be measured against. The other is the better model of what your eye is doing. You need both, for different reasons.
- HEX vs RGBThis is not a question about color. Both are sRGB, both carry exactly the same information, and every hex code has an identical rgb() form.
- RGB vs CMYKOne model adds light, the other removes it. That is not a detail — it changes which colors are reachable and which conversions can be trusted.
- sRGB vs Display P3P3 covers around 25% more area than sRGB. Almost all of it is in the reds, oranges and greens; there is very little extra blue.