FSRS vs SM-2 in 2026: Which Spaced Repetition Algorithm Helps You Remember More?
A flashcards app can feel smart for about a week. Then the easy cards start coming back too often, the hard ones disappear for weird stretches, and the whole thing starts feeling like admin instead of learning.
That is usually not a design problem.
It is a scheduler problem.
For years, the default answer in this category was some flavor of SM-2. It was simple, well known, and good enough to prove that spaced repetition works.
I do not think SM-2 is bad.
I think it is old.
That is why the more useful question in 2026 is not "does spaced repetition work?" It obviously does. The question is whether your flashcards app uses a scheduler that still deserves to be the default.
Why SM-2 lasted this long
SM-2 earned its place.
It is simple enough to understand, simple enough to implement, and famous enough that a lot of flashcards products inherited it without needing to rethink much. For a long time, that was enough.
And to be fair, it still works better than random review timing or fixed intervals.
The problem is that "better than random" is not a very high standard for a serious learning tool.
If a product is built around the idea that the exact timing of a card matters, then the scheduler is not some backend detail. It is the product.
What FSRS changes
FSRS takes the same basic goal and handles it with a better memory model.
Instead of leaning on a rougher ease-style approach, it tracks things like:
- stability
- difficulty
- review history
- target retention
That gives the scheduler more context about what is actually happening with the card.
In practical terms, that usually means:
- cards you know well stop wasting your time
- cards you do not know well get adjusted more sensibly
- the review queue feels less arbitrary
That is the part learners notice, even if they never want to read a single formula.
The difference you actually feel
Most people do not compare FSRS vs SM-2 by looking at equations.
They feel it after a couple of weeks.
With a weaker scheduler, easy cards keep showing up often enough to become annoying. Hard cards come back at awkward times. The queue starts feeling slightly off all the time, which is a very efficient way to make daily review less pleasant.
That friction matters more than people admit.
Flashcards are a habit product. If the review flow feels heavier than it should, you do not just lose efficiency. You start wanting to open the app less.
That is why this is not a niche implementation detail for study nerds. It changes whether the product feels worth returning to tomorrow.
Where FSRS is stronger
For most serious learners, FSRS is better at the things that actually matter:
- keeping review workload under control
- aiming for a specific retention target
- adjusting more realistically to recall difficulty
- avoiding extra repetitions on cards you already know
This is also where a lot of modern Anki FSRS interest comes from. People are not switching because the acronym is new. They are switching because the scheduling feels better once the queue gets large enough for bad timing to become obvious.
The one reason SM-2 still survives
SM-2 is easier to explain.
If you are building a tiny prototype, teaching the concept of spaced repetition, or making a very lightweight flashcards toy, simpler logic has a real appeal.
That is a reasonable argument for keeping it around in simple systems.
It is not a very strong argument for shipping it as the long-term default in a serious flashcards app if a better scheduler is available.
The boring implementation details matter more than the acronym
This is the part comparison posts often skip.
Saying "we use FSRS" does not automatically make a flashcards product good.
What matters is whether the implementation is actually careful.
In Flashcards, FSRS is treated as a product contract, not just a marketing label. The scheduler behavior is mirrored between the backend and the iOS app. The web app mirrors the scheduler data contract, but does not ship a third independent FSRS implementation. The system stores hidden memory state on each card, keeps explicit learning and relearning steps, supports workspace-level settings like desired retention, learning steps, relearning steps, maximum interval, and fuzz, and uses the real client review timestamp through reviewedAtClient during scheduling.
That sounds like backend detail, but it is exactly the kind of detail that decides whether two clients schedule the same card the same way or drift apart.
And once scheduling drifts, users feel it quickly even if they cannot explain why.
What learners should care about
If you are choosing a flashcards tool, I would care less about the feature checklist and more about one boring question:
When exactly does the card come back, and does that timing keep feeling sensible once I have hundreds or thousands of reviews behind me?
That is where the best flashcard algorithm actually matters.
Not in theory.
In workload.
In retention.
In whether the queue feels like help or punishment.
So which spaced repetition algorithm is better in 2026?
For most real study workflows, FSRS is the better spaced repetition algorithm.
SM-2 deserves credit for helping define the category. But if you are building a modern app, or choosing one, FSRS is the more defensible default now.
It gives the scheduler better information, better control, and better odds of matching review timing to actual memory instead of a rougher approximation.
That is the whole point of spaced repetition.
If you want an open source flashcards app that treats scheduling quality like a core product decision instead of a checkbox, Flashcards is built in that direction.