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 review | Chance of recalling it |
|---|---|
| 1 | 98.6% |
| 5 | 94.0% |
| 10 | 90.0% |
| 20 | 84.6% |
| 30 | 80.9% |
| 60 | 74.3% |
| 100 | 69.3% |
| 365 | 57.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 retention | Next 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%.
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:
| Review | Stability afterwards | Next review after |
|---|---|---|
| Day 0, learning steps | 2.3 days | 2 days |
| Day 2 | 11 days | 11 days |
| Day 13 | 46 days | 46 days |
| Day 59 | 163 days | 163 days |
| Day 222 | 498 days | 498 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-2 | FSRS | |
|---|---|---|
| First used | 1987 | 2022 onwards |
| Model of memory | None: fixed rules | Difficulty, stability, retrievability |
| What you choose | Intervals and ease settings | A desired retention |
| Predicts recall probability | No | Yes, for every card, every day |
| Late or early reviews | Mostly ignored | Taken into account |
| After a lapse | Back to short intervals, with a lower ease | Stability recalculated from the whole history |
| Fitted to data | No | Yes, 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
- 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.
- Review every day, or nearly. The model handles late reviews, but a growing backlog makes every session harder.
- Keep cards small: one idea per card, so a lapse means one thing you didn't know.
- Leave the desired retention alone once it's set. Changing it often makes your workload swing.
- 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
- 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
- Open Spaced Repetition. The Algorithm (FSRS documentation). github.com/open-spaced-repetition/fsrs4anki/wiki/The-Algorithm
- 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
- Open Spaced Repetition. SRS Benchmark: schedulers compared on real review logs. github.com/open-spaced-repetition/srs-benchmark
- 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.