Scoring

How scoring works

Each guess is scored 0–100 based on the perceptual distance between your guess and the target color, computed with the CIEDE2000 ΔE formula.

Updated

The short version

We measure the difference between your guess and the target using CIEDE2000 ΔE, then map that difference through an exponential decay curve to a 0–100 score. Smaller ΔE = closer guess = higher score. A perfect match scores 100; opposite ends of the color gamut score 0.

What is ΔE?

ΔE (delta-E) is the standard way color scientists measure how different two colors look to the human eye. The naive way to compare colors — Euclidean distance in RGB space — produces wrong-feeling results because the human eye isn't equally sensitive to all hues. We can distinguish two slightly different greens far more easily than two slightly different blues, for example.

The CIEDE2000 formula, published in 2001 by the International Commission on Illumination (CIE), corrects for these perceptual quirks by working in CIE Lab color space and applying weighting functions for lightness, chroma, and hue. Our implementation follows the canonical paper by Sharma, Wu, and Dalal (2005), which provides the supplementary test data implementations are validated against.

ΔE to score calibration

ΔE is an unbounded real number (0 = identical, with no fixed upper limit). To turn it into a friendly 0–100 score, we apply an exponential decay:

score = round(100 × e^(−ΔE / 28))

The decay constant (28) is tuned empirically so that "very close" guesses still feel rewarded and "very far" guesses still register above zero in most cases. Linear mapping produces a frustrating long-tail where most guesses score near zero; exponential decay gives a satisfying gradient across the whole range.

ΔEScoreMeaning
0100Identical
≈ 296Just-noticeable to a trained eye
≈ 586Visible difference, very close
≈ 1070Clearly different but related
≈ 2530Different family, similar hue zone
≈ 505Wildly off
100+0Opposite ends of the gamut

Score bands

Scores are grouped into four bands for the share grid and stats histogram. The thresholds align with the ΔE calibration above — green is "trained eye can't tell", black is "wildly off".

BandRangeLabel
green90+Excellent
yellow70–89Good
orange40–69Off
black0–39Way off

Why not RGB distance?

A naive scoring scheme could just compare the RGB values directly: add up the squared differences in the red, green, and blue channels, take the square root, done. We tried this. It feels wrong, because RGB space is not perceptually uniform. Two yellows that look almost identical can have a larger RGB distance than two purples that look completely different. Players would be punished for "obviously close" guesses and rewarded for ones that look way off.

CIEDE2000 fixes this by converting both colors into CIE Lab space first, then computing distance with hue-, chroma-, and lightness-aware weighting functions. The result tracks human perception closely enough that ΔE values can be interpreted as subjective "how different do these look" judgments.

Source & reference

Sharma, G., Wu, W., & Dalal, E. N. (2005). The CIEDE2000 color-difference formula: Implementation notes, supplementary test data, and mathematical observations. Color Research & Application, 30(1), 21–30.