Skip to content

The FSRS algorithm

FSRS, the Free Spaced Repetition Scheduler, is an open-source spaced repetition algorithm built into Anki. It estimates how likely you are to recall each card and schedules the next review for when that probability falls to a target you choose.

In short

  • FSRS tracks three numbers per card: difficulty, stability and retrievability, the estimated probability that you can recall it now.
  • You set a desired retention, 90% by default in Anki. FSRS schedules each review for when retrievability is expected to fall to that value.
  • Higher desired retention means more reviews per day; lower means fewer reviews but more forgotten cards.
  • FSRS fits its parameters to your own review history. Anki has offered it since version 23.10 and uses FSRS-6 since 25.07.

What is the FSRS algorithm?

FSRS is a scheduling algorithm for flashcards: after each review, it decides how many days to wait before showing the card again. Jarrett Ye created it and develops it with the open-spaced-repetition community on GitHub. It grew out of his research at MaiMemo, a Chinese vocabulary app, published at the KDD conference in 2022 with Jingyong Su and Yilong Cao.[1] That paper fitted a memory model to 220 million review logs from MaiMemo users, and a 2023 journal version extended it.[1][2] The open-source project describes FSRS as based on the DHP model from this work.[3]

Anki integrated FSRS in version 23.10, released in late 2023, as an option next to its older SM-2-based scheduler.[4] Open-source libraries exist in Python, Rust, TypeScript and other languages, and the project's own list of apps using FSRS includes Mochi Cards, RemNote and Logseq.[5] For how FSRS fits into Anki's settings, see the Anki algorithm.

How does FSRS model memory?

FSRS describes the memory of each card with three numbers, often shortened to DSR: difficulty, stability and retrievability.[3] After every review, it updates difficulty and stability from your grade (Again, Hard, Good or Easy) and the time since the last review.

ComponentWhat it meansExample
Retrievability (R)The probability that you can recall the card at a given momentR = 0.95: a 95% chance of recalling it today
Stability (S)The number of days it takes for retrievability to fall from 100% to 90%S = 365: a year before recall drops to 90%
Difficulty (D)How hard it is to increase the card’s stability with a review, on a scale from 1 to 10A card you often fail gets a high D, so its intervals grow more slowly

Retrievability falls as time passes, following a forgetting curve. Stability sets how fast: the higher it is, the more slowly the curve drops. A successful review raises stability, by more when difficulty is low and when retrievability was low at the time of the review.[6]

How does FSRS decide when to show a card?

FSRS shows a card again when its estimated retrievability falls to your desired retention. In FSRS-6, the curve and the interval are:[6][7]

R(t, S) = (1 + factor × t / S) ^ (−w20)
factor  = 0.9 ^ (−1 / w20) − 1

I(r, S) = (S / factor) × (r ^ (−1 / w20) − 1)

In words: t is the number of days since the last review and S is stability. The first line gives the probability of recall after t days. The factor makes that probability exactly 90% when t equals S. The decay w20 sets the shape of the curve and is fitted to each user. The last line solves the curve for t: the next interval I is the number of days until retrievability reaches the desired retention r. Implementations round it to whole days and cap it at a maximum interval.[7]

A consequence: at a desired retention of 90%, the next interval equals the card's stability. FSRS does not know when you will forget a card. It estimates a probability, and at 90% you can expect to fail about one review in ten.

What does desired retention do?

Desired retention is the probability of recall you want at the moment a card comes up for review; it trades how much you remember against how many reviews you do. Anki's default is 90%. The Anki manual warns that the workload rises steeply as the setting approaches 100% and recommends staying below 97%.[8] The FSRS documentation calls values between 70% and 97% reasonable.[3]

For example, take a card with a stability of 10 days and the default FSRS-6 decay of 0.1542.[7] The formula above gives these next intervals:

Desired retentionNext interval
80%33 days
85%19 days
90%10 days
95%4 days
97%2 days

Raising the target from 90% to 95% more than halves the interval, so the card comes back more than twice as often. For how intervals add up over time, see the spaced repetition schedule.

How does FSRS adapt to your reviews?

