The world's cooking, in 82 bases
Ask a cook how a dish starts and you will not get an ingredient list. You will get a pan and two or three things in it — onion, celery and carrot, sweated in butter until they give up their water — and everything else in the dish happening on top of that. Cooks have names for these openings. Mirepoix. Sofrito. Roux. Bumbu. Yangnyeom. The names travel further than any single recipe does.
We went looking for them. Not in what turns up in the same dish — co-occurrence will tell you tomato and basil belong together and will never tell you that the onion, the celery and the carrot go in first. We looked at what enters at the same early step, across 4,566 recipes with parsed instructions. 82 combinations recur often enough to earn a place in the lexicon. 33 of them turn out to have a name.
In one paragraph
Over 4,566 recipes with parsed instruction steps, 46,119 candidate ingredient cliques entering together within the first 2 steps reduce to 82 recurring “bases” — 2–5 ingredients entering at the same early step, filtered by a per-size support floor (40 recipes for a pair down to 6 for a five-ingredient clique), an anchor-cohesion floor of 0.1, and a distinctness pass. 33 carry a culinary name, 7 carry a plain descriptive label, and 42 are published unnamed. The commonest opening, onion and garlic (garlic + onion), starts 378 recipes and is only 11% Mexican — 2.5× that cuisine’s corpus share; the sharpest, the jerk aromatic base, is 100% Jamaican across 10 recipes, 63× its base rate. 51 culinary names were looked for and 11 did not ship, including the Louisiana holy trinity (13 recipes, below the floor of 20).
A base is not a co-occurrence
The whole measurement rests on one thing an ingredient list cannot give you: when. Palate keeps a parsed step sidecar for every recipe in the corpus, so we can ask where in the instructions each ingredient is first named. An ingredient enters at the first step whose prose mentions it. Two or more ingredients entering at the same step, within the first 2 steps, are a step group — and every subset of 2 to 5 of that group is a candidate base.
Salt, water and neutral oil are dropped before any of this (23 such keys in all): a base is not “onion and salt”. Vocabulary variants of the same food are folded through a hand-curated map of 111 entries, because yellow onion → onion is right and green onion → onion is not, and no token rule tells them apart. Then the candidates go through three gates.
| stage | surviving candidates |
|---|---|
| candidate itemsets counted | 46,119 |
| cleared the support floor | 182 |
| cleared the anchor-cohesion floor | 160 |
| survived the distinctness pass | 82 |
Nothing here is inferred. Each base carries receipts — real recipes a reader can go and look at. Mirepoix is admitted on 34 of them; the verb on its entering step is most often saute, and in 44% of those recipes that step is the first one.
| recipe | cuisine | kind of dish | enters at step |
|---|---|---|---|
| Escarole Soup With Chicken And Rice | Greek | soup | 1 |
| Jeff'S Bordelaise Sauce | French | main (other) | 1 |
| Psarosoupa Avgolemono (Egg-Lemon Fish Soup) | Greek | soup | 1 |
| Sopa de Fideos | Argentine | soup | 1 |
| Tortellini in Brodo | Emilian | soup | 1 |
| Caldo de Gallina | Peruvian | soup | 1 |
The openings almost everyone uses
At the top of the list is the least surprising pair in cooking — onion and garlic — and its numbers are worth sitting with. It starts 378 recipes, 54% of the time as the literal first step, and its single most common cuisine accounts for only 11% of them. It belongs to nobody in particular, which is exactly what makes it the floor the rest of the lexicon is built on.
| base | what goes in | recipes | first step | its most over-represented cuisine |
|---|---|---|---|---|
| onion and garlic | garlic + onion | 378 | 54% | Mexican — 11%, 2.5× |
| aglio e olio | garlic + olive oil | 207 | 60% | Greek — 21%, 6.3× |
| ginger-garlic paste | garlic + ginger | 196 | 51% | Indian — 19%, 4.1× |
| onion in olive oil | olive oil + onion | 174 | 70% | Greek — 17%, 5.2× |
| cumin and garlic | cumin + garlic | 130 | 51% | Middle Eastern — 17%, 9.1× |
| the egg-and-flour base | egg + flour | 120 | 51% | Hungarian — 9%, 4.8× |
| the onion-tomato base | onion + tomato | 110 | 54% | Mexican — 13%, 2.8× |
| the pepper-onion opening | bell pepper + onion | 109 | 53% | Cajun/Creole — 14%, 6.4× |
| unnamed_base_1 | garlic + paprika | 109 | 55% | Southern — 13%, 5.8× |
| unnamed_base_2 | garlic + shallot | 108 | 59% | Indonesian — 36%, 18.8× |
| the onion-carrot opening | carrot + onion | 99 | 43% | Italian — 12%, 3.8× |
| unnamed_base_3 | butter + onion | 96 | 69% | American — 10%, 2.4× |
| garlic and oregano | garlic + oregano | 82 | 71% | Greek — 46%, 14.1× |
| unnamed_base_4 | garlic + lemon juice | 78 | 63% | Greek — 31%, 9.3× |
Further down, the lexicon keeps near-twins apart on purpose. Mirepoix (carrot + celery + onion, 34 recipes) is counted separately from soffritto (carrot + celery + olive oil + onion, 12) — the same three vegetables, softened in olive oil instead of butter — because a name is asserted only where the ingredient set matches exactly. Mirepoix without the carrot is not mirepoix; a variant becomes its own base rather than being quietly absorbed into the classic. Sofrito (garlic + onion + tomato) is a third entry again, on 47 recipes.
Some openings name a kitchen
At the other end are combinations that function as signatures. Take the jerk aromatic base — allspice + garlic + scallion + thyme. It appears in 10 recipes, and 100% of them are Jamaican: 63× that cuisine’s share of the corpus. You could hand a cook that handful without a word and they would tell you what you were making.
Read the n on every row before you read the share. A base seen 10 times can be 100% of one cuisine and mean far less than a base seen 63 times at 10%. Both are printed, in both directions, for exactly that reason.
| base | what goes in | recipes | cuisine concentration |
|---|---|---|---|
| the jerk aromatic base | allspice + garlic + scallion + thyme | 10 | Jamaican — 100%, 62.9× |
| the taco rub | chili powder + cumin + garlic + lime + paprika | 6 | Tex-Mex — 100%, 52.8× |
| bumbu | galangal root + garlic + ginger + shallot + turmeric | 7 | Indonesian — 86%, 44.6× |
| unnamed_base_40 | cayenne + coriander + cumin + olive oil + paprika | 8 | Middle Eastern — 75%, 40.1× |
| the gochujang braise base | garlic + ginger + gochujang + soy sauce + sugar | 8 | Korean — 100%, 33.5× |
| yangnyeom | garlic + gochugaru + gochujang + soy sauce + sugar | 6 | Korean — 100%, 33.5× |
| the chili-cumin seasoning core | chili powder + cumin + garlic | 21 | Tex-Mex — 62%, 32.6× |
| unnamed_base_31 | garlic + shallot + turmeric | 21 | Indonesian — 57%, 29.7× |
| Cajun seasoning | cayenne + garlic + onion powder + paprika + thyme | 11 | Cajun/Creole — 64%, 29.6× |
| garlic and thyme | garlic + thyme | 50 | Jamaican — 46%, 28.9× |
| unnamed_base_41 | brown sugar + garlic + sesame oil + sesame seed + soy sauce | 7 | Korean — 86%, 28.7× |
| the stir-fry slurry | cornstarch + soy sauce | 41 | Chinese-American — 56%, 28.3× |
| unnamed_base_38 | garlic + lemon + olive oil + oregano | 10 | Greek — 90%, 27.4× |
| unnamed_base_34 | cumin + garlic + oregano | 20 | Cuban — 50%, 27.2× |
| base | what goes in | recipes | cuisine concentration |
|---|---|---|---|
| unnamed_base_6 | chicken + garlic | 63 | Mexican — 10%, 2.1× |
| unnamed_base_3 | butter + onion | 96 | American — 10%, 2.4× |
| onion and garlic | garlic + onion | 378 | Mexican — 11%, 2.5× |
| the custard base | egg + milk | 66 | French — 8%, 2.7× |
| the onion-tomato base | onion + tomato | 110 | Mexican — 13%, 2.8× |
| unnamed_base_18 | egg + onion | 44 | Greek — 11%, 3.5× |
| the onion-carrot opening | carrot + onion | 99 | Italian — 12%, 3.8× |
| ginger-garlic paste | garlic + ginger | 196 | Indian — 19%, 4.1× |
A tempting conclusion would be that the named bases are the sharp ones and the unnamed remainder is noise. The numbers refuse it. The median named base is 13.84× its top cuisine’s base rate; the median unnamed base is 13.48×. They are the same population. What separates them is whether we had a name on file, and a name on file is a fact about dictionaries, not about cooking.
An opening is a promise about the dish
Because each base carries the recipes it started, we can ask what those recipes turned into. Some openings barely narrow it — onion and garlic leads to soup 21% of the time, at 2.0× the base rate, which still leaves four dishes in five somewhere else. Others are close to a promise. Mirepoix ends in soup 59% of the time — 5.7× the base rate. And the stir-fry slurry (cornstarch + soy sauce) ends in stir-fry 61% of the time, at 23.5×.
| base | recipes | what it becomes | most over-represented cuisine |
|---|---|---|---|
| onion and garlic | 378 | soup — 21%, 2.0× | Mexican — 11%, 2.5× |
| aglio e olio | 207 | hearty main — 21%, 2.3× | Greek — 21%, 6.3× |
| ginger-garlic paste | 196 | hearty main — 20%, 2.2× | Indian — 19%, 4.1× |
| onion in olive oil | 174 | soup — 21%, 2.1× | Greek — 17%, 5.2× |
| cumin and garlic | 130 | hearty main — 18%, 2.0× | Middle Eastern — 17%, 9.1× |
| the egg-and-flour base | 120 | dessert — 16%, 2.2× | Hungarian — 9%, 4.8× |
| the onion-tomato base | 110 | stew — 16%, 2.2× | Mexican — 13%, 2.8× |
| the pepper-onion opening | 109 | stew — 19%, 2.6× | Cajun/Creole — 14%, 6.4× |
| unnamed_base_1 | 109 | hearty main — 39%, 4.2× | Southern — 13%, 5.8× |
| unnamed_base_2 | 108 | main — 31%, 2.7× | Indonesian — 36%, 18.8× |
| the onion-carrot opening | 99 | soup — 36%, 3.5× | Italian — 12%, 3.8× |
| unnamed_base_3 | 96 | soup — 31%, 3.0× | American — 10%, 2.4× |
| garlic and oregano | 82 | hearty main — 39%, 4.3× | Greek — 46%, 14.1× |
| unnamed_base_4 | 78 | hearty main — 38%, 4.2× | Greek — 31%, 9.3× |
Most of them are a bowl, not a pan
The picture in a cook’s head — the picture this piece opened with — is a pan of aromatics softening. It is not what the corpus mostly holds. Classifying each base by the verbs its entering steps use, 56 of the 82 are things being mixed together, 15 are things being cooked together, and 11 are split between the two. The recurring opening of a modern recipe is more often a marinade, a rub or a batter than a sweat.
| verb at the entering step | times |
|---|---|
| saute | 680 |
| whisk | 452 |
| mix | 407 |
| marinate | 318 |
| combine | 253 |
| sweat | 227 |
| simmer | 99 |
| blend | 84 |
| knead | 83 |
| crush | 76 |
The classification is honest about its own bluntness. Roux — butter and flour — is a shape, not a technique: the same two things opening a béchamel open a shortcrust, and 31% of what this base starts ends up as dessert. The lexicon records the pairing that recurs; it does not claim the cook meant a sauce.
The names we went looking for and did not find
51 culinary definitions were written down before the mining ran, each as an exact set of folded ingredient keys. 40 of them matched a surviving base. 11 did not, and publishing that list is the point of this section — a lexicon that only prints its hits is a lexicon you cannot check.
The Louisiana holy trinity — bell pepper + celery + onion — enters together in 13 recipes, against a floor of 20 for a three-ingredient clique. The Chinese aromatic trio (garlic + ginger + scallion) sits at 19, against the same floor of 20. Bouquet garni appears 1 time. Duxelles appears 1 time. None of these is a finding about the trinity, or about classical French garde-manger. It is a finding about this corpus: it barely contains Cajun cooking, and it barely contains the parts of French technique that live in restaurant kitchens rather than home ones. The mining did its job. The corpus is what is thin.
| name looked for | tradition | what it would be | recipes | floor | why it did not ship |
|---|---|---|---|---|---|
| the onion-celery opening | widespread | celery + onion | 62 | 40 | absorbed by a more distinct base |
| the lemon-oil dressing base | Greek / Levantine / Italian | garlic + lemon juice + olive oil | 45 | 20 | absorbed by a more distinct base |
| the sesame aromatic base | Korean / Chinese | garlic + ginger + sesame oil | 26 | 20 | absorbed by a more distinct base |
| the Korean seasoning base | Korean | garlic + ginger + sesame oil + soy sauce | 24 | 10 | absorbed by a more distinct base |
| the aromatic trio | Chinese | garlic + ginger + scallion | 19 | 20 | below support floor |
| the holy trinity | Cajun / Creole (Louisiana) | bell pepper + celery + onion | 13 | 20 | below support floor |
| sofrito (with pepper) | Puerto Rican / Caribbean | bell pepper + garlic + onion + tomato | 11 | 10 | below anchor cohesion |
| mirepoix with garlic | French / Italian | carrot + celery + garlic + onion | 7 | 10 | below support floor |
| the curry spice core | South Asian | coriander + cumin + turmeric | 4 | 20 | below support floor |
| bouquet garni | French | bay + parsley + thyme | 1 | 20 | below support floor |
| duxelles | French | butter + mushroom + shallot | 1 | 20 | below support floor |
There is no interesting-but-rare tier. A clique below its floor does not ship with an asterisk, because rarity is not evidence: a three-ingredient combination seen six times is a coincidence with a nice name attached.
Two designs we built and threw away
The obvious way to score a candidate base is an independence lift: how much more often do these ingredients enter together than they would if they entered independently? We built it, and it punishes precisely the bases that matter most. Garlic and onion are each so common that the independence baseline expects more co-entries than the corpus contains — members of a step group are not independent draws. Across the published lexicon, the rank correlation between how many recipes a base starts and how well it scores on lift is ρ = -0.73: the ranking is close to the inverse of the truth.
8 of the 82 shipped bases score below 1.0 on lift and would have been deleted by a gate on it — butter + onion among them, at 96 recipes. Meanwhile the highest lift in the lexicon belongs to Cajun seasoning, at 11 recipes: five rare ingredients that almost never meet elsewhere score in the tens of thousands. The lift is still written into every base as a diagnostic. It is simply not allowed to decide anything.
| base | recipes | independence lift |
|---|---|---|
| unnamed_base_3 (butter + onion) | 96 | 0.88 |
| unnamed_base_5 (garlic + sugar) | 76 | 0.54 |
| unnamed_base_6 (chicken + garlic) | 63 | 0.62 |
| unnamed_base_11 (butter + garlic) | 54 | 0.40 |
| unnamed_base_12 (egg + garlic) | 52 | 0.42 |
| unnamed_base_15 (chicken + onion) | 46 | 0.55 |
| Cajun seasoning (cayenne + garlic + onion powder + paprika + thyme) | 11 | 43,816.127 |
| yangnyeom (garlic + gochugaru + gochujang + soy sauce + sugar) | 6 | 22,530.099 |
| the taco rub (chili powder + cumin + garlic + lime + paprika) | 6 | 11,022.409 |
The second rejected design is subtler. The distinctness pass has to decide, when two bases start mostly the same recipes, which one to keep. Ordering by support let bare pairs sort ahead of the larger cliques that contain them — a pair would claim a three-ingredient base’s recipes and delete it, which is the opposite of what a lexicon of bases is for. Walking largest clique first gives the more specific base the first claim. Of the 111 pairs living inside a larger shipped base, 84 do not appear in the lexicon in their own right: the bigger base explains them.
That pass is not free, and the ledger shows its cost. The onion-celery opening starts 62 recipes with an anchor cohesion of 0.89 — the cleanest unit in the whole ledger — and still does not ship, because the recipes it would claim are already claimed by a base that says more.
One last set of receipts
The sharpest thing in the lexicon is the jerk aromatic base, and it is also the smallest kind of claim this piece makes: 10 recipes. Here is what they are.
| recipe | cuisine | kind of dish | enters at step |
|---|---|---|---|
| Jerk Shrimp | Jamaican | main | 1 |
| Jerk Turkey | Jamaican | main | 1 |
| Curry Goat | Jamaican | curry | 1 |
| Gungo Peas Soup | Jamaican | soup | 1 |
| Ital Stew | Jamaican | stew | 1 |
| Jerk Pork | Jamaican | hearty main | 1 |
Honest limitations
- An ingredient the prose never names cannot enter. Entry detection is a deterministic surface match against the step text; it locates 88.7% of resolved ingredient lines. The rest are in the recipe and invisible to this measurement. Terse recipes — “combine everything and simmer” — therefore contribute fewer and smaller cliques than careful ones, and 3,587 of the 4,566 recipes produce an early step group at all. Support is a count of recipes we could read, not of recipes that exist.
- The corpus is not the world, and it is not one thing. It is 47% project-authored recipes from the v18 expansion, 31% legacy web recipes and 22% foundry mains. Every base carries its own provenance mix, and 59 of the 82 draw more than half their recipes from a single authoring wave — 7 of them draw all of it. A base can be one authoring wave talking to itself, and the numbers let you see when.
- Support counts recipes, not cooks. That onion and garlic starts 378 recipes here says something about how recipes get written. It is not evidence about what anybody actually cooks, how often, or in what proportion.
- A name is asserted only on an exact match. The 33 culinary names come from a dictionary written before the mining ran, and they attach only where the folded ingredient set matches exactly. The 7 descriptive labels — the custard base, the creaming base — claim no tradition and should not be read as one. The 42 unnamed bases are unnamed because the dictionary had no entry, and several of them are as concentrated as the named ones.
- Cuisine labels are the corpus’s own, folded. Concentration and lift are computed over canonical cuisines from the curated taxonomy. Where a corpus cuisine label is wrong or a regional label sits beside its parent, the concentration inherits that. The dish forms come from the same frozen label sidecar the neighbouring piece on which ingredients decide the dish uses, with the same caveat: it is a careful reading, not a ground truth.
- Every threshold is a choice, and all of them are printed. First 2 steps; cliques of 2 to 5; floors of 40/20/10/6 by size; anchor cohesion 0.1; overlap 0.5. Loosen them and the lexicon grows; tighten them and it shrinks. The numbers are deliberately blunt round ones so that nobody can accuse the list of having been fitted to look tidy.
- This piece reads a different corpus cut than its neighbours. 4,566 recipes (sample_corpus_v19.json), where the piece on which ingredients decide the dish reads v18 and the rest of the Instrument Room publishes the 2,345-recipe v17. The step sidecar this piece depends on is keyed to these ids.
The data
Every number on this page is a deterministic measurement over the same recipe corpus — nothing here was estimated or embellished. Want to check the work, or run your own analysis? A 250-dish sample of the corpus — ingredients, 18-note flavor profiles, timing, macros — is free to download.
Get the datasetCite this
Palate, “The world's cooking, in 82 bases,” https://palate.kitchen/instrument/the-worlds-cooking-in-bases — include the date you accessed it.
The measurements on this page are free to quote with attribution to Palate. The downloadable 250-dish sample dataset on /data is licensed CC BY-NC 4.0.