Short answer
OKLab is a perceptual colour space published by Björn Ottosson in December 2020 and OKLCH is its polar form. It has the same shape of idea as CIELAB — a lightness axis and two opponent colour axes — but was fitted to modern perceptual data so that hue stays steadier as colours are lightened, darkened or desaturated, particularly for blues, while remaining simple enough for image processing. CSS Color 4 adopted it, which is why it is now in every major browser.
Convert any colour into this system with the colour converter
Ottosson set out to make a space that predicts perceived lightness, chroma and hue well, behaves smoothly for blending and gradients, and is cheap to compute. The structure is deliberately simple: linear sRGB (or XYZ) goes through one 3×3 matrix to approximate cone responses, each is cube-rooted, and a second 3×3 matrix gives L, a and b. The matrices were optimised against three data sets: pairs of colours generated with the CAM16 appearance model at constant lightness and at constant chroma, and the Ebner–Fairchild data on colours of constant perceived hue — the same hue data used to derive the earlier IPT space. The reference white is D65.
The headline improvement is hue linearity. In CIELAB, reducing the chroma of a saturated blue drifts it towards purple; in OKLab, the same operation holds hue much more closely. Blends are the most visible consequence: the table on this page computes the midpoint of three two-colour blends in raw sRGB numbers, in CIELAB and in OKLab. The CIELAB midpoint of blue and white is a lilac; OKLab's stays blue. Lightness is also better balanced for saturated colours. OKLab keeps CIELAB's convenience of Euclidean distances, and ΔEOK — straight-line distance in OKLab — is what CSS uses to judge when gamut mapping is close enough.
OKLab is a colour space, not a colour-appearance model: it has no inputs for surround, adaptation level or viewing conditions, so it cannot predict simultaneous contrast or how a colour looks in dim light. It was optimised for colours in a display-like range and is less validated for very dark, very bright or HDR colours. It is not the basis of industrial tolerances, contracts or instruments, which remain in CIELAB and CIEDE2000. And its self-published origin means its performance claims come from its author's comparisons; the broad adoption since then is what has tested it in practice.
CSS needed a space for three jobs: letting authors specify colours beyond sRGB in human terms, interpolating gradients and mixes without muddy or purple middles, and mapping out-of-gamut colours to displayable ones without shifting hue. OKLab and OKLCH do all three acceptably with very little computation, and CSS Color 4 uses OKLCH as the space for its gamut-mapping algorithms while CSS Color 5 makes OKLab the default for color-mix(). For practical palette-building advice, see the designer-focused guide in Digital Colour.
| Blend | Averaging sRGB numbers | CIELAB midpoint | OKLab midpoint |
|---|---|---|---|
| Blue → white | #8080ff (L 0.66, C 0.184) | #b38bff (L 0.72, C 0.167) | #74a3ff (L 0.72, C 0.144) |
| Red → green | #808000 (L 0.58, C 0.127) | #c9ab00 (L 0.75, C 0.153) | #d0a800 (L 0.75, C 0.153) |
| Blue → yellow | #808080 (L 0.60, C 0.000) | #ca8aaa (L 0.71, C 0.088) | #6cabc7 (L 0.71, C 0.077) |
Why: Palette steps computed in CIELAB or HSL.
Fix: Generate the steps in OKLCH at constant hue.
Why: One tool uses a different OKLab matrix version or clips out-of-gamut values before converting.
Fix: Compare with a converter that follows CSS Color 4 and check whether the colour is inside sRGB.
Each statement is labelled by kind — established fact, a standard’s requirement, observed market data, a convention, or Colourwise’s own interpretation or analysis — with the strength of the evidence behind it.
FactModerate evidence
OKLab was published by Björn Ottosson on 23 December 2020, fitted to CAM16-generated data at constant lightness and constant chroma and to the Ebner–Fairchild constant-hue data.
Caveat: Self-published; not a peer-reviewed paper.
Source: A perceptual color space for image processing (Oklab)
StandardStrong evidence
CSS Color 4 defines oklab() and oklch() with a D65 reference white and performs its gamut mapping in OKLCH, using the OKLab distance as the colour-difference measure.
Source: CSS Color Module Level 4
Colourwise analysisModerate evidence
The midpoint of sRGB blue and white computed in CIELAB has an OKLCH hue about 35° towards purple, while the midpoint computed in OKLab keeps the blue's hue.
Based on: Computed by Colourwise; see the midpoint table on this page.
Caveat: OKLCH hue is used as the yardstick, which favours OKLab by construction; the lilac cast of the CIELAB midpoint is nonetheless visible.
Source: A perceptual color space for image processing (Oklab); CIE 015:2018 Colorimetry, 4th edition
Reviewed 29 September 2026. Colourwise summarises its sources in its own words and does not reproduce standards text or proprietary colour data. Spotted an error? Tell us.