foundation

Foundation — a swamplink research property

What am I paying for?

The ingredients in a $53 foundation cost about the same as the ingredients in a $12 one. Here is what the filings say, and what the extra $41 is actually buying.

What the margin says

e.l.f. Beauty runs a 70.7% gross margin. Estée Lauder runs 74.0%. The gap between a $10 foundation and a $52 one is not a margin gap — both companies keep roughly three-quarters of the sale. The price difference is what the rest of the business costs, not what the bottle costs.

CompanyGross marginSource
Coty64.8%SEC Form 10-K (XBRL company facts)
Estée Lauder Companies74.0%SEC Form 10-K (XBRL company facts)
L'Oréal74.3%Annual results press release, consolidated profit and loss account
LVMH67.0%Key figures, consolidated income statement
Revlon—not available
e.l.f. Beauty70.7%SEC Form 10-K (XBRL company facts)

These are group-wide margins across every product a company sells, taken from its own filings. LVMH's is the weakest comparator on the page: it is dominated by fashion and leather goods, and LVMH does not break out a gross margin for its Perfumes & Cosmetics segment.

What the formula costs

No cosmetics company publishes per-product manufacturing cost, so anything more granular than gross margin is modelling. What follows is a bound, not an estimate: even a deliberately generous blended price across the entire formula mass lands far below the retail price, and that conclusion holds anywhere inside the band.

BrandTierList Parent marginImplied cost of goods Formula costFormula as % of list
e.l.f.budget$9.9970.7%$2.93$0.06–$0.320.63–3.15%
Maybellinemass$11.9974.3%$3.08$0.10–$0.470.79–3.94%
Rimmel Londonmass$7.9964.8%$2.81$0.10–$0.471.19–5.92%
Revlonmass$14.99——$0.10–$0.470.63–3.16%
L'Oréal Parismass$18.9974.3%$4.88$0.10–$0.470.50–2.49%
L'Oréal Parismass$18.9974.3%$4.88$0.10–$0.470.50–2.49%
MACprestige$39.0074.0%$10.14$0.10–$0.470.24–1.21%
Cliniqueprestige$39.0074.0%$10.14$0.10–$0.470.24–1.21%
Estée Lauderprestige$52.0074.0%$13.52$0.10–$0.470.18–0.91%
Lancômeprestige$53.0074.3%$13.62$0.10–$0.470.18–0.89%
Lancômeprestige$53.0074.3%$13.62$0.10–$0.470.18–0.89%
Diorluxury$60.0067.0%$19.80$0.10–$0.470.16–0.79%
Estée Lauderprestige$55.0074.0%$14.30$0.11–$0.550.20–1.00%

The stuff in the bottle costs between about 0.2% and 6% of what you pay for it — and in absolute terms it costs roughly the same whatever you pay. Thirty millilitres of Lancôme and thirty millilitres of Maybelline are the same mass of largely the same commodity chemistry. What separates $12 from $53 is packaging, retail margin, advertising and the counter it is sold from.

Assumptions behind those numbers

  • Formula density assumed 1.05 g/mL. Silicone-and-water foundation emulsions sit near this; it is an assumption, not a filed figure.
  • Blended formula cost assumed $3.00-15.00/kg across the whole mass.
  • Anchors for that band: titanium dioxide traded at roughly $2.06-3.36/kg by region in April 2026 (IMARC, ChemAnalyst commodity price reporting), and bulk cosmetic-grade dimethicone is quoted in the low single dollars per kg on trade listings. Trade-listing prices are materially weaker evidence than the FDA filings this project is otherwise built on, which is exactly why the output is a band.
  • Implied cost of goods uses the PARENT COMPANY's group gross margin, not a product-level margin. Margin varies enormously by product line, so the per-bottle figure is illustrative of the company's economics, not a measurement of this bottle.
  • Gross margin covers packaging, filling, labour, freight, duty and factory overhead as well as ingredients. Ingredient cost is a fraction of it.

Run the calculator yourself

The table above reports a band because the blended-formula price ($3.00–$15.00/kg) is an assumption, not a filed figure. Pick a product and slide that one assumption to see how the estimate moves — the arithmetic is the same mass × price-per-kg calculation tools/cost_quality.py runs for the whole corpus, just run live on the number you choose.

$3.00/kg $15.00/kg

Volume, list price and parent gross margin come straight out of data/cost-quality.json; nothing here is re-fetched or re-derived independently of the batch pipeline, so a slider setting of $3.00/kg or $15.00/kg reproduces the published band exactly.

Price against quality

Formulation-derived and primary-sourced only: every component is read off the FDA-filed OTC drug label. It describes what is in the bottle and how it is arranged, not whether wearers like it. It is not a satisfaction score, a dermatological rating, or a safety verdict.

Price against actives above 1% and fragrance allergens.
MeasureBudgetMass PrestigeLuxury
Price per mL$0.50$0.49$1.57$2.00
SPF as filed and tested15.022.024.320.0
Named actives above the 1% line0.000.003.830.00
EU-declared fragrance allergens0.003.801.000.00
Ingredients in the formula27.035.047.536.0

At more than three times the price per millilitre, prestige buys two things the cheaper bottles do not have: actives placed high enough in the formula to be present above about 1%, and markedly fewer declared fragrance allergens. It does not buy more sun protection — mass-market foundations in this corpus average a higher filed SPF than prestige ones.

BrandTierPrice / mL SPFActives above 1% line Fragrance allergens
Rimmel Londonmass$0.272006
Maybellinemass$0.401801
e.l.f.budget$0.501500
Revlonmass$0.50—00
L'Oréal Parismass$0.632506
L'Oréal Parismass$0.632506
MACprestige$1.301520
Cliniqueprestige$1.301520
Estée Lauderprestige$1.5745100
Estée Lauderprestige$1.731920
Lancômeprestige$1.772520
Lancômeprestige$1.772756
Diorluxury$2.002000

Read this axis carefully. "Quality" here is derived entirely from what is on the filed label. It measures the formulation, not whether the product wears well, matches your skin, or is worth buying — an ingredient list cannot tell you any of that. Prices are US list prices observed on 19 August 2026 and are the softest input on this site: they move by retailer, region and promotion, and drugstore brands are rarely sold at list. Per-product price confidence is recorded in data/prices.json.