SuperMemo algorithms
The SuperMemo algorithms are the review schedulers Piotr Woźniak has written for SuperMemo since 1985, from SM-0 on paper to SM-20 in 2026. Each version changed how review intervals are computed, moving from fixed formulas to memory models fitted to the learner's data.
In short
- Piotr Woźniak designed SM-0, a paper method, in 1985, and SM-2, the first computer version, in 1987. Every later SuperMemo release refined the algorithm.
- From 1989, SuperMemo learned from each user's results by adjusting a matrix of interval factors, instead of applying one fixed formula.
- Since SM-17 (2015), SuperMemo models each memory with two variables: stability and retrievability, an idea Woźniak and colleagues published in 1995.
- SM-2 is still the most copied version because it was published in full and is simple. Anki started from it, and FSRS builds on Woźniak's stability and retrievability model.
Who is Piotr Woźniak and what is SuperMemo?
Piotr Woźniak is a Polish researcher, born in 1962, who studied at Adam Mickiewicz University and Poznań University of Technology. He began working on spaced repetition in the 1980s after struggling to retain what he studied, and created SuperMemo, which he describes as the first computer program to use spaced repetition.[1][2]
SuperMemo is the software that runs his algorithms: version 1.0 ran on MS-DOS in December 1987, and SuperMemo for Windows is still developed today.[2] The algorithms are named SM-0, SM-2 and so on, usually after the SuperMemo version that introduced them. Woźniak's own writing is the main source for their history, so the dates below are his.
How did the SuperMemo algorithm change from SM-0 to SM-20?
The SuperMemo algorithm went through about a dozen major versions, from a fixed paper schedule in 1985 to a model of memory fitted by machine learning in 2026.[3]
| Algorithm | Year | SuperMemo version | Main change |
|---|---|---|---|
| SM-0 | 1985 | Paper and pencil | Fixed intervals for pages of 20–40 items |
| SM-2 | 1987 | SuperMemo 1.0–3.0 | Ease factor per item, first computer version |
| SM-4 | 1989 | SuperMemo 4 | Matrix of optimum intervals that adapts to results |
| SM-5 | 1989 | SuperMemo 5 | Matrix of optimal factors instead of intervals |
| SM-6 | 1991 | SuperMemo 6 | Optimal factors derived from forgetting curves |
| SM-8 | 1995 | SuperMemo 8 | Faster adaptation, using data from SuperMemo 6 and 7 users |
| SM-11 | 2002 | SuperMemo 11 (SuperMemo 2002) | Handles reviews done late or early |
| SM-15 | 2011 | SuperMemo 15 | Handles delays of up to 15 years |
| SM-17 | 2015 | SuperMemo 17 | First algorithm built entirely on stability and retrievability |
| SM-18 | 2019 | SuperMemo 18 | Better stabilization function and item difficulty |
| SM-19 | 2024 | SuperMemo 19 | Better estimate of stability after a lapse |
| SM-20 | 2026 | SuperMemo 20 | All parameters fitted by machine learning |
Years are those of Woźniak's algorithm history.[3] Some software releases came out at a different time: SuperMemo 8 was released in 1997 and SuperMemo 17 in 2016, for example.[2]
What were SM-0 and SM-2?
SM-0 was a paper method that Woźniak began using on 25 August 1985, after three years of experiments on his own learning.[4] He grouped questions into pages of 20 to 40 items and reviewed each page after 1, 7, 16 and 35 days, then doubled the interval each time. Forgotten items were copied onto a new page and started again.[4]
SM-2 moved the method to a computer in 1987 and scheduled each item separately.[5] Each item has an ease factor (E-Factor) starting at 2.5: after intervals of 1 and 6 days, the next interval is the previous one multiplied by the ease factor, which goes up or down with each 0–5 grade. For the full rules and a worked example, see the SM-2 algorithm.
What is the matrix of optimal factors?
The matrix of optimal factors is a table of interval multipliers that SuperMemo adjusts from each learner's grades, introduced with SM-5 in 1989. Each cell holds the factor for one repetition number and one difficulty level (E-Factor): the next interval is the previous one multiplied by that factor.[6] A good grade raises the factor and a poor one lowers it, so the schedule adapts to the learner instead of following the same formula for everyone.[6]
SM-4 had tried the same idea with a matrix of intervals. SM-6 (1991) went further by deriving the factors from forgetting curves, which show the share of items recalled as time passes, recorded for each cell. SM-8 (1995) made the matrix adapt faster to a new user.[3]
What is the two-component model of memory?
The two-component model says that the state of a memory can be described by two variables: stability, how long the memory lasts without review, and retrievability, the probability of recalling it at a given moment. Woźniak, Gorzelańczyk and Murakowski published it in 1995, arguing for two independent components of long-term memory.[7] According to Woźniak, he first proposed the idea in his 1988 master's thesis.[2]
The model changed what the algorithm computes. Instead of tuning an interval factor, SM-17 estimates each item's stability and retrievability from its past reviews and picks the next interval from them. Woźniak later added item difficulty as a third variable.[3] From SM-17 to SM-20, the main change was how much of the model is fitted to the user's data: SM-20, according to Woźniak, is the first version based solely on the theoretical model, with every parameter computed by machine learning.[3] For background on the curve itself, see the forgetting curve.
Why is SM-2 still the most copied version?
SM-2 is the most copied SuperMemo algorithm because Woźniak published it in full and it fits in a few lines of code. He described it in his 1990 master's thesis and put that description online in 1998.[5]
Later versions are harder to reuse. Little detail has been published about the algorithms after SM-5, and SM-2 has been the most popular in other applications.[8] The current SuperMemo algorithm is proprietary and requires a licence, which rules it out for open-source apps such as Anki.[9]
How do Anki and FSRS relate to SuperMemo?
Anki started from SM-2, and FSRS, the newer algorithm Anki also offers, builds on Woźniak's stability and retrievability ideas.
- Anki. Anki's default scheduler is based on SM-2, with changes such as configurable learning steps and a single “fail” button.[9] See the Anki algorithm.
- FSRS. The Free Spaced Repetition Scheduler models each card with difficulty, stability and retrievability.[9] Its authors describe it as coming from MaiMemo's DHP model, a variant of the DSR (difficulty, stability, retrievability) model proposed by Woźniak.[10] Unlike SuperMemo's recent algorithms, FSRS is open source. See the FSRS algorithm.
For a side-by-side comparison of these schedulers, see the algorithms hub.
Sources
- Piotr Woźniak (researcher). Wikipedia. Retrieved 8 November 2026. https://en.wikipedia.org/wiki/Piotr_Woźniak_(researcher)
- Woźniak, P. History of SuperMemo. super-memory.com. https://www.super-memory.com/english/history.htm
- Woźniak, P. History of SuperMemo algorithm. supermemo.guru. https://supermemo.guru/wiki/History_of_SuperMemo_algorithm
- Woźniak, P. SuperMemo: First experiments (1982–1985). super-memory.com. https://super-memory.com/english/ol/beginning.htm
- Woźniak, P. (1990). SuperMemo 2: Algorithm. From Optimization of learning, master's thesis, Poznań University of Technology; web version 1998. https://super-memory.com/english/ol/sm2.htm
- Woźniak, P. (1990). Algorithm used in SuperMemo 5. From Optimization of learning, master's thesis, Poznań University of Technology. https://super-memory.com/english/ol/sm5.htm
- Woźniak, P. A., Gorzelańczyk, E. J., & Murakowski, J. A. (1995). Two components of long-term memory. Acta Neurobiologiae Experimentalis, 55(4), 301–305. https://doi.org/10.55782/ane-1995-1090
- SuperMemo. Wikipedia. Retrieved 8 November 2026. https://en.wikipedia.org/wiki/SuperMemo
- Anki Manual. What spaced repetition algorithm does Anki use? https://docs.ankiweb.net/faqs/what-spaced-repetition-algorithm
- Open Spaced Repetition. Free Spaced Repetition Scheduler. GitHub. https://github.com/open-spaced-repetition/free-spaced-repetition-scheduler