Methodology
How scoring works
Every match carries two scores, calculated the same way every time from published retailer data: the closest shade match and the closest overall alternative. The whole process in seven steps.
Deterministic
Fixed formulas and weights. No AI judges whether two shades look alike.
Price never scores
Matches are found at any price. Price is shown next to each one and never changes how well it matches.
Confidence is separate
How alike two products are and how sure we are are shown apart.
Which products are candidates
Before anything is scored, the catalogue is narrowed to products that could realistically replace the one you picked.
- Every product in the catalogue
- Same product category
- Currently available
- Any price, above or below the reference
- Within ±22 depth points
- 80 nearest colours fully scored
- Top 30 stored
A candidate has to pass every filter. The depth window stops a very fair shade being suggested for a deep one, and is skipped when the reference depth is unknown.
The 80 shades closest in colour then go through full scoring. The best 30 by overall score are kept, and the best few by shade score with them, so the closest shade match is always stored.
Shade score: the closest shade match
Each shade is read three ways: its colour from the retailer's swatch image, compared with the industry-standard colour-difference formula; its depth, how light or deep it is; and its undertone, cool, neutral, warm or olive. The match with the best shade score is the closest shade match.
- Retailer swatch image
- Sample swatch pixels
- sRGB
- XYZ
- CIELAB
- ΔE00 difference
Transparent and background pixels are ignored and a robust median-based estimate is used, so a stray highlight or shadow in the photo does not skew the colour.
What makes up the shade score
- Colour difference · 60%
- Depth difference · 15%
- Undertone · 25%
Undertone comes from the retailer's shade description first. Only when there is none is it inferred from the colour, and it is then labelled as inferred.
The retailers' own shade descriptions are checked against each other as well. Two shades described two or more depth bands apart (light medium and deep, say) are never treated as equivalents however close their swatches read: the shade match is capped at 40, the pair is flagged on the match, and its confidence is Low. One band apart changes nothing. The same check runs for foundations and concealers.
How colour difference is described
Match pages show the difference in words, not as a number. Each pair below is drawn at that exact difference.
- looks identicalΔE00 under 1.5
- very close colourΔE00 1.5 to 3
- close colourΔE00 3 to 5
- slight colour differenceΔE00 5 to 8
- visibly different colourΔE00 8 or more
These describe the retailer swatches, not how a product looks on skin.
Finish and performance
Two categories, each a weighted set of attributes read from the retailer's listing: what the product looks like on, and how it wears. Together they are the second and third parts of the overall score.
Finish & visual result
25%Share of the overall score. Weights within the category:
- Finish
- 35%Retailer finish attribute, matte to radiant; 22 points off for every step apart
- Coverage
- 30%Retailer coverage attribute, sheer to full; 20 points off for every step apart
- Skin-like
- 20%Claim: skin-like, second-skin, natural skin finish
- Blurring
- 15%Claim: blurring, soft-focus, smoothing, pore-minimising
Wear & performance
15%Share of the overall score. Weights within the category:
- Longevity
- 30%Hours stated (24-hour wear, 16HR), or a long-wearing claim
- Transfer
- 20%Claim: transfer-resistant, transfer-proof
- Settling
- 20%Claim: won't settle into lines or pores, crease-resistant
- Oxidation
- 15%Claim: won't oxidise, colour-true, true-to-shade
- Comfort
- 15%Claim: lightweight, weightless, breathable, comfortable
Where the data comes from
Finish and coverage are the retailer's structured product attributes. The performance claims are read from the retailer's stated benefits, its product highlights and the product description. Retailers state what a product does, never what it does not, so a missing claim is never treated as a negative. Nothing in either category is inferred from the ingredient list.
Longevity is the one attribute with a number. When both products state hours, the difference is scored on a curve (0 h apart → 100, 4 h apart → 80, 8 h apart → 60, 12 h apart → 35, 16 h apart → 20). When one states hours and the other only says long-wearing, the pair scores 70.
A category in which nothing can be compared scores a neutral 50 and is listed as missing on the match page; the confidence rating in step 6 is lowered instead.
Closest overall alternative
The overall score is a weighted sum of four parts. The weights are set in configuration and applied to every match; the match with the best overall score is the closest overall alternative.
- 55%Shade matchColour difference, depth difference and undertone compatibility: the shade score from step 2.
- 25%Finish & visual resultFinish, coverage, skin-like appearance and blurring.
- 15%Wear & performanceWear time, transfer, settling, oxidation and comfort.
- 5%Skin suitabilityOverlap of the skin types each product is marketed for. Replaced by your own skin type when you choose one.
Price 0%Price is not part of either score. A product that costs less never ranks higher for its price, and one that costs more is never left out.
Why there are two scores
The two scores answer different questions. The shade score asks only whether the colour is right. The overall score asks whether the product as a whole is the nearest alternative: colour first, at 55%, then how it looks on, how it wears and who it suits.
A shade can be the closest colour in the catalogue and still differ in finish or wear; another can match the finish and wear and sit a step off in colour. Showing both means the closest colour is never hidden behind a lower overall score, and the best all-round alternative is never hidden behind a colour a step away. When one product is both, it is shown once with both labels.
Where each score appears
- Dupe pages lead with the closest shade match and the closest overall alternative, then list every other match by overall score.
- Match pages show the overall score large with the shade match beside it, and take the overall score apart into its four parts with the fact behind each.
- Comparisons list both scores and the four parts for every product in the set.
Ingredients: information and filters
Ingredient lists are shown on every match and drive the preference filters. They have no weight in either score.
Why they are not scored
Two products can reach the same finish and the same wear with different silicones, different film formers or a different base. Marking a match down for that would penalise a product for how it gets to the same result. So ingredients describe a product and narrow a list; they never lower a score.
The shared ingredients, the weighted overlap and the formula characteristics are still shown on every match page and in every comparison, as information.
The filters they drive
- Fragrance-free
- No drying alcohol
- Vegan
- Cruelty-free
- Oil-free
- With SPF
- Mineral
Fragrance and drying alcohol are read from the ingredient list; mineral from the retailer's claim or the ingredient list; vegan, cruelty-free and oil-free are the retailer's stated claims; SPF is the product's stated factor. You can also leave out any product listing a named ingredient. A filter applies only when you switch it on, and a product with no data for it is left out while it is on, with the count shown. Nobody else's results change.
Names are made consistent
- WaterAquaEauWater
- CI 77891Titanium dioxide
Synonyms become one ingredient and CI numbers become pigment names, so two lists written differently still line up.
Earlier ingredients count more in the overlap
The overlap figure shown on match pages is a weighted Jaccard similarity: a shared top-five ingredient counts about 12× more than a shared trace ingredient.
Formula characteristics shown
- Water, silicone or oil base
- Silicone prominence
- Oil prominence
- Humectants
- Emollients
- Fragrance
- Drying alcohol
- UV filters
These describe similarity and difference only.
Confidence is separate from similarity
Retailer web swatches are not laboratory measurements, so every match also carries a Low, Medium or High confidence rating.
The two scores answer
“How alike are they?”
Confidence answers
“How sure can we be?”
What confidence is built from
- Swatch source quality40%
- Undertone stated or inferred15%
- Finish and wear attributes stated on both sides15%
- Structured product data15%
- Data freshness10%
- Retailer swatches agree5%
Swatch agreement applies where a shade is sold by both retailers. The claims factor counts how many of the nine finish and wear attributes in step 3 are stated by both retailers: a pair with few claims to compare is a less certain match, not a worse one. Ingredient lists no longer count towards confidence.
Why a swatch can mislead
- Photography
- Colour profiles
- Retailer processing
- Transparency
- Monitor calibration
- Application thickness
- Skin tone
- Oxidation
- Lighting
Lab verified is reserved for spectrophotometer or licensed laboratory measurements. The catalogue does not contain any yet.
Your skin type, filters and sort
Skin suitability is 5% of the overall score until you choose a skin type. Then matches not made for it are filtered out, and the fit for your skin type takes the place of the general overlap.
Suitability reflects what each retailer or brand markets the product for, not a dermatological assessment. On a match or comparison page a chosen skin type re-scores the pair without filtering it.
Filters narrow the list
Coverage, finish, formulation and skin type, plus the ingredient and claim preferences in step 5, filter the whole dupe page. The closest shade match and the closest overall alternative are the best scores among the matches that pass, so asking for matte never shows a dewy closest match.
A match with no data for a chosen filter is left out while that filter is on, and the page says how many were. Every filter is a link, so the narrowed page works without scripts and can be shared.
Sort orders the list
The matches are ordered by overall score unless you choose price, low to high or high to low, which re-orders the list under the two lead matches. A sort changes the order only: every match keeps both its scores, and price never enters either.