Color analysis quiz › Methodology
How this color analysis measures a photo
This page explains the selfie check: what it samples, the arithmetic behind the result, the checks that run before you see a season, and the cases where the method should not be trusted. It is deliberately separate from the science page, which covers the 12-question quiz.
Two methods, two kinds of evidence
The site offers two ways to get a season, and they do not produce the same kind of evidence.
| Method | What it reads | What it can support | What it cannot support |
|---|---|---|---|
| 12-question quiz | Your own daylight comparisons: veins, white vs cream, metals, hair, eyes, contrast, chroma. | A rule-based classification from self-report. | Any claim that a pixel or a skin measurement was taken. |
| Selfie check | Three small patches you place on skin, hair and eye in a photo, processed in your browser. | A measured colour sample, a similarity score and a runner-up season. | A calibrated probability, a diagnosis, or a substitute for in-person draping. |
The quiz never sees an image. The selfie check never uploads one. If a page says “no skin pixel is read”, it is describing the quiz, not the photo check. Both statements can be true at once; this page is the bridge between them.
What the photo check samples
You place three markers: S on a cheek, H on hair, E on the iris. Each marker reads a small patch, not a single pixel.
- Skin and hair: the patch is sorted by brightness and the middle 60% is averaged, which reduces specular highlights and deep shadows.
- Eye: the darkest 35% of the patch is averaged, to stay on the iris rather than the sclera or a reflection.
- Colour space: each average is converted from sRGB to CIELAB (D65), the same perceptual space used in the studies cited on the science page.
The three scores
From the three Lab values the code computes:
- Hue angle of the skin patch:
atan2(b*, a*), in degrees. Around 58° is the warm/cool pivot used by this implementation. - Chroma of the skin patch:
sqrt(a*² + b*²). - Contrast between skin and hair, and skin and eye:
|L*skin − L*hair| × 0.65 + |L*skin − L*eye| × 0.35.
Those are combined into three bounded scores, each roughly −1 to +1:
| Score | Inputs | Positive means |
|---|---|---|
| u (temperature) | Skin hue angle and the hair patch’s b* value. | Warmer; negative is cooler. |
| v (value) | Weighted skin, hair and eye lightness: 0.55, 0.30, 0.15. | Lighter; negative is deeper. |
| c (chroma) | Skin–hair–eye contrast and skin chroma. | Clearer; negative is softer. |
From scores to a season
Each of the 12 seasons has a centre point on those three axes. The code measures the squared distance from your (u, v, c) to each centre, converts the distances with exp(−d / 0.35), and normalises them to percentages. The top season is shown first and the runner-up second.
Those percentages are similarities, not probabilities. A 62% figure means the top centre is closer than the alternatives under this formula. It does not mean there is a 62% chance the label is correct. We say this plainly because the difference matters: a probability needs calibration against outcomes, and this tool has not been calibrated against a large labelled sample yet.
Quality checks before the result
Before scoring, the script checks the image and warns you if it is likely to produce a poor reading:
- Short side below 480 px.
- Mean brightness below 70 or above 205.
- Standard deviation below 28, which usually means a washed-out or very low-contrast image.
- Laplacian sharpness below 2, which usually means blur.
- A warm cast in the sampled pixels (b* above 14 and b* more than 1.4× a*), which often means indoor tungsten light.
A warning does not block the result. It tells you the reading may be less reliable and asks you to retake the photo in daylight. The warning itself is not a diagnosis of the light source.
What the method cannot see
This is the part most colour-analysis pages leave out.
- Makeup and filters. Foundation, concealer, tinted moisturiser, beauty filters and phone “skin smoothing” change the pixels. The check cannot detect them reliably.
- White balance. A phone may neutralise a warm room, or warm a neutral daylight scene. The warm-cast check catches some cases, not all.
- Hair dye and self-tanner. The hair patch reads the hair in the photo, not your childhood hair. Recent dye can move the result.
- Glasses, tinted lenses and eye makeup. The iris patch can pick up a lens tint, a reflection or eyeliner.
- Deep and olive skin. The warm/cool axis is the weakest part of the model on deep skin and on neutral/olive skin, because surface warmth and true undertone are not the same thing. A single patch on a cheek can read surface colour rather than undertone.
- The 12-season taxonomy itself. No peer-reviewed study validates the taxonomy or shows that two trained analysts agree on a label. The method measures three dimensions; the labels are a convention layered on top.
How to take a usable photo
- Daylight, facing a window. Indirect light, no direct sun, no room lamp, no coloured wall within arm’s reach.
- Bare face, hair back. No foundation, no tinted moisturiser, no filter. Push hair off the forehead and cheek.
- Hold the phone still. Use the rear camera if you can; clean the lens; tap to focus.
- Place the markers yourself. The defaults are a starting point. If S lands on a shadow or H lands on a wall, move it.
- Take three reads on different days. The Pro report includes three retests and combines them into one consensus. If the three disagree, treat the result as a boundary pair, not a verdict.
Test–retest and the consensus
The retest is not a new method. It repeats the same measurement on a new photo and averages the three (u, v, c) vectors before choosing the nearest season. The consensus is a stability check: if one photo says Soft Summer and the next says True Summer, the honest conclusion is that you sit near that boundary. The report lets you switch to the consensus season once. It does not hide the disagreement.
Validation status
We have not published an accuracy figure for the photo check. A pilot is planned but has not started: 50 adults with a professional in-person analysis in the previous 12 months, stratified by skin tone and lighting condition. The protocol and the reporting plan are on the accuracy page. When the pilot is complete we will publish agreement rates, the confusion matrix and the cases where the method fails. Until then, treat the result as a structured second opinion, not a measurement of record.
For a high-stakes decision — a wedding, a uniform, a brand palette, a headshot you will use for years — use physical fabric or book an in-person draping. A screen hex is not a textile, and a browser sample is not an analyst’s eye.
Sources and method notes
- Munsell Color Science Laboratory, Rochester Institute of Technology: hue, value and chroma ordering.
- CIE Colorimetry, 4th edition: CIELAB and the D65 reference white.
- Ou & Chan (2026), Lumina (doi:10.1145/3816713.3818796): 55.2–55.6% accuracy on the Deep Armocromia benchmark, and the warning that uncontrolled illumination distorts skin Lab values.
- Stacchio et al. (2025), Deep Armocromia (doi:10.1007/978-3-031-91569-7_22): the labelled benchmark, not an independent measurement.
- Foster (2011), Color constancy (doi:10.1016/j.visres.2010.09.006): why illumination changes perceived colour.
Method page first published 2026-11-01. The formulas above describe the code shipped on this site; if the code changes, this page changes with it. Corrections: contact.
Try the photo check Read the accuracy page
How this page was checked
Sources and dates are stated above where a claim is made. Method pages are checked against the code that ships here; competitor prices are checked against the provider’s public page on the date shown. Corrections: billing@seasoncolortest.com.