lumoStart reading free

FSRS, explained

How a modern scheduler decides when you review

The Lumo Team9 min read

Joseph Wright of Derby, A Philosopher Lecturing on the Orrery: a lamp lights the faces of adults and children gathered round a clockwork model of the solar system.
Joseph Wright of Derby, A Philosopher Lecturing on the Orrery, c. 1766

FSRS (Free Spaced Repetition Scheduler) is an open-source algorithm that predicts how likely you are to remember each flashcard right now, and schedules the review for the day that probability falls to a target you choose, usually 90%. It models every card with three numbers, stability, difficulty and retrievability, and fits its parameters to your own review history. Here is the FSRS algorithm explained without hand-waving: what those numbers mean, how they update, and why it usually beats the older SM-2.

If you use Anki, you have probably seen the FSRS toggle in your deck options. If you are deciding whether to flip it, or just want to know what your flashcard app is doing behind the scenes, read on.

Where FSRS comes from

FSRS was created by Jarrett Ye (known online as LMSherlock) and is maintained by the open-spaced-repetition project on GitHub. It grew out of research he did at MaiMemo, a Chinese vocabulary app, which produced two peer-reviewed papers:

  • Ye, Su & Cao (2022), “A Stochastic Shortest Path Algorithm for Optimizing Spaced Repetition Scheduling,” Proceedings of the 28th ACM SIGKDD Conference, pp. 4381–4390 (DOI). It trained a memory model on about 220 million review logs and treated scheduling as an optimization problem: minimize review cost while reaching a memory goal.
  • Su, Ye, Nie, Cao & Chen (2023), “Optimizing Spaced Repetition Schedule by Capturing the Dynamics of Memory,” IEEE Transactions on Knowledge and Data Engineering 35(10) (DOI), an extended version of the same work.

FSRS took the memory model from that research, simplified it and made it trainable on one person’s data. Anki added it as a built-in option in version 23.10, and it is now used by a long list of apps. The versions have kept moving: FSRS-4.5 had 17 parameters, FSRS-5 had 19, and FSRS-6, the version most apps run today, has 21. The project’s benchmark already lists experimental successors.

The FSRS algorithm explained: three numbers per card

The heart of FSRS is what its authors call the DSR model, for Difficulty, Stability and Retrievability. It goes back to an idea Piotr Wozniak, the creator of SuperMemo, described decades ago: memory has two components, how strong a memory is and how retrievable it is at this moment.

Retrievability (R)

Retrievability is the probability that you can recall the card right now. It is 100% just after a successful review and declines as days pass. It is the only one of the three numbers that changes on its own, without you doing anything.

Stability (S)

Stability is measured in days. In FSRS it has a precise definition: the number of days it takes for retrievability to fall from 100% to 90%. A card with a stability of 30 days will, on average, be recalled 90% of the time if you see it 30 days after your last review.

Stability is the number you are really trying to grow. Each successful review multiplies it, and a forgotten card has it cut sharply.

Difficulty (D)

Difficulty runs from 1 to 10 and describes how hard it is to make this card’s memory more stable. A high-difficulty card gains less stability from each successful review than an easy one. Difficulty goes up when you press Again or Hard and down when you press Easy.

How the numbers update

You don’t need the formulas to use FSRS, but seeing their shape explains a lot of its behavior. The descriptions below follow the FSRS-6 reference implementation, py-fsrs, and the project’s algorithm notes. The w values are the trainable parameters.

The forgetting curve

FSRS-6 predicts retrievability with a power-law curve:

R(t, S) = (1 + factor * t / S) ^ (-w20)
factor  = 0.9 ^ (-1 / w20) - 1

Here t is the days since your last review. The factor is chosen so that R is exactly 90% when t equals S, which is what makes the definition of stability work. The decay parameter w20 was a fixed constant in FSRS-4.5 and FSRS-5 and became trainable in FSRS-6, so the curve’s shape can now fit the way you forget.

Why a power law and not the textbook exponential? Because your collection is a mix of memories of different strengths, and averaging many exponential curves with different rates gives a curve that falls fast at first and then flattens out. That’s a power law. With the FSRS-6 default decay, a card is at 90% after one stability-length, about 85% after two and about 76% after five. It drops slowly in the long tail.

After a successful review

When you press Hard, Good or Easy, the new stability is the old one multiplied by a growth factor. In words, that factor is larger when:

  • difficulty is lower (the formula uses 11 - D),
  • stability is lower (stable memories grow more slowly, a saturation effect),
  • retrievability was lower at the moment you reviewed (recalling something you were about to forget strengthens it more, the spacing effect in one term).

Hard applies a penalty and Easy a bonus, both trainable.

After a lapse

When you press Again, stability is recalculated from difficulty, the old stability and the retrievability at the time. It usually ends up far lower than before, but not back at zero. Forgetting a card you once knew well leaves more behind than forgetting a card you barely learned.

Difficulty and same-day reviews

Each rating nudges difficulty up or down. The nudge shrinks as difficulty approaches 10 (linear damping), and a small mean reversion pulls difficulty back toward a default value so that cards don’t get stuck as permanently “hard.” FSRS-5 and FSRS-6 also model same-day reviews (learning steps), and FSRS-6 makes those short-term gains smaller for cards that are already stable.

Desired retention: the one setting that matters

Once FSRS knows a card’s stability, scheduling is just the forgetting curve run backwards: find the day when R will fall to your desired retention, and schedule the review then. At 90%, the interval equals the stability. Change the target and the interval changes with it. Here’s what that looks like with the FSRS-6 default decay:

Desired retention Next interval, as a multiple of stability
80% about 3.3 × S
85% about 1.9 × S
90% 1.0 × S
95% about 0.4 × S
97% about 0.22 × S

