One week of meals, one shopping list
Meal plans usually fail at the shop, not at the planning stage. Onions appear on three recipes, get written down three times, and you either buy nine of them or buy two because you only read the first line.
Turning a plan into a list is a mechanical operation — a merge — and the only real skill in it is knowing which lines may be merged and which may not.
The method
Write each meal as a name, a colon, then the ingredients with quantities. Then merge the ingredient lines using a two-part key: the ingredient and its unit together. Two lines combine only when both parts match. Add the quantities of everything that matches, and leave everything else alone.
Using the ingredient alone as the key is the mistake that ruins the list, and the next section is why.
Do not merge units you cannot convert
Your plan says 300 g flour for pancakes and 2 cups flour for a sauce. There is no honest single number for that total, because a cup of flour is a weight that depends on the flour and on how it was scooped.
So keep them apart. Two lines that are each true beat one line that is confidently invented, and at the shop two lines cost you nothing — you are buying a bag of flour either way.
The same applies to 2 can chopped tomatoes and 400 g chopped tomatoes. Merge those and the number you carry into the shop is fiction.
The worked example
Three meals:
Chili night: onion x 2, kidney beans x 3 can, chopped tomatoes x 2 canVeg soup: onion x 3, carrot x 4, stock cube x 2Pancakes: flour x 300 g, milk x 500 ml, egg x 3
That is 3 + 3 + 3 = 9 ingredient entries. Only one key appears twice: onion with no unit, 2 + 3 = 5. So the list has 9 − 1 = 8 lines — carrot 4, chopped tomatoes 2 can, egg 3, flour 300 g, kidney beans 3 can, milk 500 ml, onion 5, stock cube 2.
Alphabetical order is deliberate. It is not the order you walk a shop, but it is the order in which you can find a line and confirm it is there, which matters more when you are standing in an aisle.
Scaling for more people
Cooking the same plan for half again as many people means multiplying by 1.5. It does not matter whether you scale each line first or scale the merged total, because multiplication distributes over addition: onion is either (2 × 1.5) + (3 × 1.5) = 3 + 4.5 = 7.5 or 5 × 1.5 = 7.5. Same answer, which is a useful check that you scaled everything.
Flour becomes 300 × 1.5 = 450 g. Eggs become 3 × 1.5 = 4.5, printed as 4 1/2. Nothing rounds that up for you, and it should not — whether you buy five eggs or adjust the recipe is your call, not the list's.
Never drop a line silently
Some lines will be unreadable: a typo, a missing quantity, a note to yourself. The worst possible handling is to skip them quietly, because you find out in the shop. Collect them at the bottom of the list under a heading that says they were not understood, and deal with them by hand.
The tool
The Meal Plan to Grocery List does exactly this. Paste one meal per line in the format above — the unit is optional, and quantities can be whole numbers, decimals or fractions like 1/2. It merges on ingredient and unit together, keeps unlike units on separate lines, sorts alphabetically, and reports the line count and the number of meals it read.
There is a servings multiplier for scaling the whole plan, and anything it could not parse is printed back to you under a "could not read" heading rather than dropped. It runs in your browser and the list never leaves your device.