the sources
Scoring cosmetics is messy. Raters use different scales, measure different things, and sometimes flat-out contradict each other. Most apps hide that mess behind one tidy number. We’d rather show you the mess, because the mess is the information.
Every real number on a Greenlens product page is a signal we compute ourselves from open data, each shown with a visible funding model. On ingredient safety we run three such scans deliberately built to different philosophies, so they can disagree with each other the way independent raters do. This page explains each one: what it measures, how the score is built, and where it honestly falls short. The scoring tables below are read from the same data the scorers run on, so they can’t drift from what the code does.
1 Normalize
Each source keeps its native scale; we map it to 0–100, flipping "lower is better" scales so higher is always better.
2 Never blend a disagreement
Same-axis opinions stay side by side. When they split, we show who disagrees and why, not an average that hides it.
3 You weight the overall
The single overall number is a weighted mean across axes using your sliders, computed live and never stored.
The critique we agree with
A hazard list says what a chemical can do, not what this bottle will do; dose and exposure decide real risk, and a label carries neither. So we run a deliberately cautious hazard lens and a deliberately lenient exposure-minded lens side by side, with a strict regulatory read between them. Where toxicologists disagree, we show you both readings and the weighting is yours. When a label is truncated or unreadable we withdraw our score rather than publish a flattering one.
The signals we derive ourselves from open data. They are ordinary raters in the list: shown with a funding tag, free to disagree with each other and with external sources, and never given a privileged “Greenlens says” position. The first three all rate ingredient safety on the same axis but through different lenses: a strict regulatory read, a cautious hazard read, and a lenient dose-aware read. So a permitted-but-flagged ingredient (a paraben, an older UV filter) splits them, and that split is the point.
When these safety lenses agree, the headline safety number is simply their average. When they genuinely disagree, we don’t average the split away — safety is the “is this safe for me” axis, so the headline leans toward the more cautious lens rather than letting two lenient reads outvote one severe one. (Concretely: it sits halfway between the average and the lowest lens.) The full spread and every lens stay shown exactly as they are, named and with funding tags — we shift only the single headline number, never hide the disagreement.
Native scale 0–100, higher is better · normalized to 0–100
Reads a product’s INCI ingredient list and checks each ingredient against open EU regulatory data: Annex II (prohibited in cosmetics), Annex III (restricted, including the labelled fragrance allergens), Annex V (preservatives with limits), plus a small set of common transparency concerns that are not regulatory bans.
The score starts at 100 and subtracts a penalty per matched ingredient, de-duplicated so a repeated ingredient counts once:
The last row is deliberate: an ingredient that EU law explicitly permits — an Annex V preservative such as phenoxyethanol, kept within its concentration limit — is recognized but not treated as a hazard. Being on a regulated list is not the same as being concerning, and presuming compliance is what the toxicology consensus (CIR, EWG) does when it rates these low. It still appears in the decoded-ingredients table with that context, and a more cautious lens is free to disagree — see below.
Then a worst-offender ceiling: if even one prohibited (banned) substance is present, the score is capped at 15 regardless of what else is on the list, so a banned ingredient can’t be diluted into a good score. The regulated-but-permitted categories carry no ceiling — an INCI list can’t prove a concentration breach, so a compliant product is judged on its penalties alone.
Limits · An ingredient list says nothing about concentration: a trace of a restricted preservative and a heavy dose score the same. List quality varies by contributor, and a product with no ingredient data gets no score at all rather than a guessed one.
Native scale 0–100, higher is better · normalized to 0–100
The cautious counterpart to the regulatory scan. It reads the same INCI list but asks a different question: does an ingredient carry a listed hazard trait at all, regardless of whether it is legal or used within a limit? It draws on open hazard lists: the ChemSec SIN List, IARC carcinogen groups, California Proposition 65, EU CLP CMR classifications, and EU endocrine-disruptor assessments.
The score starts at 100 and subtracts a penalty per flagged ingredient, by the kind of concern:
This lens leads with EWG-style worst-offender flooring: the presence of even one ingredient in a category caps the whole score, so a single high-hazard ingredient can’t be diluted by a long benign list. The more severe the trait, the harder the cap:
Limits · This is a hazard read, not a risk one: it flags a trait a chemical can have, not the dose in this product, so it is deliberately harsh on ingredients many regulators still permit. The list is curated from public sources and covers the common flagged ingredients, not every chemical in existence; no flag means none of the listed traits were recognized, never “proven safe”.
Native scale 0–100, higher is better · normalized to 0–100
The lenient counterpart. It reads the same EU regulatory reference as the Ingredient Scan but scores it the way a risk/exposure-minded rater would: an ingredient that is legally permitted and kept within its concentration limit is treated as acceptable, so allergen labelling and soft transparency concerns do not move the number and restricted preservatives barely do. Only genuinely prohibited substances take a large hit.
Even this lenient lens applies one worst-offender ceiling: a prohibited (banned) substance caps the score at 25 — tolerance has limits, and an actually-banned ingredient is past them.
Limits · Leniency cuts both ways: this lens can look past a genuine concern that the precautionary scan catches, which is exactly why we show both and never average them. It shares the regulatory scan’s blind spot on concentration, and a product with no ingredient data gets no score.
Native scale 0–100, higher is better · normalized to 0–100
Scores the recyclability of the materials a product is packaged in, using open standards: SPI/ASTM resin codes, How2Recycle and APR curbside-acceptance guidance, and the EU packaging directive. Each recognized material lands in a tier; whole-component problems (a pump mixing plastic with a metal spring) override their resin.
The materials themselves reach us three ways, and we always take the strongest available — a weaker one never overrides a stronger:
Limits · This rates materials, not the carbon footprint or refill story. A tag we don’t recognize (a shape like “bottle”) is skipped, never treated as unrecyclable. Curbside acceptance also varies by municipality, so a tier is a typical case, not a promise. And “plastic, unspecified” is the cautious middle of the plastics range, not a finding about that particular bottle — it is what we say when the resin was never recorded.
Native scale 0–100, higher is better · normalized to 0–100
A brand-level signal relayed from the published cruelty-free certification lists, Leaping Bunny (Cruelty Free International) and PETA’s Beauty Without Bunnies, which is why one entry rates every product of a brand. Statuses map to fixed scores:
The contested middle is deliberate: a certified brand owned by a conglomerate that sells in markets requiring animal testing (Garnier, Dove, NYX) is exactly the case advocates disagree about, so it sits between the poles instead of being rounded to either.
Limits · Absence from the lists means no certification on record. That reads as unknown, never as “tests on animals”. Statuses genuinely change with ownership and market entry; this snapshot is dated 2026-07 and is meant to be refreshed from the published lists.
Real ratings we ingest rather than compute; everything else on a product page is one of our own scans above.
Native scale 0–100, higher is better · normalized to 0–100
The open, crowd-sourced product database Greenlens ingests its catalog from. When a contributor-computed Eco-Score is present we surface it on the environmental axis; it is real ingested data, present for only a small slice of cosmetics.
Native scale 0–100, higher is better · normalized to 0–100
Ethics certifications Open Beauty Facts records on a product — cruelty-free, vegan, fair-trade, B Corp — entered by contributors against the certifiers’ registries. Shown on the labor axis, free to disagree with our brand-level cruelty-free table: a product-level claim and a brand’s parent-company record genuinely differ. A third-party-audited mark (Leaping Bunny, PETA) scores above a self-declaration; absence means “no certification on record,” never “not certified.”
Native scale 0–100, higher is better · normalized to 0–100
Organic and natural certifications Open Beauty Facts records on a product — COSMOS, Ecocert, NATRUE, the EU Ecolabel, and others. Shown on the environmental axis as the certifier’s verdict, free to disagree with OBF’s own Eco-Score rather than blended into it. A certified-organic mark scores above a bare “organic” claim; absence means “no eco-certification on record.”
Native scale 0–100, higher is better · normalized to 0–100
The California Safe Cosmetics Program database (California Dept. of Public Health): products whose makers reported containing an ingredient on California’s list of chemicals known or suspected to cause cancer or reproductive harm. A product-level signal on the ingredient-safety axis — it is a disclosure of presence, not a finding of harm at the level used, and it only appears where a report exists. It can openly split from our ingredient scans.
Native scale 0–100, higher is better · normalized to 0–100
Health Canada’s Cosmetic Ingredient Hotlist — the Canadian government’s list of ingredients prohibited or restricted in cosmetics — matched against each product’s ingredients. A distinct national regulator from the EU and California lists our scans use, on the ingredient-safety axis. Absence means “not on the Hotlist,” never “proven safe.”
Native scale 0–100, higher is better · normalized to 0–100
The EU restriction on intentionally-added microplastics (Regulation 2023/2055), matched against each product’s ingredients to flag solid, water-insoluble synthetic-polymer microparticles (microbeads, some film-formers). An environmental-axis signal; a flag means an in-scope polymer is present, not that the product is illegal (the phase-out runs to 2035).
Native scale 0–100, higher is better · normalized to 0–100
California’s Proposition 65 list (OEHHA) — chemicals the state has determined can cause cancer or reproductive harm — matched against each product’s ingredients. A famous, specific US authority on the ingredient-safety axis. A listed chemical is not proof of harm at the level used; absence means “not Prop 65-listed,” never “proven safe.”
Native scale 0–100, higher is better · normalized to 0–100
The US National Toxicology Program’s Report on Carcinogens — the federal list of substances known or reasonably anticipated to be human carcinogens — matched against each product’s ingredients. An independent US authority that can corroborate or diverge from the EU, California, and Canada lists on the same axis.
Native scale 0–100, higher is better · normalized to 0–100
The IARC Monographs — the World Health Organization’s international classification of carcinogens, grouping each evaluated agent by the strength of evidence that it causes cancer in humans (Group 1 carcinogenic, 2A probably, 2B possibly) — matched against each product’s ingredients on the ingredient-safety axis. A distinct international authority that openly disagrees with the others: it classifies titanium dioxide, talc, benzophenone, carbon black and diethanolamine that the US NTP list does not, and where the two split we show the split rather than average it. A classification identifies a hazard, often for a specific form or route (respirable powder, whole-leaf extract), not proof of harm at the level actually used; absence means “not classified in Groups 1–2B,” never “proven safe.”
Native scale 0–100, higher is better · normalized to 0–100
Health Canada’s Recalls & Safety Alerts feed. When a cosmetic is recalled — for contamination, an undeclared allergen, a prohibited ingredient — that product is flagged on the ingredient-safety axis. A strong external negative signal that can contradict a clean ingredient scan. Matching is conservative and Canada-market, so coverage is thin; absence means “no recall on record.”
Native scale 0–100, higher is better · normalized to 0–100
The EU Safety Gate (formerly RAPEX) — the European Commission’s rapid-alert feed for dangerous non-food products, where a national authority reports a cosmetic it has withdrawn or recalled. Matched conservatively by brand and product name on the ingredient-safety axis. A specific product-level negative that can contradict an otherwise clean ingredient scan; coverage is EU-market and thin, so absence means “no EU alert on record,” never “proven safe.”
Native scale 0–100, higher is better · normalized to 0–100
ANSES, the French agency for health & environmental safety, maintains a national list of substances of concern for endocrine activity (its SNPE2 strategy), with each substance’s CMR classification. We match that list against each product’s ingredients on the ingredient-safety axis. A listing is a hazard-trait flag, not proof of harm at the level used; absence means “not on ANSES’s list.”
Native scale 0–100, higher is better · normalized to 0–100
Annex VI to the EU CLP Regulation (EC No 1272/2008) — the EU’s legally binding list of harmonised classifications, where a substance’s carcinogenic, mutagenic, reproductive-toxicant (CMR) or skin-sensitiser class is fixed EU-wide rather than self-assigned by suppliers. We match the CMR and sensitiser entries against each product’s ingredients by CAS on the ingredient-safety axis. A harmonised classification identifies a hazard, not proof of harm at the level actually used in a product; absence means “no harmonised classification,” never “proven safe.”
Native scale 0–100, higher is better · normalized to 0–100
PETA’s Beauty Without Bunnies list of companies that do not test on animals, matched to a brand rather than a product, so one entry covers every product of that brand. Verification is SELF-ATTESTED: the company answers a questionnaire and signs a statement of assurance, and PETA does not audit it. That is the whole reason this ships beside Leaping Bunny instead of blended into one “cruelty-free” mark: both are nonprofits, so the funding tag cannot tell them apart, and the two lists genuinely disagree about which brands belong. Shown on the labor axis as a brand-list membership, never as a clearance and never as a score: this list says something about the COMPANY, and never looked at this product’s ingredients. PETA’s own “PETA Business Friend” marker (a paying supporter relationship) is shown where it applies, because hiding it would be taking a side in the long-running argument about this list. Absence means “not on this list”, never “tests on animals”: a company only appears once it applies.
Native scale 0–100, higher is better · normalized to 0–100
The Leaping Bunny Compassionate Shopping Guide, operated by the American Anti-Vivisection Society under the standard approved by the Coalition for Consumer Information on Cosmetics, matched to a brand rather than a product. Verification is an INDEPENDENT AUDIT of the supply chain plus a fresh commitment every year, and brands that stop recommitting are removed. Shown beside PETA’s list, never merged with it, and shown on the labor axis as a brand-list membership rather than a clearance or a score: it certifies the COMPANY, and never looked at this product’s ingredients. Where Leaping Bunny marks a certified brand as owned by a non-certified parent company, we show that marker as Leaping Bunny states it: the brand certification stands and the parent is not covered by it. Absence means “not certified”, never “tests on animals”.
See it applied on any product page under “How this score is built”, or browse where the raters disagree.