How the SM-2 algorithm works

7 min read·Updated

SM-2 is a spaced repetition scheduling algorithm published by Piotr Woźniak for SuperMemo in the late 1980s. Each card carries an ease factor, starting at 2.5, and an interval in days. When you grade a card, the ease factor moves up or down and the next interval is calculated by multiplying the current interval by the ease. Anki and most modern SRS apps use variants of it.

Key points

  • Every card stores an ease factor (default 2.50) and an interval in days.
  • Ease never falls below 1.30, which stops a difficult card from collapsing to daily review forever.
  • The first two successful intervals are fixed — commonly 1 day then 6 days — after which interval × ease takes over.
  • A failed card resets its interval and loses ease, so repeated failure makes a card appear more often and grow more slowly.

Where it came from

SM-2 was developed by Piotr Woźniak as part of SuperMemo, and published in 1987. It was not the first spaced repetition scheme — paper-based systems such as the Leitner box predate it by decades — but it was the first widely adopted algorithm to adapt intervals per card based on how the learner performed on that specific item.

Its influence is hard to overstate. Anki, Mnemosyne and a long list of successors all shipped SM-2 or a close variant, and for most people "the spaced repetition algorithm" means SM-2 even when they have never heard the name.

The two numbers on every card

SM-2 keeps very little state. Each card has an ease factor — a multiplier representing how easy that card is for you, starting at 2.5 — and an interval, the number of days until it is next due. A repetition count tracks how many times in a row you have passed it.

That is the whole model. There is no record of your response times, no global difficulty estimate, no model of your memory as a whole. Its power comes from applying a simple adjustment consistently, thousands of times.

What each grade does

Anki-style implementations expose four grades. The exact constants below are the ones Language Flash uses, and they are the conventional SM-2 variant values — you can read them in the scheduler source, and they are covered by tests so they cannot drift.

GradeEase changeNew intervalRepetitions
Again−0.20 (floor 1.30)Reset to 0; card returns in 10 minutesReset to 0
Hard−0.15 (floor 1.30)1 day if new, otherwise interval × 1.2+1
Goodunchanged1 day, then 6 days, then interval × ease+1
Easy+0.154 days, then 10 days, then interval × ease × 1.3+1

Working through an example

Take a new card with the default ease of 2.50 and answer Good each time.

The first review schedules it 1 day out. The second, 6 days. The third multiplies: 6 × 2.50 = 15 days. The fourth: 15 × 2.50 ≈ 38 days. The fifth: roughly 94 days. By the sixth successful review the card is over eight months out, and it has cost you six reviews in total.

Now suppose you fail it at the 38-day mark. The ease drops from 2.50 to 2.30, the interval resets to zero, and the card comes back in ten minutes. Next time it passes, it starts the ladder again — but with a permanently lower ease, so it will grow more slowly than a card you have never failed. That is the algorithm learning that this particular card is hard for you.

Why the 1.30 floor exists

Without a floor, a card you keep failing would drive its ease toward zero and become due constantly, crowding out everything else. The 1.30 minimum means even your worst card still grows its interval by 30% per successful review.

In practice, a card that has bottomed out at 1.30 is telling you something the algorithm cannot fix: the card is badly written, tests more than one thing, or is confusable with another card. The usual remedy is to rewrite or delete it rather than keep grinding.

SM-2 versus FSRS

SM-2 is nearly forty years old and its limits are well understood. It ignores how long you took to answer, treats all lapses alike, and its constants are hand-tuned rather than fitted to data.

FSRS — the Free Spaced Repetition Scheduler — is the leading modern alternative, and is now built into Anki. It models memory with retrievability, stability and difficulty, and fits its parameters to your actual review history, which lets it hit a retention target you choose. For large mature decks it generally schedules fewer reviews for the same retention.

Language Flash uses SM-2. It is predictable, needs no review history to start working, and behaves identically on every device — which matters here, because the web app and the mobile app write to the same cards and must agree on what happens when you press a button. FSRS is on the list.

Frequently asked questions

Does Anki use SM-2?
Anki shipped an SM-2 variant for most of its history and it remains available. Recent versions include FSRS, which is now the recommended scheduler for most users. The four grades and the ease-factor concept people associate with Anki come from SM-2.
What is a good ease factor?
Cards start at 2.50. Anything sitting near the 1.30 floor is a signal that the card itself is the problem — usually too much on one side, or too similar to another card. Rewriting it works better than repeating it.
Why does my card come back in ten minutes after I press Again?
A failed card has effectively been forgotten, so it re-enters learning. The short delay gets you one successful retrieval in the same session before the card is scheduled in days again.
Can I see what interval each button will give me?
In Language Flash, yes — each of the four grade buttons prints the interval it would produce before you press it, so the schedule is never a surprise.