FSRS adapts by fitting its parameters to your past reviews with an optimizer, a machine-learning step that finds the values which best predict whether you recalled each card.[3] FSRS-6 has 21 parameters.[6] They control, for example, the starting stability for each first grade, how much each grade changes difficulty, and the shape of the forgetting curve.

  • Default parameters. Before you optimize, FSRS uses defaults fitted to several hundred million reviews from about 10,000 users.[3]
  • Optimizing in Anki. The “Optimize” button in the deck options runs the optimizer on your history. The manual flags collections with fewer than a few hundred reviews and says that optimizing once a month is enough.[8]

Which version of FSRS is current?

FSRS-6 is the version in Anki: it arrived in Anki 25.07, and Anki's September 2026 release (26.09) ships version 6.6.2 of the FSRS library.[9][10] Each version changed the model and the number of parameters:[6][11]

VersionParametersMain change
FSRS v417First version integrated into Anki (23.10)
FSRS-4.517New forgetting curve: drops faster at first, then flattens
FSRS-519Models reviews done on the same day; smoother difficulty updates
FSRS-621Better same-day reviews; the curve’s decay is fitted to each user
FSRS-7–Designed for fractional intervals rather than whole days; not yet in Anki

The project's benchmark lists FSRS-7 as the newest version, with a more complex forgetting curve.[11] Anki 26.09 still uses FSRS-6.[10]

Is FSRS better than SM-2?

On the available evidence, FSRS predicts recall more accurately than SM-2, but that evidence comes mostly from the FSRS project itself. SM-2, from 1987, gives each card an ease factor and multiplies the interval by it; it does not estimate a probability of recall (see the SM-2 algorithm). The FSRS documentation reports, from simulations, 20–30% fewer reviews than SM-2 for the same retention.[3] Benchmarks are covered in FSRS vs SM-2.

Keep three limits in mind:

  • It needs history. With few reviews, FSRS runs on default parameters fitted to other people.[8]
  • The benchmark is the project's own. The open-spaced-repetition benchmark tests algorithms on about 10,000 Anki users' collections, filtered for outliers.[11] It is large and public, but not independent, and Anki users may differ from other learners.
  • It estimates, it does not know. Retrievability is a probability, not a forecast for one review: at 95%, about one review in twenty still fails.

Sources

  1. Ye, J., Su, J., & Cao, Y. (2022). A stochastic shortest path algorithm for optimizing spaced repetition scheduling. In Proceedings of the 28th ACM SIGKDD Conference on Knowledge Discovery and Data Mining (pp. 4381–4390). ACM. https://doi.org/10.1145/3534678.3539081
  2. Su, J., Ye, J., Nie, L., Cao, Y., & Chen, Y. (2023). Optimizing spaced repetition schedule by capturing the dynamics of memory. IEEE Transactions on Knowledge and Data Engineering, 35(10), 10085–10097. https://doi.org/10.1109/TKDE.2023.3251721
  3. open-spaced-repetition. ABC of FSRS. awesome-fsrs wiki, GitHub. https://github.com/open-spaced-repetition/awesome-fsrs/wiki/ABC-of-FSRS
  4. Anki. Changes in 23.10. Anki changelog. https://changes.ankiweb.net/changes/23.10.html
  5. open-spaced-repetition. awesome-fsrs: a curated list of FSRS implementations and apps. GitHub. https://github.com/open-spaced-repetition/awesome-fsrs
  6. open-spaced-repetition. The Algorithm. awesome-fsrs wiki, GitHub. https://github.com/open-spaced-repetition/awesome-fsrs/wiki/The-Algorithm
  7. open-spaced-repetition. py-fsrs: scheduler source code (fsrs/scheduler.py). GitHub. https://github.com/open-spaced-repetition/py-fsrs/blob/main/fsrs/scheduler.py
  8. Anki Manual. Deck options: FSRS. https://docs.ankiweb.net/deck-options.html#fsrs
  9. Anki 25.07 release notes. GitHub. https://github.com/ankitects/anki/releases/tag/25.07
  10. Anki 26.09 release notes. GitHub. https://github.com/ankitects/anki/releases/tag/26.09
  11. open-spaced-repetition. SRS benchmark. GitHub. https://github.com/open-spaced-repetition/srs-benchmark