Skip to content
FlashCardzGet started

Spaced repetition

FSRS explained: how the modern spaced repetition algorithm works

FSRS is the scheduler behind a quiet change in flashcard apps: instead of following fixed rules, it predicts when you're about to forget each card and times the review for just before. Here's how it works, in plain language, with real numbers from the algorithm, and what it means for how you study.

What FSRS is

FSRS stands for Free Spaced Repetition Scheduler. It was developed by Jarrett Ye and the Open Spaced Repetition community, building on his research at the language-learning company MaiMemo, published at the ACM KDD conference in 2022 with Jingyong Su and Yilei Cao. The “free” is about licence: the algorithm and its implementations are open source, so any app can use it.

Anki added FSRS as an option in version 23.10, in 2023, and many students switched. FlashCardz schedules every card with FSRS, on every plan, using py-fsrs, the project's own Python implementation.

Like every spaced repetition scheduler, FSRS answers one question for each card after each review: when should you see it again? What's different is how it answers. Older algorithms apply fixed rules (“multiply the last interval by 2.5”). FSRS keeps a small model of your memory of that card and predicts the probability you'll recall it on any given day.

The three numbers behind every card

Retrievability: can you recall it right now?

Retrievability is the probability that you'd recall the card if it came up now. Just after a successful review it's close to 100%; it then falls day by day. It's the number that decides when a card is due.

Stability: how long the memory lasts

Stability is the number of days it takes for retrievability to fall from 100% to 90%. A card with a stability of 10 days has a 90% chance of being recalled ten days after its last review. A brand-new card has a stability of a day or two; a card you've known for years may have a stability of hundreds of days.

Difficulty: how hard it is to make it stick

Difficulty, on a scale from 1 to 10, describes how much each successful review can raise the card's stability. Easy cards gain stability quickly; difficult ones gain it slowly. Difficulty goes up when you forget a card or press Hard, and down when you press Easy.

Together they're often called the DSR model: difficulty, stability, retrievability. FSRS predicts all three from the card's history of reviews and ratings.

The forgetting curve inside FSRS

FSRS assumes that memory fades along a forgetting curve that falls steeply at first and then flattens. In the current version, FSRS-6, the curve's shape has a parameter of its own, fitted to data. With the default parameters, here's how retrievability falls for a card with a stability of 10 days:

Days since the last reviewChance of recalling it
198.6%
594.0%
1090.0%
2084.6%
3080.9%
6074.3%
10069.3%
36557.4%

Notice how slowly it falls after the first weeks: well-learned memories don't vanish, they get harder to reach. This long tail is also why missing a few days of reviews is rarely a disaster.

Desired retention: the setting that decides your workload

You don't set intervals in FSRS; you set a desired retention, the chance of recall you want when a card comes up. FSRS then schedules each card for the day its retrievability will fall to that level. For the same card with a stability of 10 days, the next review comes after:

Desired retentionNext review after
80%33 days
85%19 days
90%10 days
95%4 days

Small changes in the target make large changes in the gaps, and so in your daily workload. In our simulation of a year of reviews, aiming for 95% instead of 90% cost about 45% more reviews, while 80% saved about a quarter but meant forgetting twice as often. For most students, 85% to 90% is the sweet spot. FlashCardz aims for 90%.

What happens when you press a button

After each review you rate the card: Again (you forgot), Hard, Good or Easy (you remembered, with varying effort). FSRS then updates the card's numbers:

  • Again: the card lapses. Its stability drops sharply, its difficulty rises, and it goes through a short relearning step before its next, much shorter interval.
  • Hard: remembered with effort. Stability rises a little; difficulty rises.
  • Good: the normal answer. Stability rises substantially.
  • Easy: effortless. Stability rises the most; difficulty falls.

How much stability rises after a success depends on three things: the card's difficulty (easier cards gain more), its current stability (the more stable a memory, the smaller the relative gain), and its retrievability at the moment of review (the closer you were to forgetting, the bigger the gain). That last point is the spacing effect in maths: a review that comes as memory fades does more than one that comes while it's fresh.

New cards first go through short learning steps on the day you meet them. FlashCardz uses two, 1 minute and 10 minutes, and a 10-minute step after a lapse.

One card, step by step

Here's what FSRS-6 does, with its default parameters and a 90% target, for a card you rate Good every time:

ReviewStability afterwardsNext review after
Day 0, learning steps2.3 days2 days
Day 211 days11 days
Day 1346 days46 days
Day 59163 days163 days
Day 222498 days498 days, about 16 months

Now suppose you forget it at the review on day 222. Its stability falls from 163 days to under 5, its difficulty jumps from about 2 to about 7.4, and the next gaps are 5, 12, 28 and 59 days. The card has to earn its long intervals again, more slowly than before, because FSRS now knows it's a hard one for you.

A card you find hard from the start, rated Again on the first sight and Good after that, gets gaps of 1, 2, 7, 19 and 48 days. A card you rate Easy the first time skips the learning steps and comes back after 8 days, then 39, then 153. Same algorithm, very different schedules, all aimed at the same 90%.

