Spaced repetition · est. 2022

The FSRS algorithm

The modern, data-driven successor to SM-2. FSRS models your memory with three variables and a set of optimized weights, then schedules each review to hit a target retention rate.

introduced (open source)
2022
introduced (open source)
memory variables (D, S, R)
3
memory variables (D, S, R)
optimized weights
21
optimized weights
default retention
90%
default retention

The forgetting curve, reset by each review

100%0time →
without review with spaced reviews
Overview

What is FSRS?

FSRS — the Free Spaced Repetition Scheduler — is an open-source algorithm built by the spaced-repetition community and shipped inside Anki since 2023. Where SM-2 uses one hand-tuned rule, FSRS fits a small model of memory to real review data.

It is based on the three-component model of memory (DSR): every card has a Difficulty, a Stability and a Retrievability. Retrievability is the probability you could recall the card right now, and it decays along a predictable forgetting curve as time passes since your last review.

The model carries a set of weights that govern how difficulty and stability move after each rating. They are fit to review data so the forgetting curve matches how people actually forget, and FSRS then picks each interval so predicted recall lands on a target retention — the same memory strength as SM-2 with fewer reviews.

The review loop

How it works

The loop looks familiar, but the update step fits a memory model instead of a single rule.

1

Show & recall

The card appears. You pick an answer from the options.

2

Rate recall

Your correctness and speed map to one of four ratings — Again, Hard, Good or Easy.

3

Update D, S, R

The optimized weights recompute difficulty, stability and retrievability from that rating.

4

Hit target retention

The next interval is the time until predicted recall falls to the retention goal (90% by default).

Parameters

The knobs that drive scheduling

FSRS tracks three memory variables per card, plus the global weights and a retention target.

D

Difficulty

1 – 10

The intrinsic hardness of a card. Higher difficulty dampens how fast stability can grow, so tough cards keep coming back more often.

S

Stability

days

The number of days for retrievability to fall to 90%. It is the memory "strength" — the interval is derived from it, and each successful review grows it.

R

Retrievability

0 – 1

The probability you could recall the card right now. It decays along a power-function forgetting curve as time passes since the last review.

w

Weights

21 params

The trainable parameters of the model (FSRS-6). Gnoseed uses the research-optimized defaults; they govern exactly how D and S update after each rating.

r

Desired retention

default 0.90

The recall probability FSRS targets when choosing intervals. Gnoseed uses the 90% default — lower means fewer reviews and more forgetting; higher means more reviews.

Under the hood

The memory model

# FSRS-6 forgetting curve (power function)
# R = recall probability, S = stability (days),
# t = days since last review, decay from weights

R(t, S) = (1 + FACTOR * t / S) ** decay

# next interval: solve R = desired retention r
# (Gnoseed uses r = 0.90)
interval = (S / FACTOR) * (r ** (1 / decay) - 1)

# each rating updates D and S through the
# 21 optimized weights w[0..20]:
D = next_difficulty(D, rating, w)
S = next_stability(D, S, R, rating, w)  # grows on success

The forgetting curve is a power function of time over stability: more stable memories decay more slowly. Retrievability R starts at 1 right after a review and falls toward 0.

To schedule, FSRS inverts that curve — it solves for the interval at which predicted R equals the desired retention. Each rating then updates difficulty and stability through the optimized w[] weights. Gnoseed runs the research-tuned defaults rather than training per-user.

In Gnoseed

How Gnoseed uses FSRS

Research-optimized defaults

Gnoseed runs FSRS-6 with its 21 optimized default weights and a 90% retention target — no per-user training or setup required.

Auto-rated answers

Your multiple-choice correctness and speed map onto Again / Hard / Good / Easy, so you never grade manually.

Models memory explicitly

By tracking stability and difficulty per card, FSRS aims for its retention target with fewer reviews than a fixed-rule scheduler.

Switch anytime

Settings lets you switch to SM-2. Switching resets card scheduling — your streak and review count stay.

SM-2 vs FSRS

How the two schedulers compare

Gnoseed supports both. SM-2 is the transparent classic; FSRS is the data-driven modern successor. Here is how they differ at a glance.

SM-2FSRS
Introduced1987 · SuperMemo2022 · open source
State per card3 values (EF, interval, reps)3 variables (D, S, R)
Tunable weightsNone — one fixed rule21 optimized weights
Needs training dataNoNo — uses optimized defaults
Models forgetting curveIndirectlyExplicitly (retrievability)
Best forSimplicity & transparencyAccuracy with fewer reviews
FAQ

Common questions

What is the FSRS algorithm? +

FSRS (Free Spaced Repetition Scheduler) is an open-source spaced-repetition algorithm that models memory with three variables — difficulty, stability and retrievability — and a set of optimized weights, scheduling each review to hit a target retention rate.

What are stability and difficulty? +

Stability is the number of days for your recall probability to fall to 90%; it grows as a memory strengthens. Difficulty (1–10) is the intrinsic hardness of a card and dampens how fast stability can grow.

How many weights does FSRS have? +

The FSRS-6 model used by Gnoseed (via ts-fsrs) has 21 weights. Gnoseed uses the research-optimized default values rather than training them per user.

Is FSRS better than SM-2? +

FSRS is typically more accurate because it explicitly models the forgetting curve, hitting target retention with fewer reviews. SM-2 is simpler and needs no parameters at all. Gnoseed offers both — you can switch in Settings.

The other algorithm

Meet SM-2, the transparent classic

SM-2 is the simple, battle-tested scheduler that needs no data. See the three values it tracks and the formula behind it.

Read about SM-2