🔨 ClozeForge
← Blog
ALGORITHM SPECIFICATION
ALGORITHM SPECIFICATION
15 min read10 June 2026

FSRS-5: Decoding the 17 Weights of Spaced Repetition

A mathematical walkthrough of weights w0 through w16 and how they govern memory stability, difficulty dynamics, and retrievability curves — as specified by the open-source FSRS project.

CF
ClozeForge ResearchResearch & Education
Evidence-based summaries of published learning science

Mathematical Architecture

Mathematical weights17
SourceOpen-source (AGPL)
Methodology & Rigor
A plain-language walkthrough of the publicly documented FSRS-5 specification from the open-spaced-repetition project (github.com/open-spaced-repetition). All formulas cited are from that public specification, not from original ClozeForge research.
Open Specification Walkthrough

The Initial State Vector: Weights w0 through w4

The first parameters ($w_0, w_1, w_2, w_3$) establish the initial stability $S_0(G)$ assigned to a card after its very first review based on your rating: Again (1), Hard (2), Good (3), or Easy (4). A word you find easy earns a longer first interval than one you struggled with, preventing wasted reviews on trivial vocabulary. The exact values are learned from review-log data, so they are data-driven rather than hand-picked constants.

Formula: Initial Stability

S₀(G) = w_(G-1) — one dedicated weight per first-review rating, learned from anonymized review logs by the FSRS community.

Difficulty Dynamics & Mean Reversion: Weights w4 through w7

Initial difficulty is calculated as $D_0(G) = w_4 - e^{w_5 (G-1)} + 1$. Subsequent reviews adjust difficulty linearly via weight $w_6$, but crucially, parameter $w_7$ introduces mean reversion: $D' = w_7 D_0(3) + (1-w_7)(D - w_6(G-3))$. This mathematical stabilizer pulls difficulty back toward the mean over time, so a single careless typo does not permanently skew a familiar sentence's difficulty toward maximum friction.

The Role of Mean Reversion

Mean reversion dampens statistical noise from user fatigue or momentary distraction, maintaining smooth long-term scheduling.

Stability Growth & Desirable Difficulty: Weights w8 through w10

When a card is successfully recalled, stability updates as: $S'_r = S \cdot (1 + e^{w_8} \cdot (11-D) \cdot S^{-w_9} \cdot (e^{w_{10}(1-R)} - 1) \cdot h(G))$. The term $(e^{w_{10}(1-R)} - 1)$ mathematically captures the principle of 'Desirable Difficulty' (associated with Robert Bjork's memory research): recalling a card when its retrievability $R$ has dropped substantially produces a larger consolidation effect than reviewing it while it is still fresh.

Memory Tempering Effect

Recalling a forgotten word right at the edge of forgetting is modeled as producing the strongest memory strengthening.

Lapse Recovery: Weights w11 through w14

When you forget a card ($G=1$), FSRS-5 does not reset its stability to zero. It computes post-lapse stability as $S'_f = w_{11} \cdot D^{-w_{12}} \cdot ((S+1)^{w_{13}} - 1) \cdot e^{w_{14}(1-R)}$, preserving a significant fraction of your historical memory foundation.

No Punitive Resets

Cards with months of accumulated stability recover their long intervals in just a few successful reviews following a lapse.

Why Openness Matters

Every weight, every formula, and the parameter-optimization code are published openly at github.com/open-spaced-repetition under an open license. FSRS is available natively in Anki 23.10+. The project's stated design goal is to reach your target retention with fewer reviews than legacy SM-2 scheduling — a claim you can audit in the public repository and its evaluation notebooks, not something you must take on faith from any single company, including ours.

Verify It Yourself

Read the FSRS wiki, the optimizer source, and community benchmark notebooks. We cite them because they are checkable.

Related Research & Deep Dives

Ready to forge fluency with FSRS-5?

Start with 1,600 authentic cloze sentences today in our free live app.

Launch Web App 2.0 →