CIELAB and Delta E (ΔE2000) explained for dyers
CIELAB turns a colour into three numbers: L* (lightness), a* (green–red) and b* (blue–yellow). Delta E is the distance between two colours; ΔE2000 weights it like the eye.

On this page
CIELAB describes a colour with three numbers: L* for lightness (0 black to 100 white), a* for green (negative) to red (positive), and b* for blue (negative) to yellow (positive). Delta E (ΔE) is the distance between two colours in that space – one number for "how far off". The modern formula, ΔE2000, weights lightness, chroma and hue differences the way the eye sees them, so a ΔE00 of 1 means roughly the same visual difference anywhere in colour space.
Why dyers need numbers at all
"A bit redder, a touch deeper" works across one bench. It does not travel to a buyer in another country, survive a change of light, or settle an argument about whether a batch passes. Numbers do, provided everyone measures the same way.
CIELAB in one picture
Imagine a sphere:
- The vertical axis is L*: black at the bottom, white at the top.
- Across the middle, a* runs from green (−) to red (+).
- At right angles, b* runs from blue (−) to yellow (+).
Two more values follow from a* and b*:
- C* (chroma) = √(a*² + b*²) – how far from grey, i.e. how vivid.
- h (hue angle) – the direction around the circle: 0° red, 90° yellow, 180° green, 270° blue.
So L* 44, a* −8, b* 38 reads as: medium-dark, slightly green, strongly yellow – an olive. L* 18, a* 5, b* −22 is dark and bluish – a navy.
ΔE*ab: the straight-line distance
The original 1976 formula is the straight line between two points:
ΔE*ab = √(ΔL*² + Δa*² + Δb*²)
It is easy to compute, but the eye is not equally sensitive in every direction. We tolerate differences in chroma among vivid colours much more than differences in hue, and CIELAB is least even in the blues. So a ΔE*ab of 3 can be invisible for one pair of colours and obvious for another.
CMC(l:c): the textile industry's answer
In the 1980s the Colour Measurement Committee of the Society of Dyers and Colourists published CMC(l:c), which scales the lightness, chroma and hue differences by the position of the colour. The two parameters set the relative weight of lightness (l) and chroma (c). CMC(2:1) – lightness counted at half weight – became the standard for textile acceptability, because observers accept a lightness difference more easily than a hue difference.
ΔE2000: the current CIE formula
CIEDE2000, adopted by the CIE in 2001, refines the same idea:
- Weighting functions for lightness, chroma and hue that depend on where the colours sit.
- A hue-dependent term for the eye's hue sensitivity.
- A rotation term that fixes the known problem in the blue region.
- An adjustment of a* for near-neutral colours, where small hue shifts are very noticeable.
- Parametric factors kL, kC, kH (normally 1) to adapt it to an industry. Textile users sometimes set kL = 2, mirroring CMC's 2:1.
A real example
Two neighbouring olives in the Shadecard library measure L* 43.9, a* −7.9, b* 38.5 and L* 44.9, a* −8.9, b* 41.0. The straight-line ΔE*ab is about 2.9. ΔE2000 puts them at about 1.4, because most of the difference is chroma in a very saturated colour, where the eye is forgiving.
A pure lightness difference behaves the other way round. Two colours 4 units apart in L* only (a* and b* equal) are ΔE*ab 4.0; ΔE2000 gives about 3.0; with kL = 2 it drops to about 1.5.
How to read a ΔE on a match
- The formula matters. "ΔE 2" means different things in ΔE*ab, CMC and ΔE2000. Always say which.
- Around 1 ΔE00 is roughly where a trained eye starts to see a difference side by side in good light.
- Tolerances are agreed, not universal. Buyers set pass/fail limits along with the formula, illuminant and observer. Tight brand colours get tighter limits.
- ΔE says how far, not which way. Look at ΔL*, Δa*, Δb* (or ΔL, ΔC, ΔH) to know whether to add depth, more red or more complement.
How Shadecard uses ΔE2000
Shadecard's phone readings live in CIELAB, and the app uses ΔE2000 in three places:
| Where | Setting | Why |
|---|---|---|
| Match ΔE00 (fabric → library shade) | ΔE2000 with kL = 2 | Hue from the library, depth dialled separately |
| Shot spread (between the three photos) | ΔE2000 with kL = 1 | Photos must agree strictly; any drift is a capture fault |
| Visually similar and Compare | ΔE2000 with kL = 1 | The plain visual difference between two shades |
On the result, the match is described in words: under 1 excellent, under 2.5 close, up to 6 decent, 6–9 rough; beyond 9 the app names no shade. The Compare screen breaks a difference into ΔL*, Δa*, Δb* and ΔC* with a plain sentence. See Read your result and Find and compare the nearest shades.

Its engineering details also show a CMC(2:1) cross-check when the two formulas disagree strongly, prompting you to verify the match under daylight.
Key points
- CIELAB turns colour into lightness, green–red and blue–yellow.
- ΔE*ab is a straight-line distance that does not match perception well.
- CMC(2:1) and ΔE2000 weight differences like the eye; 2:1 makes lightness count half.
- Always state formula, illuminant and observer with a ΔE.
- Use the components (ΔL*, Δa*, Δb*) to decide the correction.
Frequently asked questions
What is a good Delta E for textile shade matching?
There is no universal number. Pass/fail tolerances are agreed with the buyer, together with the formula, illuminant and observer; tolerances around one unit of CMC(2:1) or ΔE2000 are common for critical shades.
What is the difference between ΔE*ab, CMC and ΔE2000?
ΔE*ab is the straight-line distance in CIELAB and treats all directions equally. CMC(l:c) and ΔE2000 weight lightness, chroma and hue differences the way the eye perceives them, so their numbers track visual difference better.
What does L*a*b* 44 −8 38 mean?
L* 44 is a medium-dark colour, a* −8 is slightly green, and b* 38 is strongly yellow: an olive.
Why do textile matches use 2:1?
Observers accept a lightness difference more readily than a hue difference. Weighting lightness at half (l = 2) makes the number reflect acceptability rather than just perceptibility.
Was this post helpful?