Skip to content
beautyisme

Method

How we match products.

Every match on this site comes from one fixed formula run over ingredient lists. No person picks favorites, and no AI writes a match, a score, or a price. The same two products always get the same score. Here is the formula.

Step 1: who is even eligible

Before scoring, a candidate has to pass four hard rules against the product you started from:

  • Same category. A serum is only compared to serums.
  • Both products are active in our catalog: known size, resolved ingredient list, at least one retailer offer.
  • For sunscreens: the same filter type (mineral, chemical, or hybrid) and an SPF at least as high.
  • Every key active in your product has to be present in the candidate. A retinol serum is never matched to a serum without a retinoid.

Step 2: three scores

Ingredient overlap, 50% of the total. Ingredient lists are in descending order of amount, so position matters. The first ingredient gets full weight, and each of the next nine gets a little less, down to about a fifth at position 10. Everything after that gets a small fixed weight. We then compare the two weighted lists: shared ingredients count for the smaller of their two weights, and anything in only one list counts against the match. The result is between 0 and 1.

Key actives, 35%. For each key active in your product (a retinoid, niacinamide, vitamin C, an AHA or BHA, and so on), we look at how far apart it sits in the two lists. Same position is a perfect score; ten or more positions apart is zero. We average across the actives. If your product has no key actives, this score just repeats the ingredient overlap.

Free-of attributes, 15%. If your product is fragrance-free, essential-oil-free, or free of denatured alcohol, the candidate gets credit for matching each of those. Only the properties your product has count; we never penalize a candidate for being free of something your product contains. These attributes are derived from the ingredient list itself, never from marketing copy.

Total score = 0.50 x ingredient overlap + 0.35 x key actives + 0.15 x attributes.

Step 3: dupe or alternative

  • A dupe scores 0.70 or higher and costs at least 15% less per ml or per gram, using the cheapest in-stock price we can show.
  • An alternative scores 0.70 or higher but is not 15% cheaper right now. Prices move, so these can become dupes later.
  • Products sold in ml are never price-compared to products sold in grams. We show “can’t compare size” instead of guessing.

What the percentages on a page mean

“91% match” is the total score above, times 100. “38% cheaper per ml” compares the cheapest displayable price per ml of each product on the day we checked. Amazon prices are never shown or used in any calculation until Amazon gives us API access to keep them current.

Yearly savings in the Routine Saver

Yearly cost = price per ml x the size you use x how many times a year you replace it. The replacement intervals are defaults (cleanser 90 days, toner 90, serum 75, moisturizer 75, sunscreen 60, eye cream 120) and you can change them. The headline is the sum across your routine, rounded to the nearest $5.

Where the data comes from

Ingredient lists come from Open Beauty Facts, brand product pages, and retailer feeds. Prices come from affiliate network feeds. See the data page for attribution and licensing. The scoring code is unit tested against a fixed set of known pairs; if a change moves a score, the tests fail.