// the find
open-spaced-repetition/free-spaced-repetition-scheduler
A spaced repetition algorithm based on DSR model
FSRS is a spaced repetition scheduling algorithm based on the DSR memory model (difficulty, stability, retrievability). It's a drop-in alternative to Anki's SM-2 algorithm, now the default scheduler in Anki itself. For anyone building a flashcard app or wanting to understand the math behind modern SRS, this is the reference spec.
The theoretical foundation is solid — grounding the algorithm in actual memory research (Wozniak's DSR model, MaiMemo's DHP variant) rather than heuristics. The ecosystem coverage is exceptional: implementations exist in TypeScript, Go, Python, Rust, Clojure, Dart, Ruby, Swift, and more, so you're not locked into one language. The 'flexible scheduling' design (review early or late without breaking the model) is a meaningful improvement over SM-2's rigid timing. The optimizer tooling (fsrs-optimizer, fsrs-rs) is separate, which is the right call — scheduling and parameter fitting are different concerns.
This repo is essentially just a README pointing at other repos — the actual algorithm lives in the wiki and the implementations; there's no canonical reference code here to read or test against. The math spec in the wiki is terse and assumes familiarity with memory research; someone new to SRS will struggle to understand why any given formula exists. The optimizer requires a decent volume of existing review history to work well, which is a cold-start problem the docs don't address honestly. 671 stars is low for something that's the default Anki scheduler — discoverability is clearly an issue.