nutrillius
Guide · Allergens

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.

The Nutrillius teamUpdated August 2, 202610 min read
on this page
  1. 1. The 9 major food allergens
  2. 2. The two legally valid declaration methods
  3. 3. Specificity: this is where labels fail
  4. 4. Formatting and placement rules
  5. 5. "May contain" is voluntary, and it is not a shield
  6. 6. Cross-contact versus ingredient allergens
  7. 7. Gluten-free is a completely separate rule
  8. 8. Why allergen errors carry the most risk
  9. 9. Cottage food operators get no exemption from this
  10. 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.

AllergenWhere it hides on small-batch labels
MilkWhey, casein, caseinate, ghee, lactose, "natural butter flavor"
EggsAlbumin, lysozyme, egg wash on baked goods, meringue powder
FishWorcestershire sauce (anchovy), fish sauce, Caesar dressing
Crustacean shellfishShrimp paste, some broths and bases, surimi
Tree nutsNut flours, nut butters, marzipan, some "natural flavors," pesto
PeanutsPeanut flour, some chili and satay bases, cross-use fryer oil
WheatMalt, seitan, some soy sauces, dusting flour, thickeners
SoybeansSoy lecithin, hydrolyzed soy protein, edamame, some emulsifiers
SesameTahini, 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."

WrongRight
Contains: Tree nutsContains: Almond, pecan
Contains: FishContains: Cod
Contains: ShellfishContains: Shrimp
Contains: NutsContains: 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

StatementVerdict
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 sesameNon-compliant. Incomplete
May contain traces of peanuts. used alone on a product containing peanut flourNon-compliant. An advisory statement is not a declaration
Contains: Wheat. printed on the front panel, away from the ingredient listNon-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.

Frequently asked questions

How do I write a Contains statement?
Start with the word "Contains," then list every major food allergen in the product by its specific food source, separated by commas: "Contains: Almond, Wheat, Milk." Place it immediately after or adjacent to the ingredient list, in type no smaller than the ingredient list. If you've already declared each allergen parenthetically inside the ingredient list, you don't need a Contains statement at all.
What are the 9 major food allergens?
Milk, eggs, fish, crustacean shellfish, tree nuts, peanuts, wheat, soybeans and sesame. Sesame became the ninth under the FASTER Act, effective January 1, 2023.
When did the sesame allergen labeling requirement start?
January 1, 2023. Sesame is now treated exactly like the other eight: it must be declared parenthetically in the ingredient list or in a Contains statement. Tahini, hummus, za'atar, sesame oil and many bakery products are the common sources people miss.
Do I have to use both a Contains statement and parenthetical labeling?
No. Either method satisfies the requirement on its own. Using both is permitted, but then the two have to be consistent, which is one more thing to get wrong. Most small producers use the Contains statement because it's a single line to audit.
Is a "may contain" statement required by FDA?
No. FDA states that advisory statements are "not required by law." They're voluntary, they must be truthful and not misleading, and FDA is explicit that they are "not a substitute for adherence to current good manufacturing practices." Use one when you have a real cross-contact risk you can't engineer out, not as standard boilerplate.
Does "gluten-free" cover my wheat allergen declaration?
No. They're separate rules. Gluten-free is a voluntary claim under 21 CFR 101.91 requiring unavoidable gluten below 20 ppm. Wheat is a major allergen requiring declaration under section 403(w) of the FD&C Act. A product containing wheat must declare wheat regardless of any gluten claim, and a gluten-free product still needs to declare any other major allergens it contains.

Keep reading