FSRS vs SM-2

SM-2 is the algorithm Piotr Woźniak developed for SuperMemo in 1987 and described in 1990, and the one most older flashcard apps, including Anki's original scheduler, are based on. It gives each card an ease factor that starts at 2.5. After the first two reviews (1 day, then 6 days), each new interval is the last one multiplied by the ease. Pressing a low grade lowers the ease, down to a minimum of 1.3, and a lapse sends the card back to the start.

SM-2FSRS
First used19872022 onwards
Model of memoryNone: fixed rulesDifficulty, stability, retrievability
What you chooseIntervals and ease settingsA desired retention
Predicts recall probabilityNoYes, for every card, every day
Late or early reviewsMostly ignoredTaken into account
After a lapseBack to short intervals, with a lower easeStability recalculated from the whole history
Fitted to dataNoYes, and can be fitted to your own reviews

A known problem with SM-2 is what Anki users call ease hell: cards that were forgotten a few times end up with a low ease and come back too often forever, even once you know them well. In FSRS, difficulty can recover, and stability is recalculated from what actually happened. The Open Spaced Repetition project publishes benchmarks comparing schedulers on large sets of real review logs; FSRS predicts recall considerably better than SM-2 on them.

If you're coming from boxes on your desk, the Leitner system is an ancestor of both: cards move up a box when you remember them and back down when you don't.

Fitting FSRS to you

FSRS-6 has 21 parameters. The defaults were fitted to a large collection of real review histories and work well for most people from day one. Once you've built up a substantial history of your own, an optimizer can fit the parameters to your reviews, so the predictions match how your memory behaves with your material.

FlashCardz uses the default parameters for now and keeps every review in an append-only history, so cards can be rescheduled from that history once personal fitting is added. Nothing about your past reviews is lost in the meantime.

What FSRS can't do for you

  • It can't tell a good card from a bad one. A vague or overloaded card will be forgotten again and again, and FSRS will dutifully keep bringing it back. Fix the card instead (how to make flashcards).
  • It can't know when you're bluffing. Pressing Good on a card you only half-knew teaches the algorithm the wrong thing.
  • On its own, it doesn't know your exam date. FlashCardz adds that on top: with an exam date set, no card is scheduled for after the day before the exam, and the normal schedule returns afterwards.
  • It doesn't decide what to learn. Choosing the ideas that matter is still the main work; FlashCardz ranks the key ideas in your course before writing cards for them.

How to get the most out of FSRS

  1. Rate honestly. Again if you couldn't recall it, Good if you could. When in doubt between Hard and Good, choose Good; use Hard and Easy only when they're clearly true.
  2. Review every day, or nearly. The model handles late reviews, but a growing backlog makes every session harder.
  3. Keep cards small: one idea per card, so a lapse means one thing you didn't know.
  4. Leave the desired retention alone once it's set. Changing it often makes your workload swing.
  5. Add new cards at a pace you can sustain. See how many flashcards a day.

Questions

What does FSRS stand for?

Free Spaced Repetition Scheduler. It's an open-source algorithm that decides when each flashcard should be reviewed.

Is FSRS better than SM-2?

On the Open Spaced Repetition project's benchmarks of real review data, FSRS predicts recall considerably more accurately than SM-2, which means fewer reviews for the same retention or better retention for the same reviews.

What desired retention should I use with FSRS?

90% is the default and a good choice for most students. Going to 95% costs about 45% more reviews; 85% is reasonable if your workload is too high.

Does FSRS work for cramming before an exam?

FSRS schedules for long-term memory. Before an exam, you also need every card reviewed shortly before the day; FlashCardz caps intervals at the day before the exam when you give a course an exam date.

Should I use the Hard and Easy buttons?

Sparingly and honestly. Good for a normal correct answer, Again for a wrong one. Hard and Easy are for answers that were clearly a struggle or clearly effortless.

Does FlashCardz use FSRS?

Yes, on every plan: every card, including cards you make yourself and decks you import from Anki, is scheduled with FSRS.

Sources

  1. Ye, J., Su, J., & Cao, Y. (2022). A stochastic shortest path algorithm for optimizing spaced repetition scheduling. Proceedings of the 28th ACM SIGKDD Conference on Knowledge Discovery and Data Mining, 4381–4390. doi.org/10.1145/3534678.3539081
  2. Open Spaced Repetition. The Algorithm (FSRS documentation). github.com/open-spaced-repetition/fsrs4anki/wiki/The-Algorithm
  3. Open Spaced Repetition. py-fsrs, version 6.3.2: the implementation FlashCardz uses, and the source of this article's numbers. github.com/open-spaced-repetition/py-fsrs
  4. Open Spaced Repetition. SRS Benchmark: schedulers compared on real review logs. github.com/open-spaced-repetition/srs-benchmark
  5. Woźniak, P. A. (1990). Optimization of learning: Algorithm SM-2. SuperMemo. super-memory.com/english/ol/sm2.htm

We check every number in our articles against the work it comes from. Spotted a mistake? Write to support.flashcardz@gmail.com and we'll correct it.