OotaOS logo OotaOS

Restaurant Allergen Matrix Generator

An allergen matrix is the sheet a server reaches for when a guest asks a question the kitchen cannot hear. It wants to be one page, readable across a counter, and current — which is why it belongs somewhere you can regenerate in a minute rather than in a document last edited two menus ago.

This tool builds the grid. It does not tell you that you are compliant. The columns are the fourteen allergens that must be declared under the EU Food Information for Consumers Regulation and the UK's retained version of it. Other jurisdictions list a different set — the United States names nine major allergens, including sesame but not celery, mustard, lupin, molluscs or sulphites. Check the list that applies where you trade, and check every supplier label: this grid contains exactly what you tell it.

The formula, in the open

  • Each dish is a row; each of the fourteen allergens is a column, in the order they are conventionally listed.
  • An allergen your dish does not name is printed as a dash, not left blank — a blank cell is ambiguous, and ambiguity is the failure mode that matters here.
  • Allergens in use counts the columns with at least one dish in them, so you can see which allergen runs through the whole menu.
  • Dishes free from all fourteen counts rows with nothing declared.
  • An unrecognised allergen id is dropped rather than trusted, so a typo can never silently mark a dish as containing something the grid cannot name.

A worked example

Five dishes. A margherita declares gluten and milk; prawn linguine declares gluten, crustaceans and eggs; a Caesar salad declares gluten, eggs, fish, milk and mustard; hummus and flatbread declares gluten and sesame; grilled vegetables declares none.

That is 7 of the 14 allergens in use and one dish free of all fourteen. Gluten appears in four of the five dishes — which is the thing this grid is really for: it makes the one substitution worth working on obvious at a glance.

What moves the number

Not much, and that is the point — the grid only reflects what you declare. What changes underneath it is suppliers: a tinned tomato with added sulphites, a bread that switches to a sesame-topped loaf, a sauce whose recipe quietly gains mustard. The matrix should be rebuilt whenever a specification changes, not whenever the menu design does.

The PDF

Download PDF produces a real file in landscape, because fourteen columns do not fit across a portrait page: a dish per row, Y against each declared allergen, a dash everywhere else, and a note naming the list it was built against. It carries a "Powered by OotaOS.com" credit in the footer, and everything is generated in your browser.

Try it

The grid below is the worked example. Replace the dishes with your own.