FSRS Algorithm Explained: The Science of Smarter Flashcards
On this page
FSRS (Free Spaced Repetition Scheduler) is a modern, open-source algorithm that decides when you should review each flashcard. In plain terms: instead of showing every card on a fixed schedule, FSRS builds a per-card model of your memory and picks the moment you're about to forget — not too early, not too late — as the next review date. It's the algorithm running underneath Budling's Learn mode, and it's also available in Anki as of version 23.10. This post goes one level deeper than our general explainer on spaced repetition — if you want the basics of why spacing beats cramming first, start there. Here, we're looking at the specific algorithm doing the scheduling.
TL;DR:
- FSRS tracks three per-card numbers — stability, difficulty, and retrievability — instead of SM-2's single "ease factor" multiplier applied the same way to every card.
- Retrievability is the number that decays continuously between reviews and answers "is now a good time to show this card again?"
- Reviewing too early wastes a study slot; reviewing too late costs a full relearn instead of a light refresh — FSRS is built to land the review right before that dip.
- Budling's Learn mode and Telegram bot share the same FSRS scheduling function, so a review updates the same card state regardless of where you studied.
Anchor fact: retrievability is FSRS's live estimate, at any moment, of the probability you'd successfully recall a card right now — it's the number the scheduler recalculates after every review to decide the next due date, not a fixed interval set once and left alone.
What came before FSRS
Before FSRS, the dominant approach in flashcard software was SM-2, the algorithm SuperMemo popularized in the late 1980s and the one Anki originally shipped with. SM-2 is a fixed-multiplier system: each time you recall a card correctly, its next interval gets multiplied by an "ease factor" — commonly starting around 2.5x — and that factor nudges up or down slightly based on how you rated the card.
The limitation isn't that SM-2 is unscientific — it was a genuine improvement over no spacing at all — it's that the growth curve is the same shape for everyone. A card you find genuinely hard and a card you find genuinely easy both get stretched by roughly the same kind of multiplier, adjusted only by a coarse ease factor. SM-2 doesn't model how quickly your memory for that specific fact is actually decaying — it approximates it with one number nudged up and down over time. For a lot of material that's good enough. For material with very different intrinsic difficulty (a word you already half-know vs. one you've never seen) it tends to either over-schedule easy cards or under-schedule hard ones.
How FSRS actually works, in plain terms
FSRS was built by the open-source open-spaced-repetition project specifically to address that gap, using a different starting point: instead of one ease factor, it tracks a small set of numbers per card and fits them to how memory research says forgetting actually behaves. Three concepts do the real work:
- Stability — roughly, how long a memory is expected to last before it decays back down to a review threshold. A card you've reviewed several times and keep getting right develops high stability, so it can go longer between reviews. A card you keep failing has low stability and comes back soon.
- Difficulty — how intrinsically hard a specific card seems to be for you, independent of how long it's been since you last saw it. Two cards can have identical review histories and still get different difficulty scores if one consistently takes more hints or slower recall.
- Retrievability — an estimate, at any given moment, of the probability you'd successfully recall that card right now. This is the number that decays continuously between reviews and effectively answers "is now a good time to show this card again?"
Rather than one multiplier applied uniformly, FSRS recalculates stability and difficulty after every single review, based on how that review actually went — then uses those two numbers to estimate retrievability and pick the next due date. We're not going to claim precision down to the exact formula here (the real math lives in the algorithm's published research and its open-source implementations) — the useful mental model is: FSRS tracks a live, per-card memory estimate instead of a single fixed growth rate.
Why this matters when you're actually studying
The practical payoff of modeling stability and difficulty separately, instead of one blended ease factor, is fewer wasted reviews in both directions:
- Too early wastes time — you're reviewing a card you already know solidly, when that study slot could've gone to something you're actually at risk of forgetting.
- Too late costs more than time — if a card's retrievability has already dropped, you don't get a light refresh, you get a full relearn, which is slower and more frustrating than a review that lands right before the dip.
Because FSRS estimates retrievability per card rather than applying one schedule to everything, it can push confidently-known cards out further than SM-2 typically would, while pulling genuinely shaky cards back sooner and more precisely — the goal is a review queue each day that's actually the set of cards you're close to forgetting, not a fixed rotation.
How Budling uses FSRS
Budling's Learn mode runs on ts-fsrs, the same open-source FSRS implementation referenced above, and it's the single scheduling path in the app — there's no separate legacy algorithm running alongside it. Every card stores its own stability, difficulty, review state (new, learning, review, or relearning), due date, and review/lapse counts, and those fields get updated after every rating.
When you finish rating a card, here's what actually feeds into the scheduler:
- Budling maps what happened to one of FSRS's four ratings — Again, Hard, Good, or Easy — which recalculates the card's stability and difficulty and sets its next due date.
- That rating isn't only the button you tap: Budling also factors in how long you took to answer relative to your own history on that card.
- If you used a hint, your rating gets capped down proportionally to how much help you needed — a full-word reveal can't score as an "Easy," even if you tap through it.
So the input to FSRS reflects the honest difficulty of the recall, not just a self-report.
The same FSRS scheduling function is shared by the web study flow and by Budling's Telegram bot, so a review you do through the bot updates the exact same card state as a review you do in the browser — there's one source of truth for when a card is due, regardless of where you studied it. Retrievability, the recall-probability estimate, also gets used elsewhere in the app: it's part of how Budling surfaces which words you're currently struggling with, separate from just showing due cards.
FSRS vs. Anki: same algorithm, different app
Anki added FSRS support in version 23.10, so if you've used recent Anki, the scheduling math under the hood is drawing on the same published research and the same open-source project as Budling's. That's worth being upfront about — FSRS isn't a Budling-exclusive advantage, it's open research that any spaced-repetition tool can adopt, and Anki has. See our full Budling vs. Anki comparison for how the two apps differ beyond scheduling.
Where the two apps genuinely diverge is everything around the algorithm: Anki's FSRS support is opt-in and configured through settings most casual users never touch, on top of an interface built for power users. Budling runs FSRS by default with no setup, alongside gamification (XP, a pixel pet that evolves as you study), a browser-based study flow, and Telegram reminders. The scheduling science is shared ground — the app built around it is the actual differentiator.
Is FSRS better than Anki's default algorithm?
If "Anki's default" means SM-2 (Anki's original algorithm, still the default in older setups or if FSRS isn't manually enabled), then yes — FSRS's per-card stability/difficulty modeling is a real improvement over a single fixed ease-factor multiplier, which is why the open-source Anki project adopted it as an option. If you're comparing FSRS to FSRS, though, Budling and current Anki are drawing on the same algorithm — the difference is in the app around it, not the scheduling math itself.
Do I need to understand FSRS to use it?
No. FSRS is designed to run invisibly — you rate cards Again, Hard, Good, or Easy (or in Budling's case, just answer honestly and let response time and hints do some of that work automatically) and the scheduling happens without any manual configuration. Understanding the concepts of stability, difficulty, and retrievability is useful if you're curious why a card came back when it did, but it's not required to get the benefit. The one thing that does matter on your end: rate honestly. FSRS can only schedule accurately if the signal it's getting reflects how the review actually went.
Try it yourself
The best way to feel the difference FSRS makes is to study a real deck with it. Sign up free and start a set from Budling's library — your reviews get scheduled by the same algorithm described here, no configuration needed, and your pixel pet levels up as you go.