> ## Content Index
> Fetch the complete content index at: https://notionsolutions.net/llms.txt
> Use this file to discover other available public pages before exploring further.

# Notion Meal Planner: Free Templates Rated and a Grocery List That Fills Itself
- URL: https://notionsolutions.net/notion-meal-planner/
- Published: 2026-10-30T10:18:26.000Z
- Updated: 2026-10-30T10:18:29.000Z
- Description: A Notion meal planner is three related databases: Recipes, a Meal Plan on a calendar and Ingredients. Duplicate a free template for its look, or build the three so the grocery list fills itself from the next seven days of meals.
- Author: Kevin Turner
- Tags: template, databases

**Notion doesn't have a meal-planning feature, so a Notion meal planner is three related databases: Recipes, a Meal Plan you view as a calendar, and Ingredients. The grocery list is a filtered view of Ingredients that fills itself from the next seven days of meals. Duplicate a template if you like its look; build the three databases if you want a list you can trust and repair. I'd build it, because when an item goes missing you know which formula feeds which filter.**

If you'd rather start from a template, the most reviewed free one is Cande Templates' Smart Meal & Recipe Planner (Weekly), at 4.94 from 334 reviews. For Notion's own version, choose its Meal planner (4.92 from 154). If a recipe book is what you're really after, choose Nat's Templates' Recipe Book (4.89 from 89). Whichever you duplicate, run the four-step check below before you trust its grocery list.

## Notion meal planner templates, rated

The composite covers 22 free templates: the eight in Notion's [Top Free Meal Planner Templates collection](https://www.notion.com/templates/collections/top-free-meal-planner-templates-in-notion?ref=notionsolutions.net), 13 listed in its [Meal prep template category](https://www.notion.com/templates/category/meal-prep?ref=notionsolutions.net) and the Meal Planner page that ranks on its own. Each rating and review count comes from the template's marketplace page, so these are user ratings, not tests. Across the 18 that carry a rating, the median is 4.87, the range runs from 4.5 to 5.0, and the ratings rest on 961 reviews; four show no rating. Count only the 11 with ten or more reviews and the median is 4.84, from 4.53 to 4.94, on 931 reviews.

Ratings that close together can't tell you the one thing that decides whether a planner saves time: whether the grocery list follows the meal plan. Notion's own collection names that as a criterion, saying a good template should "directly convert your meal plans into a shopping list". A listing is the creator's promise, not a description of how the list is built, so the last column quotes it and the check after the table tests it.

