If you've used a flashcard app with spaced repetition in the last twenty years, there's a very good chance you've been using some variant of the algorithm Anki made famous. It's called SM-2, it was invented by Piotr Wozniak in 1987, and at its core it's surprisingly simple: three numbers per card, four buttons to press, and a small handful of rules. Understanding those rules turns the app from a black box into a tool you can actually steer.

Three numbers, one card

Every flashcard in the system has three attached values that do all the work.

The interval is the number of days until the next review. It starts at zero (the learning phase) and grows every time you remember the card successfully. A well-known fact might have an interval of four hundred days. A card you just added has an interval of zero.

The ease factor is a multiplier that controls how fast the interval grows. It starts at 2.5 for every new card, meaning "next interval = previous interval × 2.5 when you get it right." If a card proves consistently easy, the ease factor slowly creeps up. If it's consistently hard, the ease factor falls, which is the algorithm's way of saying "this one is stickier, slow down."

The due date is just the current date plus the interval. It's what tells the system whether a card should appear in today's queue.

That's the whole data model. Everything else is rules for what happens when you press a button.

The learning phase

When you first encounter a new card, the algorithm doesn't trust you yet. It has no evidence that the memory exists at all, so it keeps the interval at zero and hovers over the card with short review windows. Rate the card "Good" and you typically see it again in a day. Rate it "Again" and it bounces back almost immediately. The learning phase ends when you get the card right with enough confidence that the algorithm is willing to bet on a longer interval — usually one or two successful reviews in.

Once the card "graduates" from learning, the real scheduling kicks in.

What each button actually does

The four ratings are not just labels. Each one triggers a specific transformation of the interval and the ease factor.

Again is a reset. The algorithm assumes the memory never really formed, drops the card back to the learning phase (interval = 0), and pulls the ease factor down by 0.20. If this happens enough times to the same card, Anki eventually flags it as a "leech" — a persistent problem child that probably needs to be rewritten or split into simpler cards rather than just failed into the ground.

Hard is a slow lane. The new interval is the previous interval multiplied by 1.2 (instead of by the ease factor), and the ease factor drops by 0.15. The card still moves forward, but much more cautiously. "Hard" is the rating that catches subtle struggles before they turn into outright failures, which is exactly what you want.

Good is the default. The new interval is the previous interval multiplied by the current ease factor, and the ease factor stays exactly where it is. If a card had an interval of 30 days and an ease factor of 2.5, a "Good" rating moves it to 75 days. This rating should cover most of your reviews — it's what "I remembered, roughly as expected" looks like.

Easy is a fast-forward button. The new interval is previous × ease factor × 1.3, and the ease factor gets a 0.15 bump. That extra 1.3× is a strong push forward — a card that would have moved to 75 days on "Good" jumps to nearly 100 on "Easy" and gets a steeper curve from then on. Save this for cards that are genuinely trivial; using it by habit will starve you of reviews you actually needed.

The ease factor safety rails

Left alone, the ease factor would be free to drift from 2.5 in either direction forever. In practice, Anki (and Memoria) clamp it between 1.3 and 2.5. The floor is there because any lower and intervals barely grow at all — the card becomes stuck in a short review loop forever, wasting your time. The ceiling prevents a string of "Easy" ratings from blowing a card's interval out to absurd lengths on flimsy evidence.

If you find a card's ease factor scraping the floor, that's the algorithm telling you the card is broken, not that you are. The right response is to rewrite it — split it into smaller cards, clarify the prompt, add missing context — not to grind harder. A leech is an invitation to fix the card, not to try again with more willpower.

An example review, step by step

Imagine a card about the capital of Peru. You created it yesterday, answered "Good" once, and it graduated with an interval of one day. Today it's due, and you remember "Lima" without effort. You press Good. The math is: new interval = 1 × 2.5 = 2.5, rounded to 3 days. Ease factor stays at 2.5.

Three days later you see it again, remember it instantly. Easy this time. New interval = 3 × 2.5 × 1.3 = 9.75, rounded to 10 days. Ease factor climbs to 2.65.

Ten days later, the name escapes you for a second before you find it. Hard. New interval = 10 × 1.2 = 12 days. Ease factor drops to 2.50.

Twelve days later, you draw a complete blank. Again. Interval resets to 0, ease factor drops to 2.30, and the card re-enters the learning phase.

Reading those four reviews back, you can see what the algorithm is doing: it's doing bookkeeping. Stable memories get long leashes, shaky ones get short ones, and your review time is always spent on the cards that actually need it.

Why honest ratings matter more than anything

The whole system depends on one assumption: that your rating accurately describes what just happened in your head. If you habitually over-rate — pressing "Good" on cards you actually guessed — the intervals grow faster than your memory can support, and you silently accumulate cards you've "mastered" that you'll completely forget six months later. If you habitually under-rate — pressing "Hard" on cards you knew cleanly — the intervals shrink, your daily queue bloats, and the whole point of spacing gets defeated.

Most rating drift is unintentional. People press "Good" when they mean "Easy" because "Good" is the middle button and feels safe. They press "Hard" when they mean "Good" because they want to feel like they're working hard. Becoming aware of these micro-habits and correcting them is probably the single biggest lever for better retention with the same amount of review time.

Beyond SM-2: the FSRS layer

SM-2 is elegant and battle-tested, but it's also over thirty years old and makes some assumptions that newer research has picked apart. Most notably, it treats every card's memory as a single number (the interval) and ignores the fact that a card you answered "Good" with confidence is in a very different state than one you answered "Good" while sweating.

Modern systems like FSRS (Free Spaced Repetition Scheduler) model memory with three parameters per card: stability (how slowly the memory decays), retrievability (the current probability you'll remember it), and difficulty (how hard the card is for you personally). This gives the scheduler a much richer picture of what's going on. It can schedule more aggressively on stable memories and more gently on fragile ones, instead of treating every card with the same blunt interval math.

Memoria runs SM-2 on its flashcards and layers an FSRS-style stability model on top for the broader memory queue — notes, reading items, and reflections alongside cards. The ratings you give still use the familiar Again/Hard/Good/Easy vocabulary, but the scheduling under the hood is doing more work than classic Anki, especially as your collection grows beyond a few hundred cards.

The bottom line

You don't need to love math to use SRS well. You just need to rate honestly, trust the intervals you're given, and fix broken cards instead of failing them endlessly. The algorithm handles the rest — and over months, it quietly builds a body of knowledge that would have taken you ten times the effort to maintain by hand.

The single most important habit you can build is treating each rating as a truthful self-report, not a score. The algorithm is not grading you. It's asking one question — "how did that feel?" — and using the answer to figure out when to ask you again.