finds.dev← search

// the find

open-spaced-repetition/free-spaced-repetition-scheduler

★ 671 · MIT · updated Apr 2026

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.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →