Verbamor Start 7 days free
All posts Start 7 days free

How FSRS schedules your reviews (under the hood)

FSRS schedules each review by tracking three numbers per card (difficulty, stability and retrievability), updating them after every grade, and bringing the card back when your predicted recall has sagged to about 90%. Its 21 parameters start from crowd defaults and re-fit to your own reviews. On a 1.7-billion-review benchmark, it predicts recall better than SM-2.

You tap Good on el bosque and the card vanishes for 12 days. Why 12? Why not 10, or 15? Why does your friend's identical card wait 8?

Somebody decided, and that somebody is an algorithm with a published paper, an open-source repo, and strong opinions about your memory.

The algorithm is called FSRS, the Free Spaced Repetition Scheduler. Jarrett Ye and collaborators created it, and it's been battle-tested in the open on billions of real reviews. Verbamor runs it under the hood.

Here's the actual machinery, no math degree required, because a tool that decides your daily 20 minutes deserves to be inspectable.

A card is three numbers, and only one of them moves by itself

FSRS models every card as three quantities, the DSR model:

  • Difficulty (D): how stubborn this particular card is for you. Hola is a 1; the subjunctive trigger phrase your tutor keeps sighing about is a 9. Difficult cards grow their intervals more slowly.
  • Stability (S): how long the memory lasts. Formally: the days until your recall odds sag to 90%. Stability is the number your reviews are trying to grow, from hours at first to, eventually, years.
  • Retrievability (R): the odds you'd recall the card right now. This one falls on its own, every day, along a forgetting curve. It's the live, per-card version of what Ebbinghaus drew in 1885.
Each successful review makes the next slide down slower Retrievability is your odds of recalling the card right now, and it falls on its own. A review at the 90% line pulls it back to full and raises stability, so the gap before the next review stretches without anyone widening it by hand. 90% target review 1 review 2 review 3 time → 100% Schematic of the FSRS DSR model, not measured data. The shape (expanding gaps after each success) is what the model produces; your own intervals depend on the card and your grades.

Two details separate FSRS from older models. The forgetting curve FSRS fits is a power curve. It matches large-scale review data better than the exponential everyone drew for a century: fast early decay, then a longer, flatter tail.

And stability, difficulty, and your review history all interact. The model was fitted to how memory actually behaves in the wild, where older ones used a formula someone liked in the 80s.

What does each grade button actually do?

Each grade pushes the card's stability up or down, because every grade is a tiny experiment and your tap is the result coming back. Roughly:

  • Good: the model was right to schedule you now. Stability jumps (the biggest jumps come from succeeding when R had sagged, the desirable difficulty payout, formalized). Next interval: longer.
  • Hard: you made it, barely. Stability grows a little, difficulty ticks up, the next interval stretches cautiously.
  • Easy: the model undershot. Big stability jump, difficulty ticks down.
  • Again: the memory wasn't where the model thought. Stability takes a real haircut (it doesn't reset to zero; relearning is faster than learning, as Ebbinghaus's savings showed). Difficulty rises, and the card comes back soon.

The model learning from your taps is why honest grading is a mechanical requirement. The model is running a regression on your taps, fitting its numbers to them. Polluted data, polluted schedule.

Six weeks, six reviews, one honest failure priced in

Follow el bosque through its first month and a half, with illustrative numbers:

  • Day 0. You learn it. Stability starts small, call it 2 days. The card is due day 2.
  • Day 2. R has sagged to ~90%. You produce it after a beat: Good. Stability jumps to ~6 days.
  • Day 8. Good again, a cleaner recall this time. Stability ~18 days. The gaps are compounding.
  • Day 26. You blank, then recognize it on the flip: Again, if you're honest. Stability takes a haircut to ~8 days, difficulty ticks up, and it comes back tomorrow for a quick relearn.
  • Day 27, then day 36. Two solid Goods. Stability climbs past 3 weeks, now on a slightly more cautious track because the model learned this word runs stubborn for you.

Six weeks, 6 reviews, maybe 50 seconds of total screen time. The card has gone from hours-fragile to weeks-stable, with one honest failure priced in along the way.

Multiply by 600 cards, each on its own track, and you can see why no one schedules this by hand.

The 90% target is why reviews never feel easy

Here's the design decision I find most elegant: FSRS doesn't actually schedule "when you'll forget." It schedules to a desired retention target, and the default is around 90%: each card comes back when your predicted recall has sagged to 9-in-10.

