MinMax

How the numbers are gathered

Every figure on this site is taken from the restaurant's published nutrition guide — or, where the chain's own document could not be read from its site, from a linked copy of it hosted by a third party, labelled as such on the chain's page. This page explains how a figure gets from that document to these tables, and what gets left out.

1. Official documents first

For each chain we start from the nutrition guide the restaurant publishes — usually a PDF or a nutrition page on the chain's own domain. Where a chain's own document is unavailable or unreadable, a copy of that guide hosted elsewhere — a nutrition mirror site or a CDN — may be used temporarily; those chains say "third-party host" next to the source at the top of the page (1 of 145 chains today). The exact source for every chain is listed, with a link, on the sources page.

2. Extraction

The document is read into a structured table: item name, calories, protein, carbohydrates, fat, fiber and sodium, each row tagged with the URL it came from. Values are kept as published and rounded to whole numbers; nothing is estimated or filled in. When a source does not publish a macro for an item, the cell shows a dash — never a zero — and the chain's page says which macros are missing. Rows that repeat the same name and calories are listed once; sized variants that share a name but differ in calories are all kept.

3. Validation gate

Before a row appears on the site it must pass a plausibility check. A row is dropped when:

Ranked tables apply two more rules: the lowest-calorie table only shows meal-sized entrées and breakfast items (at least 150 calories or 10 g protein), and the highest-protein table is limited to items of 700 calories or less and appears only when the top row has at least 10 g of protein. The full table on each chain page lists every row that passed the gate.

Every row gets the role the MinMax app gives it: entrée, side, drink, breakfast item, dessert, kids' item, combo, or a sauce, topping, add-on or ingredient. Counts of "single orders", the ranked tables and every "lowest-calorie" or "most protein" answer use entrées, sides, drinks and breakfast items only, never a row the chain prints for one slice, one piece or part of an order (a pizza slice, a half sandwich, one wing); the other rows stay in the chain's full table and its JSON, where each row carries its role. A complete meal is the app's meal: one meal-sized entrée, up to two sides of different dishes, each at most 1.5 times the entrée's calories, and the best drink that fits — any drink the chain publishes, including the ones these pages do not list as orders; water only where none fits. "Most protein" and "most filling" (protein plus fiber) are the best such meal under the cap, found by checking every combination.

4. Weekly refresh

Menus are re-checked against their sources on a schedule, and the site is rebuilt every Sunday from the current data. Each page shows the date its data was last refreshed. Pages whose data did not change keep their previous date. Every week's additions, removals, figure changes of 5% or more and source changes are listed, by chain, on the changelog.

5. Corrections

If a number looks wrong, email support@eatminmax.com with the chain, the item and a link to the restaurant's published figure. Confirmed errors are corrected in the next refresh. Who is behind the site, and how the MinMax app uses the same data, is on the about page.

Sit-down plates

At a sit-down chain a dish comes with choices its guide prints as separate rows: sides from a list, a sauce, a dressing. For each such chain a menu model records what every dish comes with, and each rule rests on a quote in the chain's own words (listed on the sources page). A meal there is one plate (the dish with a valid pick for each of its choices, never the same row twice) and at most one drink, and its totals are the printed rows added together. A dish whose choices no printed fact settles is listed with the reason and never put in a meal. The MinMax app runs the same model.

Limits

Restaurants change recipes and portions, and regional menus differ. Figures here are for planning; the restaurant's own current publication is the final word. More on how nutrition data is handled: legal.eatminmax.com/nutrition.

Use the data

Each chain's gated table is available as JSON at /data/<chain>.json (for example /data/mcdonalds.json) under CC BY 4.0 — compiled by MinMax (eatminmax.com) from each restaurant's published nutrition guide, or a cited third-party-hosted copy of it where the chain's own document could not be read; source URL cited per item. The cross-chain ranking those tables produce is published, dated and citable, as The 500-Calorie Index, with every chain's row in one CSV. See /llms.txt for a machine-readable summary.