Meal Planner
Plan your week's meals, build a recipe library, and generate a shopping list.
The shopping list starts on its own page.
A JSON file holding your whole library and every week you have planned — move it to another device, or keep it as a backup.
No meals planned for this week yet.
Add meals to the grid above to generate a shopping list.
The weekly grid lets you assign meals to breakfast, lunch, dinner, and snack slots for each day. Build your meal library once — save any meal with its ingredients — then drag cards onto the grid or click a cell to pick from your library. Meals can appear in multiple slots across the week.
The shopping list aggregates all ingredients from planned meals, deduplicating by name and unit. For example, two recipes each calling for 1 cup of onion appear as "2 cup onion". Ingredients with mismatched units (e.g., "1 cup" and "200g" of the same item) are kept separate since they can't be summed reliably. Assign categories to ingredients — Produce, Dairy, Meat, Pantry, Frozen — to keep your shopping list organised by store section.
Printing gives you a paper copy of the week: the plan as a day-by-day table for the fridge, and the shopping list — with a tick box beside every item — on its own page for the shop. Only the meal slots you actually used are printed, so a dinners-only week is one narrow column rather than four. Choose landscape when a full week of long meal names needs the extra width. Printing a week with nothing planned gives you a blank grid to fill in by hand. Your browser's own print command produces the same output as the Print button.
All data is stored locally in your browser using IndexedDB, so your meals and plans persist across sessions without any account or server. The planner keeps a separate plan for each week, so you can navigate back to past weeks to reference what you cooked.
Export backup writes that whole database — every meal, and every week you have planned — to a single JSON file you can keep or copy to another device. Importing it there gives you two choices. Merge keeps what is already on the device: a meal whose name you already have is matched rather than duplicated, so re-importing the same backup twice does not double your library, and a week planned on both devices ends up with both sets of meals. Replace clears the device first, so it becomes an exact copy of the backup. Either way the planned weeks keep pointing at the right meals — the internal ids are rewritten on the way in, because they are only ever meaningful on the device that issued them.
How do I start meal planning?
Start by building a library of 10–15 meals you regularly cook. Add them once with their ingredients. Each week, drag meals onto the planner grid — the shopping list generates automatically from what you've planned. Start with dinners only, then add lunches and breakfasts once the habit forms.
Will my meal plans save between visits?
Yes. All data is stored in your browser's IndexedDB — it persists across sessions automatically. Each week has its own saved plan so you can look back at previous weeks. It is stored on this device only: the planner has no account and no automatic sync, so clearing your browser data would lose it. Use Export backup to write everything to a JSON file you keep, and Import backup to load it again.
How do I move my meal planner to another device?
Export a backup on the device that has your data, copy the JSON file across however you like, and import it on the other one. Choose Merge to add the backup to whatever that device already has — meals are matched by name, so nothing is duplicated and importing the same file twice is harmless — or Replace to make it an exact copy. The two devices stay independent afterwards: this is a manual transfer, not a sync, so later changes on one do not reach the other until you export again.
How does the shopping list work?
The shopping list aggregates ingredients from all planned meals in the current week. Items with the same name and unit are summed (e.g., two recipes calling for 1 cup onion become "2 cup onion"). Items with different units are listed separately. Assign categories to ingredients to group them by store section.
Can I print my meal plan and shopping list?
Yes. The Print button produces a clean paper copy with the site navigation stripped out: the week as a day-by-day table, then the shopping list with a tick box beside every item on its own page. Untick a section to leave it out, and switch between portrait and landscape paper. Only the meal slots you actually used are printed, and printing an empty week gives you a blank grid to fill in by hand.
Meal Plan
Aug 24 – Aug 30, 2026
| Day | Breakfast | Lunch | Dinner | Snacks |
|---|---|---|---|---|
| Mon 8/24 | ||||
| Tue 8/25 | ||||
| Wed 8/26 | ||||
| Thu 8/27 | ||||
| Fri 8/28 | ||||
| Sat 8/29 | ||||
| Sun 8/30 |
Nothing planned for this week — a blank planner to fill in by hand.
Shopping List
Aug 24 – Aug 30, 2026
No ingredients — the meals planned this week have none listed.
crunchify.net/tools/meal-planner