Skip to content

Whitepaper 02 · FSRS

Modeling Memory Decay with FSRS

The brain forgets on a predictable curve. Lumi's scheduler estimates the moment a fact is about to slip, and schedules the review there, where a single recall does the most work.

FSRS (Free Spaced Repetition Scheduler) is an open-source spaced-repetition algorithm. For every card it keeps three numbers: difficulty, stability (roughly, how many days the memory lasts) and retrievability (the chance you can recall it now). After each review it updates them and sets the next review for the day retrievability is predicted to fall to a target, 0.9 in Lumi. For a shorter, student-facing version, read what FSRS is and why it matters for NEET.

1. The forgetting curve is not your enemy

Retrievability, the probability you can recall a fact right now, decays with the time since your last review: quickly at first, then more slowly. Review too early and you waste effort on something you already know; review too late and you've forgotten it and must relearn from scratch. Both are expensive.

R(t)=(1+t9 S)−1R(t) = \left(1 + \frac{t}{9\,S}\right)^{-1}
(1)

Retrievability RR after tt days, given memory stability SS, in the form FSRS v4 published.

The FSRS version Lumi runs (py-fsrs, the library behind Lumi's scheduler) flattens the tail of the curve. Both forms pass through R=0.9R = 0.9 at t=St = S, which is what stability means:

R(t)=(1+1981 tS)−0.5R(t) = \left(1 + \tfrac{19}{81}\,\frac{t}{S}\right)^{-0.5}
(2)

The curve drawn in Figures 1 and 2.

Figure 1 · Recall after one review
0.40.60.80.91.0DAY 051015202530R = 0.90S = 2 DS = 7 DS = 20 D
Figure 1.Recall probability against days since the last review, for three stabilities. Each curve reaches the 0.90 line on the day equal to its stability (orange marks), so a card with S=20S = 20 can wait ten times as long as one with S=2S = 2.

2. Three numbers per card

FSRS tracks a small memory state for every flashcard and updates it after each review based on how the recall actually went.

Stability (S)
How many days until retrievability falls to 90%. Every successful review stretches stability, which is the core mechanism behind expanding intervals.
Difficulty (D)
How inherently hard this card is for you. Difficult cards gain stability more slowly, so they resurface more often.
Retrievability (R)
The live probability of recall right now. The scheduler targets the day R crosses your desired retention (e.g. 90%).

3. Scheduling at the edge of forgetting

When you rate a review as Again, Hard, Good or Easy, Lumi updates that card's stability and difficulty, then solves for the next interval that lands retrievability on your retention target. A card you find easy might jump from 4 days to 15; one you stumble on collapses back to a short interval and climbs again.

tnext=SF(r−2−1)=Sat r=0.9t_{\text{next}} = \frac{S}{F}\left(r^{-2} - 1\right) = S \quad\text{at } r = 0.9
(3)

The next interval for desired retention rr, with F=19/81F = 19/81; rounded to whole days.

Across thousands of cards this compounds: the same study minutes buy far more retained knowledge than fixed-interval review, because no minute is spent on a fact that wasn't about to be forgotten.

Figure 2 · One concept over 60 days

One concept · recall over 60 daysDay 60
0.60.70.80.91.0DAY 0102030405060DESIRED RETENTION 0.90GOODGOODHARDFSRSEVERY 7 DAYS
Day 60
FSRSRetention 0.90
Stability
49.9 days
Recall today
0.98
Next review
Day 99
Reviews so far
4
Days under 0.90
0
Every 7 daysFixed timetable
Reviews so far
9
Days under 0.90
3
Reviews at recall over 0.95
7

Same concept, same memory model. The presses are illustrative (Good, Good, Good, Hard under FSRS; Good every time on the timetable). The scheduler and its default weights are the ones Lumi runs.

Figure 2.The same concept under FSRS (orange) and a fixed every-7-days timetable (dashed), on the same memory model. Drag the slider to move “today”. The grade presses are illustrative; the scheduler and its default weights are the ones Lumi runs.