Lightness Linearity — Why Equal Steps Look Unequal
Open a color palette tool. Set 12 shades of blue, evenly spaced from L*=95 down to L*=10 in CIELAB. Export, put them on screen.
They don't look evenly spaced. The light shades feel bunched. The midrange is compressed. Somewhere between shade 4 and shade 7 there's a cluster where the steps feel too small.
The L* values are correct — perfectly linear. But the palette looks wrong.
What L* Measures
CIELAB's L* is designed to be perceptually uniform for achromatic colors — grays. Two grays that are 10 units apart in L* should look equally different, regardless of where you are on the scale.
For gray, L* does its job. For chromatic colors — blues, reds, yellows — it breaks down.
The Helmholtz–Kohlrausch Effect
A saturated blue at L*=50 looks brighter than a neutral gray at L*=50.
The chroma is contributing perceived brightness that L* doesn't account for. High-saturation colors appear lighter than their measured lightness.
This is the Helmholtz–Kohlrausch effect, documented since the 19th century. A blue ramp built on linear L* spacing will have its chromatic shades appear lighter than expected — pushing the perceived midpoint lower and making the upper range feel compressed.
EAL: The Corrected Measurement
The corrected metric is Equivalent Achromatic Lightness (EAL), from High et al. (2023):
L_EAL = L* + (f_BY(h) + f_R(h)) × C*L*— standard CIELAB lightnessC*— chroma (saturation)h— hue anglef_BY,f_R— hue-dependent correction coefficients
The correction adds a chroma-scaled offset that varies by hue. Blue gets a larger correction than olive. A high-saturation blue at L*=50 might have EAL=56 — its perceived lightness is 6 units higher than L* says.
Measuring Linearity
Lightness linearity measures how evenly EAL progresses across the palette, not L*.
- Compute EAL for each swatch
- Fit a line:
EAL ≈ α × step + β(linear regression) - Measure RMSE between actual EAL values and the fitted line
- Normalize → score ∈ [0, 1]
A score of 1.0 means the palette's perceived lightness progresses evenly from end to end. A score below 0.85 means there are visible clusters or gaps.
Why This Matters in Practice
Uneven perceived lightness means:
- Nested containers don't feel "one level deeper" — the depth progression is irregular
- Hover states feel closer or farther than expected — the perceptual gap between base and hover varies depending on where in the palette you're working
- Dark mode requires a separately hand-tuned palette because the light and dark halves have different perceptual densities
Designers who build palettes by eye in CIELAB or HSL often over-correct for the Helmholtz–Kohlrausch effect intuitively — without knowing why certain shades feel "off" and need manual adjustment.
EAL-based linearity makes the cause explicit and measurable.