Two allergen statements, one law between them
Regulation (EU) No 1169/2011 governs the allergens that are ingredients. It says nothing at all about the "may contain traces" line printed underneath them.
Turn over almost any packet in a Greek or European supermarket and you will find allergens mentioned twice. Once inside the ingredient list, where a word like wheat or milk appears in bold. Once again afterwards, in a sentence that begins "may contain traces of" or "μπορεί να περιέχει ίχνη από".
They look like two versions of the same warning. They are not. The first is a legal declaration with a precise meaning and mandatory wording. The second is a voluntary sentence the manufacturer chose to print, with no legal definition, no threshold, and no obligation behind it.
For most shoppers that distinction is academic. If you are coeliac, or you carry an adrenaline pen for peanut, it is the whole game — because the two statements fail in opposite directions, and knowing which one you are reading changes what you should do with the pack in your hand.
What the law actually mandates
Fourteen substances, listed in Annex II, must be declared whenever they are used as an ingredient — and emphasised so they stand out from the rest of the list.
Annex II of Regulation 1169/2011 names them: cereals containing gluten, crustaceans, eggs, fish, peanuts, soybeans, milk, nuts, celery, mustard, sesame, sulphur dioxide and sulphites above 10 mg/kg, lupin and molluscs. That list is closed and identical across the EU, which is why an allergen app can be exhaustive about it in a way it can never be about, say, food intolerances in general.
Article 21 adds the part people actually see: the allergen must be emphasised within the ingredient list, "by a typeset that clearly distinguishes it from the rest" — bold, capitals or underlining. So a genuine allergen is never only mentioned in a footnote. It is in the list itself, standing out. If the product contains a compound ingredient, its components are broken out in brackets, which is how milk appears inside "chocolate (cocoa mass, sugar, cocoa butter, milk)".
There is no minimum quantity. If it is an ingredient, it is declared, whether it is 40% of the product or a pinch. That is the strength of Annex II: for a deliberately added allergen, the label is complete by law.
What "may contain" is, and why it is weaker than it looks
Precautionary allergen labelling is unregulated in the EU. No threshold defines when it must appear, no wording is prescribed, and nothing requires a manufacturer to use it at all.
"May contain traces" describes cross-contamination risk: shared production lines, shared equipment, airborne flour in a bakery. It is the manufacturer's own risk assessment, expressed in their own words. You will see "may contain", "may contain traces of", "produced in a facility that also handles", "not suitable for" — all meaning roughly the same thing, none of them defined anywhere in EU law.
This has one consequence that matters more than all the others: **the absence of a trace statement is not evidence that there is no trace risk.** Two factories with identical cross-contamination can label differently and both be fully compliant, because neither is obliged to say anything. A cautious manufacturer prints the line; a less cautious one does not; the pack that stays silent looks safer and may not be.
It also runs the other way. Because the statement costs nothing to print and reduces liability, some producers apply it very broadly, which shrinks the range of food an allergic person feels able to eat without making anyone safer. International work on reference doses — the FAO/WHO expert consultations that underpin the Codex discussions — exists precisely to put numbers under this, but the EU has no binding threshold today.
So: a declared allergen is a fact. A trace statement is a caution. A missing trace statement is not information at all.
Reading a multilingual pack without getting caught out
Imported packs carry five or six languages. The trace line belongs to a language block, and blocks get cut off, wrapped round corners, or printed in different places.
On a pack sold across several countries, the ingredient list is repeated per language, each with its own trace statement. The practical trap is that these blocks are rarely the same length, so the Greek block may end halfway down the panel while the English one continues round the seam. Read one block through to its full stop; do not assemble a list from two languages.
The trace statement is also not always adjacent to the list. Manufacturers put it under the nutrition table, beside the barcode, or at the end of the storage advice. If you have read the ingredients and found no trace line, it is worth one more look at the rest of the panel before concluding there isn't one.
And a plain physical warning, because it is the commonest failure we see in photographs of labels: fine print on a curved or foil surface reflects. A glare band across a single line is enough to hide an entire allergen word, and the eye fills it in without noticing. Tilt the pack until the line reads cleanly rather than guessing at the word underneath the shine.
How Ingredo.app reads the two statements
They are stored as separate facts, because they mean different things. Declaring them the same way would either over-block ordinary food or quietly hide a real risk.
Declared allergen — a hard block
- An Annex II allergen present as an ingredient, or named in a "contains" statement
- Blocks the product outright for the matching allergen module or allergen in your profile
- All 14 Annex II allergens have a module, so no legally declarable allergen is missing
"May contain traces" — a caution, never a block
- Kept as a separate trace field, not merged into the ingredients
- Surfaces as a warning so you decide, since tolerance and risk appetite are personal
- A trace statement is never inverted into a declaration — "gluten free" stays free from gluten
What we will not claim
- That a product without a trace statement is free of trace risk — nothing on the label says that
- Anything about quantity: we read that an allergen is present, never how much
- That a photographed label is complete — if a line was unreadable, the product stays unrated
Frequently asked questions
No. Regulation (EU) No 1169/2011 requires the 14 Annex II allergens to be declared when they are used as ingredients, and requires them to be emphasised in the ingredient list. Precautionary statements about cross-contamination are voluntary: no EU rule sets a threshold at which one must appear, prescribes its wording, or obliges a manufacturer to print one.
You cannot conclude that from the label. Because the statement is voluntary, a product with genuine cross-contamination risk may carry no warning at all and still be fully compliant. The absence of a precautionary statement tells you what the manufacturer chose to print, not what happens on the production line. For a severe allergy, contact the manufacturer rather than inferring from silence.
Cereals containing gluten (wheat, rye, barley, oats, spelt, kamut), crustaceans, eggs, fish, peanuts, soybeans, milk, nuts (almond, hazelnut, walnut, cashew, pecan, Brazil, pistachio, macadamia), celery, mustard, sesame seeds, sulphur dioxide and sulphites at more than 10 mg/kg, lupin, and molluscs. The list is Annex II of Regulation 1169/2011 and is the same in every member state.
The two should not appear together, because "gluten free" is a regulated claim with a number behind it: under Regulation (EU) No 828/2014 it may only be used where the food contains no more than 20 mg/kg of gluten as sold. That is a tested threshold, unlike a precautionary line. If a pack genuinely carries both, treat it as a labelling error worth querying with the manufacturer.
No, and for allergens more emphatically than anywhere else. An app reads a catalogue record or a photograph, both of which can be out of date or incomplete — recipes change, a pack is reformulated, a line of fine print is lost to glare. Ingredo.app blocks declared allergens and warns on trace statements to narrow down what is worth checking, but the physical label in your hand is the authoritative one.