So moving from 90% to 95% cuts every interval by more than half, and 97% cuts it to under a quarter. That’s why the Anki manual warns that workload “increases very quickly” above 90%, and advises keeping the value below 97%. Going the other way, below 80% or so, saves fewer reviews than you would expect, because you forget more cards and every lapse costs extra reviews to relearn.

For most language learners, 85–90% is a sensible range. If reviews are crowding out reading, lower it a little. If you have an exam soon, raise it for that deck.

One more distinction: desired retention is a target, not a measurement. Your true retention will be close to it only if FSRS’s predictions are well calibrated, which is what training the parameters is for.

Training the parameters on your history

FSRS ships with default parameters fitted on a large collection of real users’ reviews. Once you have a decent history (the more reviews, the better the fit), you can fit all 21 parameters to your own data. The optimizer adjusts them to minimize log loss: how far its predicted recall probabilities were from what actually happened when you pressed Again or Good.

This is the real break from older schedulers. FSRS is not a fixed set of rules for how intervals should grow. It’s a model of your memory that gets tested against your own answers.

FSRS vs SM-2

SM-2 is the algorithm Piotr Wozniak published for SuperMemo in the late 1980s. A variant of it was Anki’s scheduler for most of Anki’s life. It is simple:

  • A new card is shown after 1 day, then after 6 days.
  • After that, each interval is the previous one multiplied by the card’s ease factor, which starts at 2.5.
  • Grading a card poorly lowers its ease (to a floor of 1.3) and, on a lapse, resets the interval.
SM-2 FSRS-6
What it tracks per card Interval and ease factor Stability, difficulty, last review
Predicts recall probability? No Yes
Uses the actual delay when you review late? Not really Yes, retrievability at review time feeds the update
Personalized? Same rules for everyone 21 parameters fitted to your history
Retention target Implicit, uncontrolled Explicit setting
Known failure mode “Ease hell”: failed cards keep shrinking ease and come back too often forever Needs enough history to optimize well; defaults are decent but generic

The most practical difference is that SM-2 never says how likely you are to remember a card. It just multiplies intervals. FSRS predicts that probability, so it can schedule for a target you choose and adjust properly when you come back from a week off.

What the benchmark says

The open-spaced-repetition project maintains a public SRS benchmark that tests algorithms on about 10,000 Anki users’ collections, with roughly 350 million reviews used for evaluation in its main table. FSRS-6 reaches a log loss of about 0.346 there, against 0.395 for a baseline that always predicts the user’s average retention. Because SM-2 doesn’t output probabilities at all, the benchmark had to bolt extra formulas onto it before it could be compared. In the early-2025 edition of the table, those SM-2 adaptations scored worse than even the always-predict-the-average baseline, while FSRS-5 scored well ahead of it. The current table no longer lists SM-2.

Keep the benchmark in perspective. It mostly measures how accurately an algorithm predicts recall. Lower log loss means better-calibrated intervals, and in practice that usually means fewer reviews for the same retention. But it’s not a controlled trial of long-term learning outcomes. The benchmark also shows newer models predicting better still, from the experimental FSRS-7 to neural networks with millions of parameters. FSRS is a good, efficient, interpretable model, not the last word.

What FSRS can’t fix

A scheduler decides when you see a card, not whether the card is worth seeing. For language learners, the card itself matters more:

  • Cards with context beat bare words. A word on its own is hard to recall and easy to forget. A word in a sentence you understood is easier. See our sentence mining guide for how to build good cards.
  • Reading does reviews for free. Every time you meet a word in a story, you get a natural review that no scheduler counts. The more you read, the less your flashcards have to carry. That’s the argument of extensive vs intensive reading.
  • Grade honestly. FSRS learns from your button presses. If you press Good when you half-remembered, it will learn that you remember better than you do, and space things too far apart.

How Lumo uses FSRS

Lumo schedules its flashcards with FSRS-6. Words you save while reading become cards automatically, along with the sentence you found them in. Deck packages you import (.apkg or .colpkg files) are scheduled the same way. The point is for reviews to back up your reading, not replace it. Lumo isn’t available yet; it’s coming soon.

FAQ

Is FSRS better than SM-2?

On the open-spaced-repetition benchmark, FSRS predicts recall far more accurately than SM-2. In the edition that still compared them, adapted SM-2 did worse than a baseline that just predicts your average retention. In practice, that usually means fewer reviews for the same retention, or higher retention for the same time. SM-2’s advantage is simplicity: you can predict its intervals in your head.

What desired retention should I use with FSRS?

90% is the default and a sound choice. Many language learners do well at 85–90%, and a lot of reading on the side helps cover the gap. Going above 95% makes your workload grow much faster than your retention.

What do stability and difficulty mean in FSRS?

Stability is the number of days until your chance of recalling a card drops to 90%. Difficulty, on a scale from 1 to 10, describes how slowly a card’s stability grows with each successful review. Retrievability is your current chance of recall, worked out from stability and the time since your last review.

Do I need to optimize FSRS parameters?

The defaults work reasonably well from day one. Optimizing on your own review history makes the predictions better calibrated. It’s worth doing once you have a solid review history, and again every month or so as that history grows.

Who created FSRS?

Jarrett Ye created FSRS, building on spaced-repetition research he published with colleagues at MaiMemo (KDD 2022 and IEEE TKDE 2023). It is developed in the open by the open-spaced-repetition community on GitHub.

More on research, vocabulary and tools

Try it on something you’d read anyway

Bring an article, a YouTube video or a book, tap any word you don’t know, and Lumo keeps track of every word you learn.

Start reading free

Keep reading

Almost ready

Lumo is coming soon.

We're putting the last pages in place. Soon you'll be able to read and watch anything you love, tap any word, and watch it fade from yellow to known.