SRS Algorithm: Comparison with Anki

Algorithm Overview

Our algorithm is a simplified variant of SuperMemo SM-2 (the foundation Anki is also built on). It uses a 4-point rating scale (Again/Hard/Good/Easy), a learning phase with fixed intervals, and an ease-factor-based review phase.

Core Implementation

See

DeckContext.tsx:320-334
for
calculateNextInterval()
and
DeckContext.tsx:220-294
for
updateCardProgress()
.

Design Philosophy

This app is built specifically for language learning, where the goal is not just correct recall but instant automaticity — the kind of reflex you need in a real conversation. This philosophy drives every design decision.

  • Hesitation = needs more practice. If you had to think, the word wouldn't have come in a conversation. "Good" (correct with difficulty) is treated as needing re-exposure, not as a pass.
  • Unified state model. Unlike Anki's learning/relearning/graduated stages, our algorithm uses one simple state. This is easier to understand and removes an unnecessary source of confusion for learners.
  • Stricter standard = more reviews. This is intentional. The tradeoff for building muscle memory is more frequent practice on cards that aren't yet automatic.

Comparison Table

AspectOur AlgorithmAnki
Ratings0=Again, 1=Hard, 2=Good, 3=Easy (same scale)0=Again, 1=Hard, 2=Good, 3=Easy
"Good" in reviewTreated as failure → 180sSuccess (interval grows, just less than Easy)
"Hard" in reviewTreated as failure → 90sInterval grows by 1.2x (no reset)
Learning steps5 fixed (10min→1hr→4hr→1d→3d)Configurable, default 2 (1min, 10min)
Ease on "Good"Decreases by 0.10No change
Ease on "Hard"Decreases by 0.12Decreases by 0.15
Ease on "Again"Decreases by 0.14Decreases by 0.20
Ease on "Easy"Increases by 0.10Increases by 0.15
Ease floor1.31.3
Failure of mature cardSingle fixed short interval (30s/90s/180s)Goes through learning steps again, then re-graduates
Interval fuzzingNoYes (prevents card clustering)
Customizable stepsNo (hardcoded)Yes

Strengths (given our goals)

  • Simple & predictable — easy to explain to users and debug
  • Strict standard for fluency — "Good" is not a pass, matching real-world language use
  • Aggressive re-exposure — any hesitation means you see the card again very soon, building automaticity faster
  • Generous initial ladder — 5 exposures in the first day builds strong initial memory before graduation
  • No state complexity — no distinction between learning/relearning/graduated; one unified state model

Tradeoffs vs Anki

These are not weaknesses — they are intentional tradeoffs for the language-learning goal. Whether they matter depends on what the user wants:

TradeoffHow it worksRationale
"Good" resets youAny non-perfect rating resets to sub-minute intervals, even for mature cardsIn a conversation, hesitation = fail. You need automaticity, not just recall.
No "Hard" middle groundBoth "Hard" and "Good" are treated as needing re-exposureThe distinction between "wrong" and "right with effort" doesn't matter in real-time speech.
Ease drifts down"Good" reduces ease, so consistent non-perfect performance shrinks intervalsThis is the mechanism that ensures non-automatic cards get the reps they need.
No graduated relearnOne short interval for failure, then back to normal schedulingSimpler model; rapid re-exposure is more important than a gentle ladder back up.
No interval fuzzingCards can cluster on the same dayAcceptable tradeoff for simplicity; the app limits total cards per session anyway.
No customizationLearning steps are hardcodedReduces complexity for the target audience (language learners, not power users).

When to use which

  • Use our algorithm if you're learning a language and want conversational automaticity, not just recognition. You accept more reviews in exchange for faster reflex building.
  • Use Anki if you want maximum efficiency per review, prefer fine-grained control, or are studying subjects where "correct with effort" is a meaningful success (e.g., medical school, trivia).