← Back to blog

Spaced Repetition in Obsidian: Beating the Forgetting Curve with Dataview

A second brain helps you retrieve knowledge, but it won't help you remember it. Here's how I paired my Obsidian Zettelkasten with spaced repetition and Dataview to beat the Ebbinghaus Forgetting Curve.

obsidianzettelkastenspaced-repetitionforgetting-curvedataviewsecond-brainnote-takingproductivitylearningknowledge-management

In my first article, I wrote about switching from Notion to Obsidian and using Zettelkasten to structure my notes. It's been serving me really well as a second brain, a way to externalize and organize knowledge so it's easily accessible whenever you need it.

There's one catch, though. If you're studying for an exam, preparing for a discussion, evolving a skill, or job hunting, you actually need to remember things. The whole second brain premise is that you don't need to memorize anything since you have a reliable retrieval system, but sometimes that's just not enough.

In today's article, I'll show you how to pair your Zettelkasten notes with a spaced repetition methodology to fight the Ebbinghaus Forgetting Curve.

What is the Forgetting Curve

In the 1880s, German psychologist Hermann Ebbinghaus described a concept with a pretty intuitive meaning: after learning something, you start forgetting it over time.

So how do you counter it? You review the material on a consistent schedule. After one day, three days, one week, two weeks, one month, and so on.

Back in Notion, I managed this with a simple database table. The columns were: a link to the note, the current review cadence (1 day, 3 days, etc.), and the next review date. Sorting by that last column ascending gave me a clean priority queue.

The same setup in Obsidian

Obsidian doesn't have native database-style lists with that level of flexibility, not out of the box anyway. But that's where the community comes in, which is honestly what makes Obsidian so powerful.

I went looking for existing solutions for the Forgetting Curve. I found a few flashcard-based plugins, but that's not really my style. Digging further, I landed on Dataview, a plugin that essentially turns your notes into a queryable database based on frontmatter properties you define.

Defining frontmatter properties

Obsidian has built-in support for Properties, which lets you label your notes with structured data that plugins like Dataview can work with. Just type --- at the top of any note and a small UI will appear for defining fields.

For this setup, I used three fields, similar to what I had in Notion:

  • Current cadence: an enum with options for 1 day, 3 days, 1 week, 1 month, 3 months, and 6 months
  • Next review: a date field used for sorting the priority queue
  • Source: a link to the resource I used when writing the note

Obsidian frontmatter properties for spaced repetition

The Forgetting Curve Manager

With your notes structured, you can build the Dataview query:

TABLE
	row["Next Review"] AS "Next Review",
	row["Current Cadence"] AS "Cadence"
WHERE
	row["Next Review"] != null
SORT
	row["Next Review"] ASC

Breaking it down:

  1. TABLE tells Dataview to display results as a table
  2. The two column declarations read the Next Review and Current Cadence frontmatter properties and label them accordingly
  3. The WHERE clause filters out any notes without a review date set
  4. SORT orders everything by review date, creating the priority queue

The result is exactly what I had in Notion, a list sorted by the most urgent review date.

Dataview query rendering the spaced repetition priority queue in Obsidian

Let's Connect

Feel free to reach out through any of these channels.