How to write a contains statement on a food label
A "Contains" statement on a food label is one of two legal ways to declare major food allergens. It goes immediately after or adjacent to the ingredient list, in type at least as large as the ingredient list, and it must name every major allergen in the product using the specific food source: "Contains: almond, wheat, milk." Not "tree nuts." You need one declaration method, not both.
on this page +−
- 1. The 9 major food allergens
- 2. The two legally valid declaration methods
- 3. Specificity: this is where labels fail
- 4. Formatting and placement rules
- 5. "May contain" is voluntary, and it is not a shield
- 6. Cross-contact versus ingredient allergens
- 7. Gluten-free is a completely separate rule
- 8. Why allergen errors carry the most risk
- 9. Cottage food operators get no exemption from this
- 10. FAQ
If you're checking a label right now, the two things most likely wrong are specificity and completeness. Read the next three sections and you'll have it.
The 9 major food allergens
FDA: "The major food allergens are milk, eggs, fish, Crustacean shellfish, tree nuts, peanuts, wheat, soybeans, and sesame."
Sesame is the newest. The FASTER Act added it, and FDA states: "The change was effective on January 1, 2023." Sesame is the one still missing from labels people wrote in 2021 and never revisited.
| Allergen | Where it hides on small-batch labels |
|---|---|
| Milk | Whey, casein, caseinate, ghee, lactose, "natural butter flavor" |
| Eggs | Albumin, lysozyme, egg wash on baked goods, meringue powder |
| Fish | Worcestershire sauce (anchovy), fish sauce, Caesar dressing |
| Crustacean shellfish | Shrimp paste, some broths and bases, surimi |
| Tree nuts | Nut flours, nut butters, marzipan, some "natural flavors," pesto |
| Peanuts | Peanut flour, some chili and satay bases, cross-use fryer oil |
| Wheat | Malt, seitan, some soy sauces, dusting flour, thickeners |
| Soybeans | Soy lecithin, hydrolyzed soy protein, edamame, some emulsifiers |
| Sesame | Tahini, hummus, za'atar, some breads and buns, sesame oil |
The rule is not "is this allergen a headline ingredient." It's "is it in there at all." Soy lecithin at 0.2% of the formula is a soy declaration.
The two legally valid declaration methods
The requirement comes from section 403(w) of the Federal Food, Drug, and Cosmetic Act (21 U.S.C. 343(w)), enacted by FALCPA. There are exactly two compliant ways to do it, described on FDA's food allergies page:
Method 1: parenthetically, inside the ingredient list. The food source appears "in parentheses following the name of the ingredient." FDA's own example: "lecithin (soy)."
INGREDIENTS: Enriched flour (wheat flour, niacin, reduced iron, thiamine mononitrate, riboflavin, folic acid), sugar, butter (milk), semisweet chocolate chips (sugar, chocolate liquor, cocoa butter, soy lecithin), eggs, vanilla extract, baking soda, salt.
Method 2: a "Contains" statement placed "immediately after or next to the list of ingredients."
INGREDIENTS: Enriched flour, sugar, butter, semisweet chocolate chips, eggs, vanilla extract, baking soda, salt.
CONTAINS: WHEAT, MILK, SOY, EGG.
You need one, not both. FDA's Questions and Answers Regarding Food Allergen Labeling, Edition 5 (final, January 2025) confirms allergens may be declared in the ingredient list or in a Contains statement "or both." Using both is allowed. It is not required, and doing both badly is worse than doing one well, because the two have to agree.
Most small operators find the Contains statement easier to keep correct, because it's one line to audit instead of a scan of every parenthetical in a long ingredient list.
Specificity: this is where labels fail
The statute requires you to name the actual food source, not the category.
FDA: "The law also requires that the type of tree nut (for example, almonds, pecans, walnuts), and the species of fish (for example, bass, flounder, cod) and Crustacean shellfish (for example, crab, lobster, shrimp) to be declared."
| Wrong | Right |
|---|---|
| Contains: Tree nuts | Contains: Almond, pecan |
| Contains: Fish | Contains: Cod |
| Contains: Shellfish | Contains: Shrimp |
| Contains: Nuts | Contains: Peanut, walnut |
"Contains: tree nuts" is non-compliant on its face. Someone allergic to walnuts but fine with almonds gets no usable information from it, which is the entire point of the requirement. This single error is one of the most common things a retail buyer or co-packer flags on a first label review.
Milk, eggs, wheat, soybeans, peanuts and sesame don't need further specification. The tree nut, fish and shellfish categories do.
Formatting and placement rules
Placement. Section 403(w)(1)(A) requires the Contains statement to be "printed immediately after, or adjacent to, the ingredient list." Not on the front panel, not three lines below with the net weight in between, not on a separate sticker across the package.
Type size. Per FDA's Edition 5 guidance, the Contains statement must be in "the same type (i.e., print or font) size as that used for the ingredient list." You may go larger. You may not go smaller.
Completeness. Also from Edition 5: "If a 'Contains' statement is used on a food label, the statement is to include the names of the food sources of all major food allergens used as ingredients in the packaged food." All of them. Not the ones you think are surprising. If wheat is obvious from the product name, wheat still goes in the statement.
The word itself. Start with "Contains" followed by the allergen names. Bold and all-caps are common and help legibility, but the legal requirements are placement, type size and completeness.
Worked examples
| Statement | Verdict |
|---|---|
Contains: Wheat, Milk, Soy, Egg. | Compliant, assuming those are all of them |
Contains: Tree Nuts, Wheat. | Non-compliant. Name the nut |
Contains: Almond, Wheat. | Compliant |
Contains: Milk. on a product with milk and sesame | Non-compliant. Incomplete |
May contain traces of peanuts. used alone on a product containing peanut flour | Non-compliant. An advisory statement is not a declaration |
Contains: Wheat. printed on the front panel, away from the ingredient list | Non-compliant. Wrong placement |
"May contain" is voluntary, and it is not a shield
This is the most misunderstood line on a food label, in two opposite directions.
Direction one: people think it's required. It isn't. FDA states plainly that advisory statements like "may contain [allergen]" or "produced in a facility that also processes [allergen]" are voluntary: "Such statements are not required by law." Nothing obligates you to add one, and adding one does not make you more compliant.
Direction two: people use it as a liability shield. It doesn't work that way either. FDA's Edition 5 guidance: "An allergen advisory statement, such as 'may contain [allergen],' is not a substitute for adherence to current good manufacturing practices." FDA's food allergies page puts it the same way: advisory statements "should not be used as a substitute for adhering to current good manufacturing practices and must be truthful and not misleading."
Translation: you cannot solve a cross-contact problem by printing a sentence about it. If peanut residue can reach your product, the required response is cleaning, scheduling, segregation and validation. The advisory statement is an optional disclosure on top of that work, not a replacement for it.
There's a practical cost too. FDA's own experts note that these statements are voluntary with "no uniform rule that governs what they mean," and that research shows "the type of advisory statement does not correlate with presence or absence of allergen in the product or with allergen levels." The allergy community's standard advice is to avoid any product carrying one. A blanket "may contain" on a product that doesn't need it removes you from a customer's shopping list for no compliance benefit.
Use it when you have a real, assessed cross-contact risk you cannot eliminate. Don't use it as boilerplate.
Cross-contact versus ingredient allergens
These are two different problems with two different fixes.
An ingredient allergen is in your formula on purpose. Butter, eggs, almond flour, soy lecithin. It gets declared, either parenthetically or in the Contains statement. Non-negotiable.
Cross-contact is unintended allergen transfer: shared equipment, shared fryer oil, airborne flour, a scoop that moved between bins, a co-packer running peanut product on the same line the shift before. Cross-contact is a manufacturing control problem, addressed by cleaning validation, production sequencing and supplier verification. It does not go in the Contains statement, because the Contains statement is for what's actually in the food.
Putting a cross-contact allergen in your Contains statement is technically a false declaration. Putting an ingredient allergen in a "may contain" statement is a compliance failure. Keep them separate.
Gluten-free is a completely separate rule
People conflate these constantly. Wheat is a major allergen. Gluten is not an allergen category at all.
"Gluten-free" is a voluntary nutrient-content-style claim governed by 21 CFR 101.91. The threshold: any unavoidable presence of gluten in a food bearing the claim must be "below 20 ppm gluten (i.e., below 20 mg gluten per kg of food)." Under 101.91(b)(2), "no gluten," "free of gluten" and "without gluten" carry identical requirements.
Three consequences worth knowing. A product can be wheat-free and still not qualify as gluten-free, because barley and rye contain gluten and are not major allergens. A product can be legitimately gluten-free and still need a Contains statement for milk, egg or soy. And making a gluten-free claim is a voluntary act that brings a testing and record-keeping burden with it. If you don't have data supporting under 20 ppm, don't make the claim.
Why allergen errors carry the most risk
FDA states that "recalls due to undeclared food allergens are a leading cause of all food product recalls," and adds that "of the major food allergens, milk represents the most common cause of recalls due to undeclared allergens." USDA's Economic Research Service, reviewing recalls from 2004 to 2013, attributed 41 percent to pathogen contamination and 27 percent to undeclared allergens.
An undeclared allergen is also the one labeling error that can reach 21 CFR 7.3(m)(1), which defines a Class I recall as a situation with "a reasonable probability that the use of, or exposure to, a violative product will cause serious adverse health consequences or death." A wrong serving size doesn't get there. A missing "Contains: peanut" does.
That's the honest reason to take this page more seriously than the rest of the compliance checklist. Most label mistakes cost you a print run or a retail listing. This one has a different ceiling.
Cottage food operators get no exemption from this
If you're operating under a state cottage food law, your exemption covers the Nutrition Facts panel. It does not cover allergen declaration. Allergen labeling is a separate statutory requirement, and state cottage food label rules almost universally require it independently.
So: no nutrition panel needed, allergen declaration still needed. The same is true for a small business relying on the low-volume nutrition labeling exemption at 21 CFR 101.9(j)(18) — that exemption is about the panel, not about allergens. Cottage food labeling requirements vary by state, so verify the specifics with your state agriculture or health department. Start with do I need a nutrition label if you're unsure which exemptions apply to you.
If you do end up needing the panel, Nutrillius builds an FDA-compliant Nutrition Facts panel from your recipe in about a minute and flags the major allergens in your ingredient list as it goes. $39 one time with 90 days of edits, or $69/mo for several products.