How to Make a Study Planner in Notion

Short answer

Make a Courses database with a Goal and a Schoolwork database linked to it, with Due, Done, Score, Out of and Weight. A Days left formula counts down to every due date and a This week view lists what’s due next. Two formulas on each course work out your grade so far and the score you need on the rest to reach your goal.

Rather skip the setup? Our Student Planner 2027 is ready to use, $4 once.
A Notion study planner: Next 7 days with countdowns, a Biology card with Grade so far 84%, and courses showing Need 89% on the rest

Try it: your grade and what you need

Type a score, or change the goal. Grade so far and Need change the same way the two course formulas in this guide work in Notion. The sample is our test: Biology and History, with the scores we typed in.

Grade so far

80%

20 of 100 weight graded

Need 87% on the rest

  • Lab report 1 Lab / 20 10
  • Quiz 1 Quiz / 10 10
  • Midterm Exam / 100 30
  • Final exam Exam / 100 50
  • Read chapter 5 Homework Not graded None

1. A page for each course

A study planner needs two databases: one for your courses, and one for everything you have to do in them. Start with the courses.

  1. Make a new page called School. On it, type /table, pick the table option and call the database Courses.
  2. Rename the first column to Course. Add a Number property called Goal, for the grade you’re aiming for, like 85.
  3. Add a page for each class you take this term.

Goal is optional. Leave it empty and the Need line later in this guide stays blank for that course.

2. One list for all schoolwork

Every assignment, quiz, exam and reading goes into one database, linked to its course. One list is easier to sort and filter than a table on every course page.

  1. On the same page, add a second database called Schoolwork with the properties below.
  2. When you add the Course relation, pick the Courses database, turn on Show on Courses and name it Schoolwork.
PropertyTypeWhat it’s for
NameTitleThe work, like Midterm
CourseRelationThe course it belongs to
TypeSelectHomework, Quiz, Exam, Essay, Lab, Review
DueDateWhen it’s due
DoneCheckboxTick it when you hand it in
ScoreNumberWhat you got, once it’s marked
Out ofNumberWhat it’s marked out of, like 20, or 100 for a percentage
WeightNumberHow much it counts, like 30 for 30% of the grade

Score and Out of let you type a grade the way it comes back. In our test, a history quiz marked 46 out of 50 went in as just that, with no math by hand.

Leave Weight empty on anything that isn’t graded, like readings. It still shows up in your lists, but it never changes your grade.

3. Days left on every assignment

A due date tells you when, but not how close it is. Add a Formula property to Schoolwork called Days left:

Days left
if(
  prop("Done"),
  "Done",
  if(
    empty(prop("Due")),
    "",
    lets(
      d, dateBetween(prop("Due"), today(), "days"),
      ifs(
        d < 0, "Overdue",
        d == 0, "Due today",
        d == 1, "Due tomorrow",
        format(d) + " days left"
      )
    )
  )
)

It says Done once you tick Done, Overdue when the date has passed, and counts the days otherwise. We tested it on Saturday, October 31: a map quiz from October 29 showed Overdue, an essay draft due that day showed Due today, and a midterm on November 4 showed 4 days left.

4. What’s due this week

The view you’ll open most is a short list of what’s due soon, with anything you’ve missed on top.

  1. Click + next to the view name, add a List view and call it This week.
  2. Click Filter, pick Done and set it to Unchecked.
  3. Add a second filter on Due. Change Is to Is on or before and pick One week from now.
  4. Click Sort, pick Due and leave it on Ascending. In the view’s Properties, show Course, Type and Days left.
Our Notion This week list: Map quiz Overdue, Essay draft Due today, Read chapter 5 Due tomorrow and Midterm 4 days left
Our test on October 31. The final exam, 44 days away, stays off the list until it gets close.

On or before, rather than only this week, keeps overdue work on the list until you tick it. Anything you tick Done drops off.

