Two things happened that most South African manufacturers have not absorbed. On 13 August 2024 the Allergen Bureau released VITAL 4.0, moving reference doses to an ED05 basis. Then, at its Forty-ninth Session in 2026, the Codex Alimentarius Commission added an annex on the use of precautionary allergen labelling to CXS 1-1985, publishing reference doses of its own plus rules on when a “may contain” statement may be used.
So there are now two quantitative frameworks for precautionary allergen labelling. They agree on every food both list, including 5.0 mg of total wheat protein for wheat allergy. They differ on mollusc, which only VITAL covers, and on gluten, where Codex Table A2 sets a 4.0 mg reference dose and VITAL caps its action level at 20 mg/kg.
Meanwhile most sites work to neither. The label says “may contain traces of milk, egg, soya, wheat, peanuts and tree nuts” because somebody added it years ago as insurance, no reference dose, no action level. Under the Codex annex that is not even PAL, because the annex defines it as a statement about a risk “that has been identified by a risk assessment”.
Want the calculator, not just the article? Advanced Allergen Management & Validation includes a multi-framework QRA tool switching between Codex Table A1/A2, VITAL 4.0 ED05, VITAL 3.0 ED01 and Netherlands ED05 doses: R3,450 launch price until 31 October 2026, then R7,999; about 30 hours of guided study, self-paced.
Precautionary allergen labelling: the key facts
| Codex PAL rules | CXS 1-1985 Annex, Guidelines on the use of precautionary allergen labelling, added at CAC49 in 2026 |
|---|---|
| Codex reference doses | Annex Table A1 (21 foods, mg total protein, IgE-mediated allergy); Table A2 (4.0 mg total gluten, coeliac disease) |
| Codex action level | Reference dose (mg) ÷ amount consumed (kg), single eating occasion, preferably 50th percentile (Annex footnote iii) |
| Codex trigger | Annex 4.3: PAL shall be used above the action level; should not be used at or below it |
| Where they differ | Gluten: Codex Table A2 4.0 mg total gluten; VITAL 4.0 has no gluten reference dose and caps the action level for cereals containing gluten at 20 mg/kg. Mollusc: VITAL 20 mg, no Codex value |
| Codex allergen list | Two tiers: Section 4.2.1.4 (mandatory) and 4.2.1.5 (may also be required); sulphite separate at 4.2.1.7. CXC 80-2020 sets no threshold |
| VITAL version | VITAL 4.0, released 13 August 2024, ED05 basis replacing ED01; VITAL Online moved to 4.1 on 20 July 2026, reference doses unchanged |
| Audit hooks | BRCGS Issue 9 clause 5.3 (fundamental); FSSC 22000 Version 7; IFS Food Version 8; SQF Edition 9, all GFSI benchmarked schemes |
What is precautionary allergen labelling?
Precautionary allergen labelling, or PAL, is a statement such as “may contain milk” indicating the risk of unintended allergen cross-contact. Under the Codex CXS 1-1985 annex its definition is conditional: the risk must have been identified by a risk assessment, so an unassessed “may contain” is not PAL at all.
That conditional definition, in Annex Section 3, does real work: the auditor’s question is no longer “why did you put this on?” but “show me the assessment that identified this risk”. Annex 4.2 adds that the decision should rest on its findings.
What does the Codex precautionary allergen labelling annex require?
The Codex annex on precautionary allergen labelling, added to CXS 1-1985 at CAC49 in 2026, restricts PAL to unintended presence that cannot be prevented or controlled by allergen management practices, and ties it to an action level: PAL shall be used above it, and should not be used at or below it.
The provisions that change practice, modal verbs preserved:
- 4.1: PAL is a last resort. Allergen management under CXC 80-2020 shall be implemented, and PAL shall be restricted to unintended presence that cannot be prevented or controlled by those practices.
- 4.3: the grade is asymmetric, and this catches people out. PAL shall be used when, after mitigation, unintended presence is above the action level; PAL should not be used at or below it. Applying PAL above the action level is mandatory; refraining below it is a recommendation, not a prohibition. Codex does not forbid a below-threshold “may contain”, it advises against it.
- 4.3.1, 4.3.2, 4.4. Where Table A1 sets no reference dose, competent authorities can establish one; PAL shall be complemented by education and information programmes; and the annex’s one outright prohibition, where a gluten PAL statement is necessary, “gluten-free” shall not be used.
- 5.2 to 5.2.3: placement and wording are prescribed. PAL shall appear as a separate statement directly under or near the ingredient list, and shall commence with “may contain” (or equivalent words such as “may be present”, as determined by the competent authorities), naming allergenic foods by the specified names of Sections 4.2.1.4 and, where applicable, 4.2.1.5. “Produced in a facility that also handles” does not comply. Where gluten’s source cannot be verified, 5.2.3 requires wheat, barley and rye all to be named.
- 5.2.4: PAL cannot be de-emphasised. It shall be declared clearly and distinctly “through the same font type, style or colour that contrast [sic] from the surrounding text”, and where a PAL statement and an allergen declaration both appear they shall use the same manner.
One boundary: 5.2.2 references Sections 4.2.1.4 and 4.2.1.5 but not 4.2.1.7, so the annex makes no provision for sulphite PAL.
What are the Codex reference doses for precautionary allergen labelling?
Codex Table A1 publishes reference doses in milligrams of total protein for 21 allergenic foods, from 1.0 mg for almond, cashew, walnut, pecan, pistachio, macadamia, pine nut, Brazil nut, celery and mustard up to 200.0 mg for crustacea. Table A2 gives 4.0 mg of total gluten for coeliac disease.
| Reference dose (mg total protein) | Allergenic foods: Table A1 |
|---|---|
| 1.0 | Almond, Brazil nut, cashew, pistachio, macadamia, pine nut, walnut, pecan, celery, mustard |
| 2.0 | Peanut, egg, milk, sesame |
| 3.0 | Hazelnut |
| 5.0 | Wheat, fish |
| 10.0 | Buckwheat, lupin, soy |
| 200.0 | Crustacea |
Table A2 gives 4.0 mg of total gluten from all relevant sources, covering wheat, rye and barley and their related species collectively, one figure for the group, not per cereal.
Now read what is absent, because the gaps are where sites improvise. Table A1 publishes no value for rye, barley, oats, mollusc or sulphite. Table A2 sets no oats figure, and says why: people with coeliac disease may react to oats because of wheat, barley or rye cross-contact. The units differ too (Table A1 total protein, Table A2 total gluten) and are not interchangeable.
What changed in VITAL 4.0, and what is the difference between ED01 and ED05?
ED01 is the eliciting dose predicted to provoke a reaction in 1% of the allergic population; ED05 is the dose predicted to provoke a reaction in 5%. Sitting higher on the dose-distribution curve, ED05 values are numerically larger for every allergen that had a VITAL 3.0 value, so the action levels derived from them are looser.
VITAL 4.0, released on 13 August 2024, made that switch on the recommendation of the Ad hoc Joint FAO/WHO Expert Consultation on Risk Assessment of Food Allergens (Part 2 report, 2022, and Part 5, 2023), which concluded that a reference dose below ED05 did not meaningfully reduce risk and could reduce the food available to allergic consumers. It also regrouped tree nuts, added a mollusc risk-management value, buckwheat and a Canadian jurisdiction alongside European legislated values, and changed “legislation” to “jurisdiction”. VITAL Online keeps the ED01 values in the Action Level Grid report for comparison only; a site that applies a stricter limit is setting its own policy and must say so.
| Allergen | ED01 (VITAL 3.0) | ED05 (VITAL 4.0) | Fold change |
|---|---|---|---|
| Wheat (total wheat protein) | 0.7 | 5.0 | 7.1× |
| Crustaceans | 25.0 | 200.0 | 8.0× |
| Egg | 0.2 | 2.0 | 10.0× |
| Fish | 1.3 | 5.0 | 3.8× |
| Peanut | 0.2 | 2.0 | 10.0× |
| Soy | 0.5 | 10.0 | 20.0× |
| Milk | 0.2 | 2.0 | 10.0× |
| Almond | 0.1 | 1.0 | 10.0× |
| Hazelnut | 0.1 | 3.0 | 30.0× |
| Walnut (and pecan) | 0.03 | 1.0 | 33.3× |
| Cashew (and pistachio) | 0.05 | 1.0 | 20.0× |
| Brazil nut, macadamia, pine nut | 0.1 | 1.0 | 10.0× |
| Celery | 0.05 | 1.0 | 20.0× |
| Mustard | 0.05 | 1.0 | 20.0× |
| Sesame | 0.1 | 2.0 | 20.0× |
| Lupin | 2.6 | 10.0 | 3.8× |
| Molluscs (VSEP risk-management value) | none | 20.0 | new |
| Buckwheat (risk-management value) | none | 10.0 | new |
Walnut moved furthest: 0.03 mg to 1.0 mg, a 33.3-fold change, hazelnut behind it at 30-fold, both from the tree nut regrouping. Mollusc had no VITAL 3.0 value: VITAL 4.0 adds a VSEP risk-management value of 20 mg protein, derived from the crustacea ED05 with a 10-fold uncertainty factor, so every allergen that had a VITAL 3.0 value went up. Jurisdiction matters too: the Netherlands ED05 for mustard is 0.4 mg against VITAL 4.0’s 1.0 mg. And moving to ED05 accepts a modelled reaction rate in a larger share of the allergic population: a risk-management decision, not a discovery that allergens became less dangerous.
Where do Codex and VITAL 4.0 differ?
They differ on gluten and on mollusc. Codex Table A2 sets 4.0 mg of total gluten from all relevant sources for coeliac disease. VITAL 4.0 has no gluten reference dose: its 5.0 mg is total wheat protein for wheat allergy, the same as Codex Table A1, and for cereals containing gluten it caps the action level at 20 mg/kg. Up to a 200 g portion the VITAL gluten action level is equal to or lower than the Codex one; above 200 g the Codex one is lower.
Start with where they agree, because that is most of the list. For every food both publish (crustacea, egg, fish, peanut, soy, milk, almond, hazelnut, walnut, pecan, cashew, pistachio, Brazil nut, macadamia, pine nut, celery, mustard, sesame, lupin, buckwheat and wheat) Codex Table A1 and VITAL 4.0 carry the same values. The differences are structural:
- Both cover pistachio, pecan, macadamia and pine nut at 1.0 mg and buckwheat at 10 mg. VITAL 4.0 groups pistachio with cashew, pecan with walnut, and macadamia and pine nut with Brazil nut.
- VITAL publishes a mollusc value; Codex does not. VITAL 4.0 gives 20.0 mg; Table A1 has no mollusc row, so 4.3.1 leaves it to a competent authority.
- Wheat has two endpoints. Codex Table A1 and VITAL 4.0 both give wheat 5.0 mg of total wheat protein for IgE-mediated wheat allergy. For coeliac disease Codex Table A2 gives 4.0 mg of total gluten, and VITAL, which has no gluten reference dose, takes the formula value or 20 mg/kg, whichever is lower (Food Industry Guide to the VITAL 4.0 Program, Version 4, August 2024, section 2.5.4).
Worked example: one residue, two gluten action levels
A soup in 200 g portions, declaring no gluten-containing cereals, runs after a wheat-thickened product. Batch 150 kg.
Step 1: both action levels, using Codex Annex footnote iii (reference dose ÷ amount consumed in kg). Codex Table A2: 4.0 ÷ 0.200 = 20 mg/kg = 20 ppm total gluten. VITAL 4.0: the formula gives 5.0 ÷ 0.200 = 25 mg/kg, which is the wheat protein action level for wheat allergy; for gluten VITAL takes the lower of that and 20 mg/kg, so 20 mg/kg = 20 ppm gluten.
At a 200 g portion the two gluten action levels meet at 20 ppm. At smaller portions VITAL’s cap is the lower figure (at 100 g, 40 ppm on Codex against 20 ppm on VITAL); at larger portions the Codex figure is lower (at 400 g, 10 ppm on Codex against 12.5 ppm on VITAL).
Step 2: the residue. First-off testing returns 22 mg/kg of gluten, reported as gluten = gliadin × 2.
Step 3: compare.
| Framework | Reference dose | Action level | Residue | Outcome |
|---|---|---|---|---|
| Codex Table A2 | 4.0 mg total gluten | 20 ppm | 22 ppm | Above. Annex 4.3: PAL shall be used: and under 4.3.2 “gluten-free” shall not be used |
| VITAL 4.0 | No gluten reference dose; action level capped at 20 ppm | 20 ppm | 22 ppm | Above. The same outcome as Codex |
Step 4: scale it, and cross-check. At 22 mg/kg across 150 kg the batch carries 22 × 150 = 3,300 mg of gluten against a Codex-derived ceiling of 20 × 150 = 3,000 mg: exceeded by 300 mg, a factor of 1.1. Run the formula backwards: 20 ppm × 0.200 kg = 4.0 mg of gluten per portion, exactly Table A2’s reference dose. On VITAL the batch is also above the 20 ppm cap, so both frameworks give the same decision. Wheat allergy is a separate check: the same portion is judged on total wheat protein against 25 ppm (5.0 mg per portion), which needs the residue expressed as wheat protein, not gluten.
So what do you do? You choose: but not per batch, and never by splitting the difference. Record which framework your site works to, state it in the risk assessment, and apply it consistently. Never average or blend two frameworks: a mid-point between Codex’s 4.0 mg of gluten and VITAL’s 5.0 mg of wheat protein is a number no authority publishes and nobody can defend, because the two are not even the same measurand.
This is the arithmetic taught, then automated, in our advanced allergen risk assessment and validation course. The Excel toolkit holds Codex Table A1/A2, VITAL 4.0 ED05, VITAL 3.0 ED01 and Netherlands ED05 doses side by side, so you see where the frameworks differ before an auditor does, R3,450 launch price until 31 October 2026, then R7,999, with a 90-question proctored exam and a Certificate of Achievement on passing.
How do you calculate an allergen action level?
Divide the reference dose in milligrams by the amount of food consumed on a single eating occasion, expressed in kilograms. The result is the action level in milligrams per kilogram, which is parts per million. Codex says to base the consumption figure preferably on the 50th percentile.
You will see the formula two ways, and they are the same formula. Codex Annex footnote iii gives action level (mg/kg) = reference dose (mg) ÷ amount consumed (kg); practitioner texts give action level (ppm) = reference dose (mg) ÷ reference amount (g) × 1000. Dividing by kilograms, and dividing by grams then multiplying by 1000, are identical operations, and mg/kg and ppm are the same unit. Use either, state which, and never mix grams into the Codex form. The consumption amount is where most flawed assessments fail: a 30 g “serving” of a 200 g packet people finish in one sitting is not one. Two quick Table A1 checks: milk at 2.0 mg in a 30 g biscuit gives 2.0 ÷ 0.030 = 66.67 ppm, and crustacea at 200.0 mg in a 250 g meal gives 200.0 ÷ 0.250 = 800 ppm.
Is a “may contain” label a legal defence?
No. A blanket “may contain all allergens” disclaimer applied without a documented risk assessment is not a legal defence, and it does not even meet the Codex definition of PAL, which requires a risk identified by risk assessment. Auditors against BRCGS Issue 9 clause 5.3 treat it as a control failure.
A claim about risk that rests on nothing cannot be tested or audited. And when precautionary labels appear on products carrying no real residual risk, allergic consumers learn to ignore them, then ignore them where the risk is real. Over-labelling degrades the signal.
When is precautionary allergen labelling not justified?
Codex restricts PAL to unintended presence that cannot be prevented or controlled, and says it should not be used at or below the action level. Note the grading: applying PAL above the action level is “shall”; refraining below it is “should not”, a recommendation rather than a prohibition.
- Is the allergen an intentional ingredient, including in a compound ingredient, derivative, carrier or processing aid? Then it is declared in the ingredient list using the specified name. Section 4.2.5.2 withholds the processing-aid and carry-over exemption from allergenic foods; Section 6 withholds the small-package exemption too.
- Have all reasonable controls been implemented? Annex 4.1 makes allergen management under CXC 80-2020 a precondition: segregation, validated changeover cleaning, scheduling least to most allergenic, dust and air controls, like-into-like rework.
- Quantify the residual and calculate the action level from your declared reference dose and a realistic consumption amount, then compare. Above it, PAL shall be used or control improves until it is not; at or below, Codex says PAL should not be used.
- Document the chain: framework, table, jurisdiction, consumption amount, review date, and check the artwork matches the decision.
Step 3 is where sites discover something uncomfortable: on a properly calculated basis, many existing precautionary statements are not supportable.
Is soy a mandatory allergen declaration under Codex?
No. Codex splits its allergen list in two. Section 4.2.1.4 is the mandatory tier that shall always be declared, and it includes sesame. Soybean sits in Section 4.2.1.5, the discretionary tier that may also be required regionally or nationally, based on risk assessment data.
The reverse of what most assume:
- 4.2.1.4, mandatory: cereals containing gluten (wheat, rye, barley); crustacea; eggs; fish; peanuts; milk; sesame; and six tree nuts named by species: almond (Prunus amygdalus), cashew (Anacardium occidentale), hazelnut (Corylus spp.), pecan, pistachio (Pistacia vera), walnut (Juglans spp.).
- 4.2.1.5, may also be required: buckwheat, celery, oats, lupin, mustard, soybean (specified name “Soy”), Brazil nut, macadamia, pine nut.
- Sulphite is in neither table. It has its own provision, 4.2.1.7: at 10 mg/kg or more, on a sulphur dioxide equivalents basis, declared as “sulphite” or “sulfite”.
Two consequences. “Tree nuts” is no longer one allergen: nine species are named across the tiers, each with its own specified name and, in Table A1, its own reference dose. And each allergen carries a prescribed specified name, which Section 8.3.1 requires to be clear and distinct through font type, style or colour, no font size is prescribed. None of this displaces South African law: R146 of 2010 still binds you, and it lists soybeans.
Does South African law require VITAL or Codex?
No. VITAL is a voluntary industry framework from the Allergen Bureau and Codex standards are international reference texts, not South African law. R146 of 2010 governs allergen labelling and is in force; draft R3337 is not. Both frameworks supply the quantitative basis that makes a labelling decision defensible.
R146 of 2010, under the Foodstuffs, Cosmetics and Disinfectants Act 54 of 1972, requires declaration of eight groupings, egg; cow’s milk; crustaceans and molluscs; fish; peanuts; soybeans; tree nuts; gluten-containing cereals, named inside compound ingredients. Sulphites are not an R146 common allergen. Draft R3337 would tighten this and require sulphites at or above 10 ppm, but is not in force. R638 of 2018 covers premises hygiene. Internationally, Codex CXS 1-1985 carries the two-tier list and the PAL annex, CXC 80-2020 carries allergen management without thresholds, Regulation (EU) No 1169/2011 lists 14 allergens, and the FASTER Act added sesame as the ninth US major allergen from 1 January 2023.
Why you cannot simply measure your way out of this
Because a test result only means something in the basis it was reported in. Codex Table A1 and VITAL reference doses are expressed as milligrams of total protein, while laboratories may report as commodity or as a marker protein. Comparing a commodity result to a protein-based action level produces a confidently wrong decision.
ELISA quantifies in mg/kg but must state its basis, total protein, commodity, or a marker such as Ara h 2 or beta-lactoglobulin; gluten is reported as gliadin × 2, which is why Table A2’s total-gluten unit matters. Lateral flow gatekeeps release without producing a number, PCR detects DNA rather than protein, LC-MS/MS buys peptide-marker specificity at higher cost, ATP bioluminescence measures only general soil. CXC 80-2020 Section 6.5 asks that a test be fit for purpose, be validated for the matrix of concern, and that the operator know its limit of detection and specificity. Hence: a “not detected” result on a method never validated in that matrix is not evidence of absence.
Frequently asked questions
What are the Codex reference doses for precautionary allergen labelling?
CXS 1-1985 Annex Table A1 gives reference doses in mg of total protein for 21 allergenic foods: 1.0 mg almond, Brazil nut, cashew, pistachio, macadamia, pine nut, walnut, pecan, celery, mustard; 2.0 mg peanut, egg, milk, sesame; 3.0 mg hazelnut; 5.0 mg wheat, fish; 10.0 mg buckwheat, lupin, soy; 200.0 mg crustacea. Table A2 gives 4.0 mg of total gluten for coeliac disease.
Is soy a mandatory allergen declaration under Codex?
No. Soybean sits in CXS 1-1985 Section 4.2.1.5, the discretionary tier that “may also be required” regionally or nationally based on risk assessment data, with the specified name “Soy”. Sesame is in the mandatory Section 4.2.1.4 tier. R146 of 2010 nonetheless requires soybeans to be declared in South Africa.
Does Codex prohibit a “may contain” label below the action level?
No. Annex 4.3 says PAL shall be used above the action level but should not be used at or below it: applying it above is mandatory, refraining below is a recommendation, not a prohibition. The annex’s one outright prohibition is 4.3.2: “gluten-free” shall not be used where a gluten PAL statement is necessary.
What does ED05 mean in VITAL 4.0?
ED05 is the eliciting dose predicted to provoke a reaction in 5% of the allergic population, in milligrams of total allergenic protein. VITAL 4.0 adopted ED05 doses on 13 August 2024, replacing VITAL 3.0’s ED01 basis, on the recommendation of the Ad hoc Joint FAO/WHO Expert Consultation on Risk Assessment of Food Allergens.
Can I still use VITAL 3.0 ED01 reference doses?
Only for comparison. VITAL Online keeps the VITAL 3.0 ED01 values in the Action Level Grid report for comparison purposes only, and the Allergen Bureau encourages ED05. A site that applies a stricter internal limit, for example for a customer specification, is setting its own policy, not using VITAL 4.0, and the risk assessment must say so.
Which allergen reference dose changed the most in VITAL 4.0?
Walnut, from an ED01 value of 0.03 mg to an ED05 value of 1.0 mg: a 33.3-fold increase from the tree nut regrouping, with hazelnut at 30-fold. Mollusc had no VITAL 3.0 value; VITAL 4.0 adds a 20 mg risk-management value, and Codex Table A1 publishes no mollusc value.
Is “produced in a facility that also handles” acceptable wording?
Not as a Codex-compliant PAL statement. Annex 5.2.2 requires the statement to commence with “may contain” or equivalent words such as “may be present” as determined by the competent authorities, and to name allergenic foods by the specified names of Sections 4.2.1.4 and 4.2.1.5.
Which framework should my site work to, Codex or VITAL 4.0?
Either, provided you record the choice and apply it consistently. State the framework, table, jurisdiction and consumption amount in the risk assessment, review it, and check the destination market if you export. What is not defensible is switching frameworks per product, or averaging their reference doses.
Stop labelling defensively. Start assessing quantitatively.
If you cannot produce, per product and per allergen, a named framework, a stated reference dose, a justified consumption amount, a measured residue and a documented comparison, your precautionary labelling is a guess.
Advanced Allergen Management and Validation. Nine modules, about 30 hours of guided study, self-paced, with Mthokozisi Nkosi.
- R3,450 launch price until 31 October 2026, then R7,999, no VAT charged
- The ASC Allergen Validation Toolkit in Excel: a multi-framework QRA calculator switching between Codex Table A1/A2, VITAL 4.0 ED05, VITAL 3.0 ED01 and Netherlands ED05 doses, plus a swab recovery calculator and an allergen matrix
- A document-controlled Cleaning Validation Protocol template in Word
- A 90-question technical exam: 150 minutes, 70% pass mark, which is 63 of 90, three attempts, each a fresh random draw from a bank of 180, and a Certificate of Achievement on passing
- Provided by ASC, a registered training provider with FoodBev SETA (587/00337/1900) and SAATCA (TC 065). These are ASC’s provider registrations, not accreditation of this course.
Enrol in Advanced Allergen Management & Validation →
Training a team first? Allergen Management in the Food Supply Chain is the foundational course; the advanced validation course is where QA, laboratory and labelling leads learn to defend the decision. See all courses or contact us.
Your label says “may contain”. Which framework, which table, which number? Learn to answer all three.
