The 14 allergens, and the ways packs hide them
Cocoa butter isn’t dairy. “Reconstituted buttermilk (1%)” is. Real examples of how declarations mislead.
Written 7 Aug 2026
UK food law names 14 allergens that have to be declared, however small the amount, whenever they’re present as an ingredient or a processing aid. The list itself is short enough to memorise. Getting a real ingredients list right is harder than the list suggests, because suppliers don’t always write allergens in ways that look like allergens.
The 14, in full
Celery (including celeriac and celery seed) · Cereals containing gluten (wheat, rye, barley, oats, and their hybrid strains) · Crustaceans (prawns, crab, lobster) · Eggs · Fish · Lupin · Milk · Molluscs (mussels, oysters, squid, snails) · Mustard · Peanuts · Sesame · Soybeans · Sulphur dioxide and sulphites (above 10mg/kg or 10mg/litre; common in dried fruit and wine) · Tree nuts (almonds, hazelnuts, walnuts, cashews, pecans, brazil nuts, pistachios, macadamia and Queensland nuts).
Two pairs get merged by mistake often enough to call out specifically: peanuts and tree nuts are two entirely separate allergens, not one “nuts” category: someone who’s fine with peanuts can still react badly to almonds, and the reverse. And gluten is declared by the cereal, so a product is never simply “gluten” on a label: it’s wheat, barley, oats, and so on, whichever is actually present, whether or not the finished product happens to be marketed as gluten-free.
Where declarations actually go wrong
The rule is simple; supplier ingredient lists are where it gets hard. We’ve built and rebuilt our own allergen detection more than once, and every mistake we’ve caught has come from the same underlying problem: an allergen doesn’t always look like the word for the allergen. Three real examples from our own catalogue, worth knowing about because they’re not unusual cases; they’re the ordinary ones.
A false alarm: cocoa butter is not dairy. A supplier’s dark chocolate chips were declared as “Cocoa Mass, Sugar, Cocoa Butter, Fat Reduced Cocoa Powder, Emulsifier (Soya Lecithins)”: no dairy anywhere in that list. Simple keyword matching on the word “butter” flagged it as containing milk anyway, and, worse, a human check waved the false flag through rather than catching it. Cocoa butter is the fat naturally present in cocoa beans; it shares a name with dairy butter and nothing else.
A missed one: “Reconstituted Buttermilk” genuinely is dairy. A baking spread’s declaration listed “Reconstituted Buttermilk (1%)” as an ingredient: easy to read past if you’re scanning for the word “milk” and don’t stop on “buttermilk”. It’s a real dairy allergen at a real concentration, and it was missed twice before the pattern was caught, because it doesn’t contain the exact word being searched for.
A blind spot: generic “nuts” is not a specific nut. Packs constantly carry wording like “may contain nuts” without naming which ones, common enough that treating it as an edge case is the actual mistake. A detection system built to catch “almonds”, “hazelnuts” and the other specific tree nuts by name will walk straight past the word “nuts” on its own, because the common case turned out to be the vague one, not the exotic one.
Why this matters more than it looks like it should
None of these three examples involves an unusual or obscure product: a chocolate chip, a baking spread, a “may contain” line. That’s the point. Allergen mistakes don’t cluster in exotic ingredients; they cluster in the ordinary declarations nobody reads twice, because the wording looks routine.
It’s also why we’ve stopped treating “a human checked it” as the end of the story. Human verification is not a backstop: someone genuinely did tick the cocoa butter chips as containing milk, and they were wrong, because the label read like it might be right. Assume every manual check has a false-negative rate, automated or not, and build the process around confirming against the actual pack every time, not around trusting a first read.
What this means for your labels
Read the whole ingredients list on every pack, every time you use it, not just the bold bits, and not from memory, even for a supplier product you’ve bought a hundred times, because manufacturers reformulate without warning. Compound ingredient names (see our weight-order guide) are exactly where an allergen hides: the sub-ingredients inside a bracket are as real as anything else on the label.
This is exactly the workflow ProvenBatch builds around: allergens are detected for you straight from the supplier pack’s own declaration, and never ticked for you. You confirm each one against the pack, because as the examples above show, the safest system is the one that assumes any single check, human or automated, can be wrong, and asks you to look again. Read more about how the underlying rule works in our Natasha’s Law guide.
Sources
More guides
Natasha’s Law for small food businesses: what PPDS actually requires
The pillar guide: scope, the 14 allergens, emphasis rules, and what an inspector looks for.
“May contain”: what precautionary allergen labelling is actually for
PAL is voluntary and should follow a real risk assessment, not habit.
Try ProvenBatch
Private beta until 30 September · Public free trial opens 1 October · From £9 a month Free 30 days, no card · Data held in the UK · From £9 a month