A 99% target would cost too much. Retention and workload trade off brutally.

Holding 99% means reviewing everything constantly for a sliver of extra recall. Dropping to 90% cuts the daily pile enormously while keeping most of the memory.

And the occasional miss still earns something: a failed retrieval plus correction is itself a potent learning event. The dial is set where the math and the memory research agree the value is.

The 90% dial also explains a feeling every spaced-repetition user knows: reviews are never comfortable. Of course they aren't.

The system is deliberately showing you each card at the moment your recall has decayed to its shakiest acceptable point. If your reviews felt easy, the scheduler would be wasting your time, showing you things too early.

The 10% you miss is the operating point.

The scheduler's promise is precise: every card, surfaced at the moment its odds hit 90%. What it costs you is arithmetic.

SM-2 has a trap with no exit, and FSRS has no ratchet

The previous default across flashcard land was SM-2, from SuperMemo, published in 1987. It's a fine piece of work that's older than most of its users.

It has hand-picked constants, and it learns nothing from your history beyond a single "ease" number that mostly ratchets down.

Spaced-repetition veterans know SM-2's failure mode by name: "ease hell." A run of lapses drags a card's ease factor down. The algorithm responds by showing it more and more often, forever, with no mechanism to forgive.

FSRS has no such trap. After every tap it re-estimates an actual memory model, in both directions.

Which scheduler you're actually running is worth checking, and it's rarely advertised on the pricing page. Anki ships SM-2 by default and has FSRS as an opt-in setting. Plenty of apps run a fixed ladder that never adapts at all.

I've put the ones I know about side by side in the spaced repetition roundup, compared on the scheduler instead of the marketing.

FSRS's origin is different. Ye, Su and Cao's 2022 paper (KDD '22) built the memory model on hundreds of millions of real reviews from a language-learning app, framing scheduling as an optimization problem.

Since then, the open-source community has maintained a public benchmark comparing schedulers on roughly 1.7 billion reviews from about 20,000 learners.

FSRS predicts actual recall more accurately than SM-2 and its variants, consistently, which is the whole job.

The claim is tested in public, on 1.7 billion real reviews The scheduler's claim is narrow and testable: predict recall more accurately than the alternatives. The benchmark that tests it is open, and so is the code that runs it.
1.7B
real flashcard reviews in the public benchmark it's tested on
20,000
learners' histories in that benchmark, roughly
21
parameters in FSRS-6, re-fitted to your personal review history
Source: Open Spaced Repetition, SRS benchmark (ongoing), which puts FSRS against SM-2 and other schedulers. Maintained in the open; anyone can rerun it.

The 21 parameters bend toward whoever you turn out to be

The current generation, FSRS-6, has 21 fittable parameters: how fast difficulty drifts, how much a Hard differs from a Good, the shape of your personal forgetting curve, and so on. They ship with defaults learned from the crowd, which already work well.

Then, as your reviews pile up, Verbamor re-fits the 21 parameters to you. Maybe you're a fast forgetter with a great Again-recovery. Maybe images do unusual work for you.

A few thousand reviews in, the parameters have quietly bent toward whoever you turn out to be. The 12-day interval on el bosque really is your 12 days.

So FSRS is the whole machine: three numbers per card, a grade-driven update, one honest dial, and a benchmark anyone can audit.

You never have to think about any of it again, which was always the point. But now when a card disappears for 12 days, you know exactly who decided, and on what evidence.

And if you're the type who wants to audit FSRS yourself: everything above is public. The algorithm spec, the benchmark code, the parameter definitions, all of it sits on GitHub under the Open Spaced Repetition project.

It's argued over in the open by people who care an unreasonable amount about your flashcards. Memory science with a changelog.


Sources

The forgetting curve foundation

The FSRS algorithm

Benchmarked on real reviews

  • Open Spaced Repetition (ongoing). SRS benchmark. ~1.7B reviews, ~20k learners; FSRS vs. SM-2 and others.

Research-grade scheduling, zero spreadsheets.

Verbamor runs FSRS on every card, fits its 21 parameters to your real reviews, and hands you the one number that matters: today's 20 minutes.

Start 7 days free
Verbamor screenshot: a one-minute French recording, transcribed, with the words the learner reached for listed underneath (du coup, le quai, voilà) and ticked to add to the deck. Finished cards in Spanish, Portuguese and Italian fan out beside the phone.