Why ingredient scanner apps flag safe ingredients - and what we changed
Most scanner apps lose points for an ingredient because it appears on a list. We measured what that did to our own scores, then rebuilt the score around what each entry actually says.
By Alex Vasile, Founder, LuminellePublished
Most ingredient scanner apps deduct points because an ingredient appears on a list, whatever the list entry says. When Luminelle measured its own earlier score that way, 87% of all deducted points sat on ingredients the EU explicitly permits. The score now reads each entry for what it asserts, and the mean across 351 products moved from 71 to 85.
87%
of deducted points sat on Annex III, V and VI entries: ingredients the EU permits below a stated concentration
0–45
where mainstream, fully compliant products scored under the presence-based model
71 → 85
mean score across the catalogue after reading each entry for what it says
351
products with fully resolved ingredient lists in the replay, range kept at 40–100
What can a scanner actually see on a label?
An ingredient list tells you what is in a product, in descending order of weight, and then it stops. Article 19 of the EU Cosmetics Regulation requires that order only down to 1%; below that, ingredients may appear in any order. Nowhere on the label is a concentration. So every app in this category, ours included, works from the same thin evidence: the names, their order, and whatever it knows about the kind of product.
That matters because most regulation in this space is about amount. The EU register, CosIng, carries roughly 29,000 ingredient names, and its annexes say things like “permitted up to 1%”, “permitted in rinse-off products up to 2.5%”, or “must be named on the label above 0.001%”. A scanner cannot see whether a product obeys those numbers. It can only see that the ingredient is on the list.
Where did the points go under a presence-based score?
The obvious way to build a score, and the way Luminelle first built it, is to give every regulatory entry a weight and subtract that weight times a constant for each flagged ingredient. Our early model took the entry’s weight times eight points per ingredient. Whether the entry was a ban or a limit did not matter; presence was the trigger.
In September 2026 we replayed that model over our alpha catalogue and looked at where the points went. 87% of everything deducted came from Annex III, V and VI entries: ingredients the EU permits, at a stated concentration, that the label has no way to show. Preservatives such as phenoxyethanol and sodium benzoate, UV filters such as benzophenone-3 and homosalate, and the named fragrance allergens such as limonene and linalool carried most of the weight. Almost all of the remaining “bans” were grade conditions: petrolatum, which Annex II lists except where its full refining history is known, and butane, banned only above a butadiene threshold that cosmetic grade satisfies by definition.
The result was that mainstream, fully compliant products scored between 0 and 45. And the app’s own citation sat right next to the deduction: an ingredient page would quote the regulator, “permitted up to 1%”, and then take five points off. That is the exact critique cosmetic chemists have made of this category for years, and reading our own output, they were right.
What changed: three tiers instead of one list
The replacement reads each register entry for what it asserts about this product and sorts it into one of three tiers. The reasons and the points are the same ones shown against every ingredient in the app, and the full table is on the methodology page.
- A finding is dose-independent and can be verified from the label alone: an in-force ban in the EU or California, a ban for this kind of product, a use-conditional ban whose use this product is, or an ingredient the EU chemicals agency has concluded is an endocrine disruptor. Twenty points each, and nothing saturates it. Lilial, hydroquinone, zinc pyrithione and cyclotetrasiloxane are findings.
- Scrutiny means a regulator has the ingredient on its radar but the label cannot verify the level: a concentration cap, a named fragrance allergen, an open assessment, a ban passed but not yet in force, a Proposition 65 listing. Scored small, and saturating, so the first capped ingredient costs the most and the tenth almost nothing; ten preservatives never add up to a ban. Triclosan at 0.3%, benzophenone-3 at 6%, homosalate at 7.34%, methylisothiazolinone at 0.0015% in rinse-off products, limonene and linalool all land here.
- Listed, not scored covers entries that are not claims about this product at all: a grade or purity specification, a permitted-colourant listing, a condition that is not a concentration, a use this product is not, such as hair dye, or a cap the label itself proves is met. Shown against the ingredient, worth zero.
Two rules sit on top. Every ingredient counts once, in its most severe class. And products that stay on the skin have their scrutiny total multiplied by 1.4, a fraction of the roughly hundredfold difference in retention that the EU’s Scientific Committee on Consumer Safety assumes between leave-on and rinse-off products. The multiplier is deliberately timid.
| Ingredient | What the register says | Presence-based reading | Tiered reading |
|---|---|---|---|
| Phenoxyethanol | Annex V: permitted as a preservative up to 1% | Flagged; points off | Scrutiny, small and saturating; not scored at all if the label’s order proves it is under 1% |
| Sodium benzoate | Annex V: permitted, up to 2.5% in rinse-off products | Flagged; points off | Scrutiny; in a typical cleanser the two capped preservatives cost 11.8 points between them |
| Limonene | Annex III: a fragrance allergen that must be named above 0.001% in leave-on and 0.01% in rinse-off products | Flagged; points off | Scrutiny, two points, saturating at 14 across every named allergen on the label |
| Lilial | Annex II: banned in the EU since March 2022 | Flagged | Finding, 20 points |
| Petrolatum | Annex II, except where the full refining history is known and the source is not a carcinogen | Flagged as banned | Listed, not scored: cosmetic grade is the grade that passes the exception |
What the label can prove: the 1% line
The label proves more than it seems to. Because Article 19 orders ingredients by weight down to 1%, the first ingredient whose legal cap for this kind of product is 1% or less marks the start of the sub-1% zone. Anything after that marker with a cap of 1% or more is, by the label’s own order, within its limit. Luminelle moves those to the not-scored tier. A softer version uses ingredients that are conventionally formulated under 1%, such as EDTA salts, gums, pH adjusters and tocopherol, as markers, and halves the penalty rather than removing it, because convention is not law.
Worked through on a real product: CeraVe Foaming Cleanser (EAN 3337875597197) resolves 18 ingredients to register entries and four carry a flag. Sodium benzoate and phenoxyethanol are under concentration caps the label cannot prove. Tetrasodium EDTA and ethylhexylglycerin appear only on an industrial classification inventory and are listed, not scored. Two capped ingredients cost 11.8 points, there is no leave-on multiplier because a cleanser is rinsed off, and the product scores 88. Nothing banned, two things under scrutiny, two things shown for transparency.
What happened to the scores
Replayed over the 351 products in the alpha catalogue with fully resolved ingredient lists, in September 2026, the tiered model moved the mean score from 71 to 85. The range stayed 40 to 100: the products at the bottom are still at the bottom, because a ban still costs twenty points and nothing saturates it. What moved were the compliant products that had been paying for their preservatives.
It is worth being precise about what that number is. It is our own measurement, of our own two models, over our own catalogue at that date. It is not a claim about any other app’s numbers, which we cannot see. It is published because every answer about this category repeats the same criticism, that scanner apps demonise safe ingredients, and we wanted to put a figure on how much of a naive score that criticism explains. In our case, most of it.
What this still cannot tell you
- It still cannot see a concentration. A cap the label cannot prove is scored as scrutiny, which is a judgement about evidence, not about safety.
- It scores regulatory status, not hazard. EWG Skin Deep asks what a substance can do at some dose in some context; that is a different and legitimate question, and it produces different answers.
- It says nothing about whether a product works, how it feels, what it costs or how it was made.
- It depends on the product type. An entry written for hair dye is not scored on a face cream. When the type cannot be told, including on a photographed ingredient list, the product is treated as leave-on, the stricter reading.
- It reads the label you give it. A mistyped INCI name or an outdated label is an error the score inherits.
How to check any flag yourself
Every flag in the app links to the register entry it came from: the CosIng annex line, the California bill, the Proposition 65 listing or the ECHA assessment. The reason shown against the ingredient uses the same words as this page and the same points as the methodology table, so the ledger under any score adds up to exactly the penalty. If you think an entry is read wrongly, write to info@luminelle.ai with the regulator citation; corrections go in at the next source refresh.
Questions people ask
- Why do ingredient scanner apps flag ingredients that dermatologists say are safe?
- Because most of them score presence rather than meaning. The EU permits hundreds of ingredients below a stated concentration, and a scanner that treats “appears in Annex III” as a problem flags a compliant, well-formulated product. Under Luminelle’s own earlier presence-based model, 87% of all deducted points sat on entries the EU explicitly permits. Reading each entry for what it says removed that without removing a single genuine ban.
- Is a restricted ingredient dangerous?
- No. A restriction is a regulator stating the level up to which an ingredient is permitted, usually after a safety assessment. It is closer to a permission than to a warning. A ban is the thing to look for, and the app lists bans separately from restrictions for exactly that reason.
- Did the change just make every product score higher?
- The mean rose from 71 to 85 across 351 products, and the range stayed 40 to 100. A ban still costs 20 points and does not saturate, so products carrying one did not move. What rose were compliant products that had been losing points on permitted preservatives, UV filters and named fragrance allergens.
- Is Yuka wrong, then?
- Yuka answers a different question. It scores an ingredient by its risk category and says in its own terms that it does not account for how much of it is in the product. That is a hazard-style reading; Luminelle’s is a regulatory-status reading. The two disagree most on preservatives and UV filters, which is where the gap between presence and meaning is widest. The head-to-head is here.
- How do I check a flag myself?
- Tap the ingredient in the app and follow the link to the regulator’s own entry. The reason and the points shown against it are the same ones on the methodology page, so any score can be reconciled by hand.
Keep reading
Choosing an app · Scoring · September 1, 2026
What to look for in an ingredient scanner app
Eight questions to ask any scanner, each with a test you can run standing in the aisle. We make one of these apps, so the list is written to be checked against ours too.
By Alex Vasile
Cycle · Meals · August 25, 2026
An app that tracks your meals and your menstrual cycle together
Log your period once and snap your plate. Every meal after that carries the phase you were in, and a nightly pass looks for patterns between what you ate and how the month went.
By Alex Vasile
Luminelle vs YukaLuminelle vs Think DirtyLuminelle vs EWG Skin Deep
