A "may contain" statement, "may contain tree nuts", "made on shared equipment with peanuts", "made in a facility that also processes milk", is voluntary. FDA's allergen labeling law requires the nine major allergens to be declared when they're ingredients; it doesn't require, or define, statements about allergens that might get in by accident. What applies to them is the general rule that a label can't be false or misleading, and the food safety rule that a maker keeps allergens out by its controls, cleaning, scheduling and separation, not by its label. So a precautionary statement fits only where a real risk is left after the controls, and it's never a stand-in for them. In the example below, a bakery goes product by product and ends up with one "may contain" statement, not five. Below are the rules, the decisions, wording, and a free worksheet.
The short version
- Allergens that are ingredients are declared; that's the law. "May contain" is something else.
- "May contain" statements aren't required and aren't defined by FDA's rules.
- They have to be truthful and not misleading.
- They don't replace allergen controls: changeover cleaning, scheduling, separate equipment.
- Use one only where a real risk remains after the controls.
- Putting it on everything tells allergic customers nothing, and narrows what they can buy.
- TaroStack keeps changeover checks on each batch record, and each batch's lots. More below.
The rules that apply
| Rule | What it means for "may contain" | Source |
|---|---|---|
| A label can't be false or misleading | The statement has to be true: there's a real chance of the allergen | 21 U.S.C. 343(a) |
| Food allergen controls protect against cross-contact | The plant controls cross-contact; the label isn't the control | 21 CFR 117.135(c)(2) |
| Major allergens that are ingredients are declared | A "may contain" can't stand in for a Contains statement | 21 U.S.C. 343(w) |
How to declare allergens that are ingredients is in allergen matrix template, and what happens when a label misses one in undeclared allergen recall. This is general information, not legal advice.
An example: one statement, not five
Flint Hills Bakery, a made-up wholesale bakery in Topeka, Kansas, I use in these examples, makes walnut bread alongside products that shouldn't have walnuts in them:
| Product | Allergen in the bakery | An ingredient? | Shared? | Changeover checked? | Risk left? | On the label |
|---|---|---|---|---|---|---|
| Sourdough | Walnuts | No | No: own line, baked first | No | Nothing about walnuts | |
| Sourdough | Milk | No | Shared mixer | Yes | No | Nothing about milk |
| Cream cheese danish | Walnuts | No | Shared bench and oven | Yes | No | Nothing about walnuts |
| Walnut bread | Walnuts | Yes | Contains: wheat, walnuts | |||
| Oat cookies | Walnuts | No | Shared bench; walnut dust when chopping | Yes | Yes | May contain walnuts |
The sourdough and the danish have controls that work: the danish is made on a bench cleaned and checked after every walnut run, written on the batch record. The oat cookies are made the same morning the walnuts are chopped, and walnut dust settles across the room, so the bakery can't honestly say the cookies are walnut-free; "may contain walnuts" is the true statement, and the bakery is moving chopping to the afternoon so it can come off. How the bakery's whole HACCP plan handles allergens is in its food safety plan; what that holds is in what is a food safety plan.
Wording
| Says | Use when |
|---|---|
| "May contain walnuts" | The allergen could get in despite the controls |
| "Made on shared equipment with peanuts" | The same equipment is used, and cleaning can't rule it out |
| "Made in a facility that also processes milk" | The allergen is in the building but kept apart; often more than the facts call for |
Name the specific allergen, walnuts, not "nuts", and keep the statement apart from the Contains statement so it isn't mistaken for an ingredient declaration.
Get the worksheet
Download the may contain decision worksheet. One sheet: one line for each product and each major allergen handled in the same place, with whether it's an ingredient, whether equipment or air is shared, whether the changeover clean is checked, and whether any risk is left, where what goes on the label fills in. It's an ordinary Excel file with no macros, and it works in Google Sheets, LibreOffice and Numbers.
Where this stops working
A decision sheet is right until the schedule changes. When the walnut chopping moves back to the morning on a busy week, or a new hire skips the bench check, the label printed last month is wrong in one direction or the other, and nobody can tell which batches were made which way.
How TaroStack does it
TaroStack keeps changeover checks on each batch record, and each batch's lots.
Changeovers on the batch record. Fields of your own on the batch record, tick boxes and initials, record "bench cleaned and checked after walnut run" for every batch, and printable batch-record forms carry them for the kitchen.
Recipe versions. Recipes are versioned, so a product that changes, the oat cookies with or without a walnut-free schedule, is a new version on a date, and each batch records which version it was made from.
Lots to customers. Each batch records the lots it consumed, and each order records the lots each customer got, so if a changeover was missed, one recall report shows which cafés got that batch.
| The job | Notebook | In TaroStack |
|---|---|---|
| Changeover check | Remembered | A tick box on every batch record |
| Which batches were made after a missed check | Unknown | On the batch records |
| Which cafés got them | Search the invoices | One recall report |
Batches, batch records with fields of your own, versioned recipes and recalls are on every plan, from $49 a month. The first 30 days are free, with no credit card. If you'd like a hand setting up, ask, and we'll do it with you.
