Awesome
Awesome FSRS
A curated list of awesome FSRS implementations, papers and resources. Feel free to suggest new projects in Issues or PR directly.
Implementation
- Python
- Scheduler (v5): py-fsrs
- Scheduler (v5): rs-fsrs-python
- Optimizer: fsrs-optimizer
- Optimizer: fsrs-rs-python
- [Deprecated] Optimizer: fsrs-optimizer-tiny
- Rust
- Scheduler (v5): rs-fsrs
- Scheduler (v5) + Optimizer: fsrs-rs
- Run in browsers: fsrs-browser
- TypeScript
- Scheduler (v5): ts-fsrs
- Go
- Scheduler (v5): go-fsrs
- Java
- Scheduler (v5): rs-fsrs-java
- C
- Scheduler (v5): rs-fsrs-c
- Nodejs
- Scheduler (v5): rs-fsrs-nodejs
- Dart
- Scheduler (v4.5): dart-fsrs
- Swift
- Scheduler (v4.5): swift-fsrs
- Clojure/ClojureScript
- Scheduler (v4): cljc-fsrs
- Ruby
- Scheduler (v4): rb-fsrs
- Kotlin
- Scheduler (v4): android-fsrs
- Elixir
- Scheduler (v4): ex_fsrs
Application
Flashcard
Anki
Free and open source, content-agnostic flashcard application for Windows, Mac, Linux, iPhone, and Android. Supports text, images, audio, videos, and scientific markup (via LaTex). Offers free synchronization service using AnkiWeb, with community-shared add-ons and decks.
- FSRS available as an opt-in feature replacing the default SM-2 algorithm.
- Additionally, this add-on offers a variety of extra features, such as Postpone, Advance, Load Balancing and Easy Days.
Note-taking
RemNote
Multiplatform note-taking application with a simple and streamlined process of creating flashcards. Has an active community with student-made materials for exam preparation. Available for offline and online usage.
RemNote integrated FSRS-4.5 into its scheduling system in release 1.16.
Obsidian
A personal notes, journaling, knowledge base, and project management application that allows the user to easily visualize relationships between information in graph form. Connect your notes via hyperlinks and install many community plugins made for Obsidian.
FSRS is available as an extension for Obsidian: obsidian-spaced-repetition-recall.
SiYuan
SiYuan is a privacy-first, self-hosted, open source personal knowledge management system, written in TypeScript and Golang. It supports fine-grained block-level reference and markdown WYSIWYG.
SiYuan's uses FSRS-5: riff
TiddlyWiki
TiddlyWiki is a customizable single HTML file personal wiki for creating interlinked notes. Its open-source nature and plugin ecosystem make it adaptable for various uses, from project management to knowledge systems. With the FSRS plugin, TiddlyWiki can also be used as a flashcard app for learning and memorization.
FSRS is available as a fork of the Tidme plugin for TiddlyWiki: fsrs4tw
Others
Chessbook
Mobile and web chess study application that combines multiple resources from YouTube, Lichess, ChessBase, and books to create a custom personal chess repertoire.
Chessbook overhauled its spaced repetition system using FSRS-4.5.
WordVault
WordVault is a word study app for Scrabble/Boggle/other word games. It uses the Go FSRS library for scheduling words, which show up as scrambled letters for the user to solve. This should hopefully be significally more efficient than the Leitner cardbox system previously in use in some word study apps.
Related
Algorithm
FSRS
- Paper: A Stochastic Shortest Path Algorithm for Optimizing Spaced Repetition Scheduling | Proceedings of the 28th ACM SIGKDD Conference on Knowledge Discovery and Data Mining
- Paper: Optimizing Spaced Repetition Schedule by Capturing the Dynamics of Memory | IEEE Journals & Magazine | IEEE Xplore
- Dataset: open-spaced-repetition/FSRS-Anki-20k · Datasets at Hugging Face
- Benchmark: open-spaced-repetition/srs-benchmark: A benchmark for spaced repetition schedulers/algorithms (github.com)
Leitner System
Leitner sytem sorts flashcard into groups according to how well the learner knows each one in Leitner's learning box. The learners try to recall the answer written on a flashcard. If they succeed, the card is sent to the next box. If they fail, the card is sent back to the first box. In each successive box, the amount of time before the learner is required to revisit the cards increases. (More: Wikipedia)
SuperMemo algorithms
SuperMemo was the first software that used computer-based spaced repetition algorithms and pioneered the usage of machine learning to personalize each user's learning schedule.
- SM-0: The birthday of spaced repetition: July 31, 1985
- SM-2: Application of a computer to improve the results obtained in working with SuperMemo method
- SM-5: First fast-converging spaced repetition algorithm: Algorithm SM-5
- SM-17: Algorithm SM-17
ACT-R
DASH
- Paper: Probabilistic Models of Student Learning and Forgetting Public Deposited
- Paper: Memory Models for Spaced Repetition Systems
Duolingo's Half-Life Regression algorithm
An algorithm made particularly for second language acquisition. The HLR model marries psycholinguistic theory with modern machine learning techniques, estimating the "half-life" of words (and potentially any other item or fact) in a student's long-term memory.
- GitHub repository: duolingo/halflife-regression
- Paper: A Trainable Spaced Repetition Model for Language Learning