__Ten free meal planner templates with ten or more reviews, by review count__
| Template                                                                                                                   | Creator           | Rating | Reviews | What its listing says about groceries                                                     |
| -------------------------------------------------------------------------------------------------------------------------- | ----------------- | ------ | ------- | ----------------------------------------------------------------------------------------- |
| [Smart Meal & Recipe Planner (Weekly)](https://www.notion.com/templates/smart-meal-planner-weekly?ref=notionsolutions.net) | Cande Templates   | 4.94   | 334     | Promises to "move missing items into a clean shopping list," plus "quick reset buttons"   |
| [Meal planner](https://www.notion.com/templates/meal-planner-notion?ref=notionsolutions.net)                               | Notion            | 4.92   | 154     | Not mentioned; you add dishes and "link them to the days you'll enjoy them"               |
| [Meal Planning](https://www.notion.com/templates/meal-planning-2?ref=notionsolutions.net)                                  | Marie Poulin      | 4.79   | 89      | The listing reads only "Meal Planning Template"                                           |
| [Recipe Book](https://www.notion.com/templates/recipe-book-149?ref=notionsolutions.net)                                    | Nat's Templates   | 4.89   | 89      | Not mentioned; "your very own digital recipe book"                                        |
| [My food planner](https://www.notion.com/templates/my-food-planner?ref=notionsolutions.net)                                | kelsiepie         | 4.84   | 73      | Not mentioned                                                                             |
| [Weekly Meal Planner](https://www.notion.com/templates/weekly-meal-planning?ref=notionsolutions.net)                       | Lilian            | 4.93   | 60      | Lets you "manage your shopping list" and "reset to start every week"                      |
| [Meal Planner](https://www.notion.com/templates/meal-planner-twins?ref=notionsolutions.net)                                | NotionTwins       | 4.66   | 53      | Not mentioned; sorts recipes by "difficulty, dietary preferences, and required equipment" |
| [Meal Planner](https://www.notion.com/templates/meal-planner?ref=notionsolutions.net)                                      | Marco Santonocito | 4.84   | 38      | Not mentioned; promises to "organize your meals"                                          |
| [Meal Planner & Grocery List](https://www.notion.com/templates/meal-planner-grocery-list-559?ref=notionsolutions.net)      | The Blueprint     | 4.86   | 14      | "build your grocery list as you go"                                                       |
| [Weekly Meal Planner](https://www.notion.com/templates/free-meal-planner?ref=notionsolutions.net)                          | Second Brain      | 4.75   | 12      | "generate grocery lists"                                                                  |

PixelVixel's [Weekly Meal Planner & Nutrition Tracker](https://www.notion.com/templates/best-weekly-meal-planner?ref=notionsolutions.net) (4.53 from 15) is the eleventh template with ten or more reviews and the lowest rated of them, and its listing doesn't mention groceries. The boldest promise comes from a template with only four reviews: the listing for Fayed's [Recipe Manager - Meal Planner](https://www.notion.com/templates/recipe-manager-meal-planner?ref=notionsolutions.net) (5.0) says "your grocery list builds itself." Several listings promise a list like that, and the check below is how you find out whether the one you duplicated delivers.

### Check a template's grocery list before you trust it

1. Open the template's grocery or shopping list.
2. Open the filter on that view.
3. Look for a condition that depends on the meal plan, or on a formula that reads it. A list with no such condition is one you fill by hand.
4. Add a meal for tomorrow with one recipe and see whether that recipe's ingredients appear on the list.

If step 4 fails, you don't have to start over. Keep the template's recipes and calendar, then add the relations and formulas below; if its list is a plain checklist rather than a database of ingredients, add the Ingredients database too.

## The build: three databases and two relations

These are the three databases with every property the grocery list depends on. The formulas later refer to these property names, so keep them or adjust the formulas to match.

__Properties for the three meal planner databases__
| Database    | Property    | Type                                    | Why it's there                                                 |
| ----------- | ----------- | --------------------------------------- | -------------------------------------------------------------- |
| Meal Plan   | Meal        | Title                                   | The dish or occasion, such as "Chili" or "Dinner out"          |
| Meal Plan   | Date        | Date, no time                           | Places the meal on the calendar and feeds the seven-day window |
| Meal Plan   | Slot        | Select: Breakfast, Lunch, Dinner, Snack | Which meal of the day it is                                    |
| Meal Plan   | Recipes     | Relation to Recipes                     | What you'll cook; one meal can link more than one recipe       |
| Meal Plan   | Next 7 days | Formula                                 | Checked when the Date is today or within the next six days     |
| Recipes     | Recipe      | Title                                   | The dish's name                                                |
| Recipes     | Ingredients | Relation to Ingredients                 | One link per ingredient the recipe uses                        |
| Recipes     | Meal Plan   | Relation, the other side of Recipes     | Every meal that uses this recipe                               |
| Recipes     | Tags        | Multi-select                            | Labels such as "weeknight" or "batch" for picking dishes       |
| Recipes     | Time        | Number (minutes)                        | Sorts recipes by what fits a busy evening                      |
| Recipes     | Source      | URL                                     | Where the recipe came from                                     |
| Recipes     | On the plan | Formula                                 | Checked when any of its meals falls in the window              |
| Ingredients | Ingredient  | Title                                   | One row per ingredient, such as "onion"                        |
| Ingredients | Aisle       | Select                                  | Groups the list the way you walk the store                     |
| Ingredients | Have it     | Checkbox                                | Ticked when it's already in the kitchen or in the cart         |
| Ingredients | Staple      | Checkbox (optional)                     | Keeps salt, oil and other always-stocked items off the list    |
| Ingredients | Recipes     | Relation, the other side of Ingredients | Every recipe that uses this ingredient                         |
| Ingredients | Needed      | Formula                                 | Checked when any of its recipes is on the plan                 |
| Ingredients | For         | Formula (optional)                      | Lists the planned recipes that need it                         |

Steps and amounts go in each recipe's page body; the quantities section explains why.

A single table with an Ingredients text column looks simpler, but text can't be filtered into one shared list: "onion" typed into three recipes is three pieces of text, not one thing to buy. With a relation, each ingredient is one row however many recipes use it. Meals, recipes and ingredients are three kinds of record, and the rule I'd follow is [one database per kind of record, joined by relations](https://notionsolutions.net/notion-database-organization/).

You need two relations: Meal Plan to Recipes, and Recipes to Ingredients. Both must be two-way, because On the plan reads the Meal Plan property on Recipes and Needed reads the Recipes property on Ingredients, and those exist only as the second side of each relation. Notion's [relations help](https://www.notion.com/help/relations-and-rollups?ref=notionsolutions.net) says relations between two different databases "are created as one-way by default," so when you add each one, click the toggle that says Show on \[name of related database\] and give the corresponding relation a name. If you haven't connected two databases before, [setting up a relation between two databases](https://notionsolutions.net/notion-relations-and-rollups/) walks through the same steps on a client database.

[![Meal Plan, Recipes and Ingredients joined by two-way relations; Next 7 days, On the plan and Needed formulas feed a Grocery list filtered by Needed and Have it, grouped by Aisle](https://storage.ghost.io/c/5c/30/5c30c46b-86a3-4d20-984f-4f6ae8ad1ed2/content/images/2026/10/notion-meal-planner-three-databases.webp)](https://storage.ghost.io/c/5c/30/5c30c46b-86a3-4d20-984f-4f6ae8ad1ed2/content/images/2026/10/notion-meal-planner-three-databases.webp?ref=notionsolutions.net)

Each formula reads one relation: meals mark recipes, recipes mark ingredients, and the Grocery list keeps what's needed and not at home.

## The three formulas that fill the list

Create each one as a formula property. Notion's [formula help](https://www.notion.com/help/formulas?ref=notionsolutions.net) gives the path: select the slider icon at the top of a database → Edit properties → New property, select Formula, name the property and select Edit formula.

### Meal Plan: Next 7 days

```
if(empty(prop("Date")), false, let(d, dateBetween(prop("Date"), today(), "days"), d >= 0 and d <= 6))
```

dateBetween() counts the first date minus the second. The [formula syntax reference](https://www.notion.com/help/formula-syntax?ref=notionsolutions.net) shows `dateBetween(now(), parseDate("2022-09-07"), "days")` returning 357, a positive number because the first date is the later one. So d is how many days the meal sits ahead of today(), which "returns the current date without the time." Today's meals get 0, tomorrow's get 1 and a meal six days out gets 6, so `d >= 0 and d <= 6` covers seven days starting today. [let() names that count d](https://notionsolutions.net/notion-formula-let/) so the formula works it out once and reads it twice, and the empty() check keeps a meal without a date unchecked.

If you shop the day before your week starts, shift the window by one: `d >= 1 and d <= 7` counts tomorrow through seven days out.

Keep the meal Date a plain date and leave Include time off. The window compares calendar days against today(), which carries no time, and [a date-only value against today() is the clean case for dateBetween](https://notionsolutions.net/notion-datebetween-off-by-one/); a timed value is a different input.

### Recipes: On the plan

```
prop("Meal Plan").some(current.prop("Next 7 days"))
```

A relation hands the formula a list of pages. As Thomas Frank's [notes on map()](https://thomasjfrank.com/formulas/functions/map/?ref=notionsolutions.net) put it, relation properties "always contain a list of pages (even when there's only one element)". some() "returns true if any item in the list satisfies the given condition," and current.prop() reads a property on each related page, so a recipe is on the plan as soon as one of its meals falls in the window. The same list functions, map(), filter() and some(), are covered in [reading related pages with map() and filter()](https://notionsolutions.net/notion-formula-map-filter/).

### Ingredients: Needed

```
prop("Recipes").some(current.prop("On the plan"))
```

Same pattern, one relation further along: an ingredient is needed when any recipe it belongs to is on the plan. Each formula reads one relation and a property on the pages one step away, which is the pattern the formula syntax reference gives for a Relation, typed there as "Page (list)": `prop("Tasks").filter(current.prop("Status") !== "Done")`. Ingredients never reach into Meal Plan directly; they read On the plan, which has already answered the date question. The chain runs through three formulas to the Date, well short of the 15-property reference chain limit Thomas Frank describes, which was [raised from 7 in August 2024](https://thomasjfrank.com/formulas/property-reference-limits/?ref=notionsolutions.net).

That's the sense in which the list fills itself: Needed follows the meal dates on its own, while ticking Have it stays manual.

### Ingredients: For (optional)

```
prop("Recipes").filter(current.prop("On the plan"))
```

filter() "returns the values in the list for which the condition is true," so For shows only the planned recipes that use the ingredient. It answers "why is this on my list?" while you're standing in the store.

Why formulas and not rollups? This list depends on a value that is itself calculated from a relation, and the relations help is blunt about stacking rollups: asked whether you can roll up a rollup, it answers "Unfortunately not, as this could create unintended loops." If On the plan were a rollup, Needed couldn't roll it up. [A rollup earns its place](https://notionsolutions.net/notion-relation-vs-rollup/) when you need a value straight from the related pages, such as a total; here, formulas keep each step readable.

## The grocery list view

A view should answer one question, so [choose the layout by the question it answers](https://notionsolutions.net/notion-database-views-for-client-work/). The Meal Plan calendar answers "what are we eating Thursday?", and a table or list in Ingredients answers "what do I still need to buy?"

In Ingredients, add a table or list view named Grocery list and set two things:

- **Filter:** rows where Needed is checked and Have it is unchecked, plus Staple unchecked if you use staples. Notion's [views and filters help](https://www.notion.com/help/views-filters-and-sorts?ref=notionsolutions.net) puts this under Filter in View settings → Add advanced filter, where AND and OR filter groups "can be nested up to three layers deep"; one AND group is enough here.
- **Group:** by Aisle, so produce, meat and dairy come out in separate blocks.

Each database view has its own settings, so the filter lives only on Grocery list. Keep a second, unfiltered All ingredients view for adding and fixing rows.

Staple is my suggestion, not a Notion feature: tick it once for salt, oil and anything else you always keep, and those rows stay off the list however many recipes use them. Before you shop, tick Have it for what's already in the cupboard; in the store, tick items as they go in the cart. The formulas decide what the week's meals call for. Whether the fridge already has it is still your call, and Have it is where you record it.

If all you need is a one-off list for a party, skip the databases: [a plain checklist page](https://notionsolutions.net/notion-checklist/) does that job.

## Plan the week on a calendar

Add a Calendar view to Meal Plan, click Show calendar by and select Date. For one week at a time, open the settings menu at the top right of the database → Layout, click Show calendar as and select Week. The week starts on Sunday or Monday depending on your region, and Notion's [calendar help](https://www.notion.com/help/calendars?ref=notionsolutions.net) lists a Start week on Monday toggle under Settings → Preferences → Language & Time. To see each meal's slot on its card, open the settings menu → Property visibility and show Slot.

- **Leftovers:** a second meal page that links the same recipe, such as Thursday's lunch of Monday's chili. The list doesn't double, because each ingredient is one row however many meals point at it.
- **Eating out:** a meal page with no recipe. It fills the calendar slot and adds nothing to the list.
- **A meal with several recipes:** link them all. Thomas Frank's [Ultimate Brain meal planner docs](https://thomasjfrank.com/docs/ultimate-brain/databases/meal-planner/?ref=notionsolutions.net) describe a Time Est. formula whose value "matches the highest total time from all of the Recipes attached to this meal plan." Adapted to this build's Time property, a Time formula on Meal Plan reads `prop("Recipes").map(current.prop("Time")).max()`.

For the recipe-book look, give Recipes a gallery view with a cover photo on each page; [gallery card images and settings](https://notionsolutions.net/notion-gallery-view/) covers which image a card shows. If you plan work in Notion too, keep this calendar next to [a dated weekly planner](https://notionsolutions.net/notion-weekly-planner/) so the week's tasks and meals sit side by side.

## A sample week, worked through

Here's the build with a fictional household's week. Today is Monday, February 1, 2027, and each meal links one recipe.

__Meals in the sample week, with each meal's d value__
| Date      | Slot      | Meal            | Recipe      | d | Next 7 days |
| --------- | --------- | --------------- | ----------- | - | ----------- |
| Mon Feb 1 | Dinner    | Chili           | Chili       | 0 | Checked     |
| Tue Feb 2 | Dinner    | Pesto pasta     | Pesto pasta | 1 | Checked     |
| Thu Feb 4 | Lunch     | Chili leftovers | Chili       | 3 | Checked     |
| Sat Feb 6 | Breakfast | Shakshuka       | Shakshuka   | 5 | Checked     |
| Mon Feb 8 | Dinner    | Thai curry      | Thai curry  | 7 | Unchecked   |

Chili, Pesto pasta and Shakshuka each have at least one meal in the window, so On the plan is checked for all three. Thai curry's only meal is seven days away, so it stays unchecked. The four recipes link these ingredients:

- Chili: onion, garlic, ground beef, canned tomatoes, kidney beans
- Pesto pasta: pasta, basil, garlic, parmesan
- Shakshuka: eggs, canned tomatoes, onion, feta
- Thai curry: coconut milk, chicken, onion

The three planned recipes make 13 ingredient links (5 + 4 + 4), but they land on 10 Needed rows, because garlic, onion and canned tomatoes are shared and each is one row. Coconut milk and chicken stay unchecked; they belong only to the curry. Onion is checked even though it's linked to the curry too: some() needs only one planned recipe, and Chili and Shakshuka both qualify. Onion's For column reads Chili, Shakshuka.

Garlic, pasta and eggs are already in the kitchen, so Have it is ticked on those three. That leaves 7 items on the Grocery list.

__The sample week's Grocery list, grouped by Aisle__
| Aisle        | Items                             | Count |
| ------------ | --------------------------------- | ----- |
| Produce      | onion, basil                      | 2     |
| Meat         | ground beef                       | 1     |
| Canned & dry | canned tomatoes, kidney beans     | 2     |
| Dairy        | parmesan, feta                    | 2     |
| Total        | 10 Needed minus 3 already at home | 7     |

Move the curry to Saturday dinner and its d drops to 5: Thai curry goes on the plan, and coconut milk and chicken join the list under Canned & dry and Meat without anyone touching Ingredients.

[![Week strip from Mon 1 to Mon 8 with d values 0 to 7; four meals sit inside the Next 7 days band, Thai curry falls outside, and a seven-item grocery list is grouped by aisle](https://storage.ghost.io/c/5c/30/5c30c46b-86a3-4d20-984f-4f6ae8ad1ed2/content/images/2026/10/notion-meal-planner-sample-week.webp)](https://storage.ghost.io/c/5c/30/5c30c46b-86a3-4d20-984f-4f6ae8ad1ed2/content/images/2026/10/notion-meal-planner-sample-week.webp?ref=notionsolutions.net)

Four meals fall inside the window, so the list holds their ingredients minus what's already at home: seven items.

## Quantities: why the list stays names-only

A relation says that a recipe uses onion, not how much. In [XDA's walkthrough of BewitchingSelf's Meal Planner and Grocery List](https://www.xda-developers.com/this-is-how-i-use-notion-to-plan-my-weekly-meals-and-cut-my-grocery-bills/?ref=notionsolutions.net), a Notion template, the writer calls this the biggest complaint with the method: "you can list specific amounts of ingredients, but it's not on a per-recipe basis. You'll need to check the recipe to find how much of a given item you'll need."

Per-recipe amounts need a fourth database of recipe lines, where each row is one ingredient in one recipe, with Recipe and Ingredient relations, an Amount number and a Unit select. That lets Chili say 2 onions and Shakshuka say 1\. It still doesn't produce a usable total by itself, because "1 onion" and "200 g onion" are different units, and a sum only means something once every line for an ingredient uses the same one.

I'd skip it unless you batch-cook the same few recipes and want totals. A store list needs what to buy; the recipe page you cook from already says how much. Keep amounts and steps in each recipe's page body and let the list stay names-only.

## Getting recipes in

Notion's [Web Clipper](https://www.notion.com/help/web-clipper?ref=notionsolutions.net) is a browser extension for Chrome and Safari, and on phones it uses the native share sheet on iOS and Android. Clipping into an existing database such as Recipes may take a search, because an existing page or database "might not be included in the default list. You can search for it!" When you clip a page into a database, a URL property is added automatically to keep the original page's address. If you clip most of your recipes, that property does the Source property's job, so you can drop Source.

Linking ingredients stays manual. The XDA writer calls entering ingredients "the most time-consuming part of the process", and the structure explains why: every recipe needs each of its ingredients linked once. I'd link a recipe's ingredients the first time you cook it, not when you clip it. Recipes you save and never make then cost nothing, and the ones you do cook get linked while the page is open anyway.

A database template for Recipes saves retyping the same headings: give it an Amounts heading and a Steps heading in the body. Leave its relations empty. Notion's [database template help](https://www.notion.com/help/database-templates?ref=notionsolutions.net) says of a relation in a template, "do not fill it in unless you want every page you create with that template to relate to the same existing page(s)."

## A New week reset button

After the shop, Have it ticks pile up. A button clears them: on the planner page, add a button with the Edit pages in action, choose Ingredients and set Have it to unchecked. Notion's [buttons help](https://www.notion.com/help/buttons?ref=notionsolutions.net) describes that action as one that "will edit pages and properties in a database of your choosing." Buttons are available on all plans, and this one uses none of the actions the help restricts to paid plans, such as Send mail to and Send webhook.

Staple is a separate checkbox for this reason: the reset clears Have it and leaves Staple alone, so salt and oil stay off next week's list. A button fits because clearing the ticks is a deliberate step you take after shopping; [buttons versus database automations](https://notionsolutions.net/notion-buttons-vs-automations/) covers when a trigger should fire on its own instead. The button clears the ticks; checking what's left in the cupboard is still yours.

## When the list looks wrong

__Grocery list problems, causes and fixes__
| Symptom                                                          | Likely cause                                                                                                                         | Fix                                                                                                                                                                                           |
| ---------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| A planned meal's ingredients aren't on the list                  | The meal falls outside the window, the Date carries a time or a different day than you think, or the recipe isn't linked to the meal | Open the date picker and check the Date, then check Next 7 days on the meal and the meal's Recipes property                                                                                   |
| A recipe is On the plan, but one of its ingredients isn't Needed | The ingredient isn't linked to that recipe                                                                                           | Add it to the recipe's Ingredients relation                                                                                                                                                   |
| An item is Needed but missing from the list                      | Have it or Staple is ticked, or the view's filter isn't what you think                                                               | Untick it, or compare the Grocery list filter with the row; [tracing a row a filter hides](https://notionsolutions.net/notion-filtered-view-missing-tasks/) walks through the check           |
| The list runs a day off from your shopping trip                  | The window counts today through six days ahead                                                                                       | Shop the day before the week? Change the bounds to d >= 1 and d <= 7                                                                                                                          |
| On the plan or Needed is unchecked on every row                  | The relation it reads is one-way, or the formula names a property differently from the database                                      | Turn on Show on for both relations and match the names in the formula to the table above; the relations help notes that duplicating a related database converts a two-way relation to one-way |
| The list is too long to use                                      | Always-stocked items keep appearing                                                                                                  | Tick Staple on them once                                                                                                                                                                      |

## Which route to take

- **A good-looking planner today:** duplicate Cande Templates' Smart Meal & Recipe Planner or Notion's own Meal planner, then run the four-step check on its list.
- **Recipes first:** start with Nat's Templates' Recipe Book, and add Meal Plan and Ingredients when you want a list.
- **A grocery list you can trust:** build the three databases. That's my pick, because when an item is missing you know which formula and which filter to open.
- **Totals by quantity:** add the recipe-lines database, but only if you batch-cook.

Start small. Build the three databases, plan tomorrow's meals, link their recipes' ingredients and check that the Grocery list shows them before you plan a whole week. Once it works, a view of this week's meals on [a personal dashboard](https://notionsolutions.net/notion-personal-dashboard/) keeps the plan in front of you.

## Questions that come up next

### Can I see one day's meals on my phone?

Yes. The same calendar help says there's "a daily view on mobile that you can access by tapping on any date in your calendar," so tap a date on the Meal Plan calendar to see that day's meals.

### Can I plan two weeks at a time?

Change the upper bound to `d <= 13` and the window covers 14 days, today included. Rename the property to match, then update the name inside the On the plan formula too.