Want your due dates on a calendar too? Add a Calendar view to Schoolwork. It places each item on its Due date.

5. Study sessions before an exam

A study plan is more schoolwork. For each exam, add a few review sessions with Type set to Review, the day you plan to study as the Due date, and no Weight.

They turn up in This week on their day, next to everything else, and they never change your grade. In our test, Read chapter 5 had no weight: it sat in This week as Due tomorrow, and Biology’s grade stayed at 80%.

The Study plan on a midterm page in our Student Planner: Review limits, Practice problems and Past paper, each with a due date and countdown
In our Student Planner, every exam page has its own study plan of review sessions.

6. Your grade so far

Now the grades. Add a formula to Courses called Grade so far. It takes the course’s schoolwork that has both a Score and a Weight, turns each score into a share of its Out of, and averages them by weight:

Grade so far
lets(
  graded, prop("Schoolwork").filter(
    !empty(current.prop("Score")) and
      !empty(current.prop("Weight"))
  ),
  weight, graded.map(
    current.prop("Weight")
  ).sum(),
  if(
    weight == 0,
    "No grades yet",
    format(round(
      graded.map(
        current.prop("Score") /
          current.prop("Out of") *
          current.prop("Weight")
      ).sum() / weight * 100
    )) + "%"
  )
)

History had one quiz back, 46 out of 50 with a weight of 10, and showed 92%. Biology had a lab report at 18 out of 20 and a quiz at 7 out of 10, both with a weight of 10, and showed 80%.

Until something has a score, the formula says No grades yet instead of 0%.

7. The score you need for your goal

The last formula answers the question before every exam: what do I need on the rest? Add a formula to Courses called Need. It works out the average you need on the weighted work that has no score yet:

Need
lets(
  work, prop("Schoolwork").filter(
    !empty(current.prop("Weight"))
  ),
  graded, work.filter(
    !empty(current.prop("Score"))
  ),
  open, work.filter(
    empty(current.prop("Score"))
  ),
  earned, graded.map(
    current.prop("Score") /
      current.prop("Out of") *
      current.prop("Weight")
  ).sum(),
  total, work.map(
    current.prop("Weight")
  ).sum(),
  left, open.map(
    current.prop("Weight")
  ).sum(),
  need, ceil(
    round(
      (prop("Goal") / 100 * total - earned) /
        left * 10000
    ) / 100
  ),
  ifs(
    empty(prop("Goal")), "",
    left == 0, "Nothing left to grade",
    need <= 0, "Goal reached",
    "Need " + format(need) +
      "% on the rest"
  )
)

History, with a goal of 90, said Need 89% on the rest. Biology, with a goal of 85 and 80 of its 100 weight still open, said Need 87% on the rest. Once even zeros would keep you at your goal, it says Goal reached, and once everything is scored, Nothing left to grade.

Our Notion test courses: History with goal 90, grade 92% and Need 89% on the rest, and Biology with goal 85, grade 80% and Need 87%
Our two test courses on October 31.

The round inside is there on purpose. A computer can store a number like 0.89 as a hair more, and rounding up would turn that into 90. Rounding to two decimals first stops it.

Questions

What if my class doesn’t use weights?

Give every graded item the same Weight, like 1, and each one counts the same. If your teacher adds up points instead, make Weight the same number as Out of.

What does it mean if Need is over 100%?

The goal is out of reach on the work that’s left, unless there’s extra credit. In our test, a goal of 90 with a weak start showed Need 125% on the rest. Lower the goal and the line updates.

Can I see my assignments on a calendar?

Yes. Add a Calendar view to Schoolwork and it places each item on its Due date. In Notion Calendar, the Schoolwork database can also sit next to your Google Calendar.

Can I use it on my phone?

Yes. The views and formulas all work in the Notion app. Adding work, ticking Done or typing a score takes a tap or two.

Does this work on the free Notion plan?

Yes. Databases, relations, formulas and filtered views are all on the free plan.