Does it work on every skin tone?
Personal color analysis has a long history of being built around light skin. So we tested our own engine against the Monk Skin Tone Scale, a ten-shade reference designed for exactly this kind of check. We found a bias in our own rule, and this page is the evidence and the fix.
What was wrong
Drape originally read undertone from b*, the yellow-to-blue axis in CIELAB. Warm skin is more golden, so a high b* meant warm. The problem is that b* is a magnitude, and colorfulness collapses at both ends of the scale. At the very lightest and very darkest tones b* falls close to zero. That is neutrality, and the old rule had no way to tell it apart from coolness. It called those tones cool.
The hue angle does not have this problem. It is a direction rather than a distance, so it does not shrink as skin gets darker. Monk tone 10 sits at hue 67°, plainly golden, while its b* is only 3.5.
The measurements
| Monk tone | L* | b* | Chroma | Hue | Old rule (b*) | Now (hue) |
|---|---|---|---|---|---|---|
| 1 | 94.2 | 5.4 | 5.6 | 74.5° | cool | warm |
| 2 | 92.3 | 7.3 | 7.6 | 74.2° | cool | warm |
| 3 | 93.1 | 14.2 | 14.2 | 89.1° | neutral | warm |
| 4 | 87.6 | 17.8 | 17.8 | 88.5° | warm | warm |
| 5 | 77.9 | 23.1 | 23.4 | 81.5° | warm | warm |
| 6 | 55.1 | 26.7 | 27.9 | 73.8° | warm | warm |
| 7 | 42.5 | 20.5 | 23.9 | 59.0° | warm | warm |
| 8 | 30.7 | 13.3 | 17.7 | 48.8° | neutral | neutral |
| 9 | 21.1 | 6.0 | 6.5 | 65.7° | cool | warm |
| 10 | 14.6 | 3.5 | 3.8 | 67.2° | cool | warm |
Old rule, across the scale
4 warm · 4 cool · 2 neutral
It disagreed with the hue angle on 5 of the 10 tones, and all of them sit at the light or deep ends: tones 1, 2, 3, 9, 10.
Now
9 warm · 0 cool · 1 neutral
No tone is called cool for being dark. Tone 8 does sit near the neutral boundary, at hue 48.8°, and it is reported that way.
What we did not fix
Hue is stable across depth, but it gets noisy as skin approaches neutral grey, and that is what happens at both ends of the scale. Chroma falls under 8 on tones 1, 2, 9, 10, so on those the undertone axis is discounted before it reaches the score below.
Confidence for each reference tone, from the same function the studio uses. It reads three axes, undertone, depth and clarity, and leans on whichever sits nearest a decision boundary, so the dips do not line up with the ends of the scale. The lowest here is tone 6, held down by depth, which lands 1.1 from its boundary at 12. Every number on this page is computed live by the shipping engine when the page renders, and held in place by the test suite.