Search...Search plugins and themes...
⌘K
Sign in
  • Get started
  • Download
  • Pricing
  • Enterprise
  • Account
  • Obsidian
  • Overview
  • Sync
  • Publish
  • Canvas
  • Mobile
  • Web Clipper
  • CLI
  • Learn
  • Help
  • Developers
  • Changelog
  • About
  • Roadmap
  • Blog
  • Resources
  • System status
  • License overview
  • Terms of service
  • Privacy policy
  • Security
  • Community
  • Plugins
  • Themes
  • Discord
  • Forum / 中文论坛
  • Merch store
  • Brand guidelines
Follow us
DiscordTwitterBlueskyThreadsMastodonYouTubeGitHub
© 2026 Obsidian

FSRS

evgene-kopylovevgene-kopylov445 downloads

Free Spaced Repetition Scheduler integration. Implements FSRS algorithm for spaced repetition flashcards directly in your notes.

Add to Obsidian
  • Overview
  • Scorecard
  • Updates19
  • 🇷🇺
  • 🇺🇸 <
  • 🇨🇳

Free Spaced Repetition Scheduler — a modern spaced repetition algorithm for Obsidian. The plugin turns your notes into FSRS-based flashcards for effective memorization.

pipeline status

📋 Table of Contents

[toc]

🚀 Features

  • 📊 FSRS Algorithm — more efficient than SM-2
  • 🎯 Retention Control — 70–97% target level
  • ⚡ High Performance — Rust/WASM for fast computations
  • 🔄 Dynamic Interface — auto-updating lists
  • 📱 Mobile Support — iOS(?), Android(✓)
  • 🎨 Flexible Configuration — filtering, sorting, customization
  • 📈 Statistics — track your progress

📦 Installation

Install from the community catalog (Settings → Community plugins → Browse → FSRS).

Beta versions via BRAT

  1. Install BRAT
  2. Add the repository: https://github.com/Evgene-Kopylov/fsrs_plugin

Installation Requirements

  • Obsidian v1.12.7 or higher
  • WebAssembly support (enabled by default)

Platform Support

Platform Status
Linux (x86_64) ✅
macOS ❔ (not tested)
Windows (x86_64) ✅
Android ✅
iOS ❔ (not tested)

🐌 Quick Start

  1. Create a card – open a note → run the command Add FSRS fields to file header (Ctrl/Cmd+P).
  2. Add a review button – use the command FSRS: Insert review button (Ctrl/Cmd+P), or insert a ```fsrs-review-button``` block manually, or enable auto-adding in settings.
  3. Insert a table – use the command Insert default fsrs-table (Ctrl/Cmd+P), or create a ```fsrs-table ...``` block manually.
  4. Start reviewing – open the table, hover over a file name, and click a rating.

A detailed step-by-step guide with screenshots: Usage Guide

📖 Usage

The fsrs-table Block (SQL-like Syntax)

The fsrs-table block uses SQL-like syntax to customize how cards are displayed.

Basic syntax:

```fsrs-table
SELECT field1, field2 as "Header", field3
ORDER BY field4 DESC
LIMIT 30
```

Available columns:

Field Description Notes
file card file name clickable link
reps number of repetitions completed
stability card stability (S) FSRS parameter
difficulty card difficulty (D) value from 0 to 10
retrievability retrievability (R) probability of correct recall
due next review date and time
state card state New, Learning, Review, Relearning
elapsed days since last review
scheduled days until next review

Block parameters:

  • SELECT — choose fields to display (required)
  • ORDER BY — sort by a specified field (ASC ascending, DESC descending)
  • LIMIT — limit the number of rows (0 uses the value from plugin settings)

Limitations:

  • No subqueries, JOIN, aggregations (COUNT, SUM, AVG), GROUP BY, UNION
  • WHERE supports only simple conditions: =, !=, <, >, <=, >=, ~ (regex), !~, AND, OR
  • The only function available is date_format(field, 'format')
  • Unknown field in SELECT, WHERE, ORDER BY — error with field name indicated
  • Column order in SELECT is preserved in the displayed table

More: How the SQL parser works

Examples:

  1. Urgent cards (by due date):
```fsrs-table
SELECT file as " ", r as "R",
       s as "S", d as "D",
       due as "Next review"
LIMIT 20
```
  1. All cards sorted by date:
```fsrs-table
SELECT *
ORDER BY due ASC
LIMIT 100
```

FSRS Parameters and Configuration

The plugin uses rs-fsrs — the official Rust FSRS implementation by the algorithm authors (L-M-Sherlock). Rationale:

  • rs-fsrs — maintained by the FSRS team, synced with the Python reference implementation, actively updated.
  • fsrs-rs — third-party implementation, long outdated, incompatible with current FSRS versions.

User-configurable (Settings → FSRS → Algorithm Parameters):

Parameter Default Description
request_retention 0.9 (90%) Target retention rate
maximum_interval 36500 days Maximum interval between reviews
enable_fuzz true Randomize intervals to counter card grouping

Not yet configurable:

  • w weights (17 parameters) — the core of FSRS, determining the forgetting curve. The plugin uses defaults optimized by FSRS authors on the Anki corpus (millions of reviews).
  • Parameter optimization on user statistics — not supported. Users cannot retrain weights on their responses. Planned for future versions.

Review Button in Notes fsrs-review-button

```fsrs-review-button
```

FSRS Card Format

FSRS cards are stored in the note's frontmatter under the reviews field:

---
reviews:
  - date: "2026-01-15T10:30:00Z"
    rating: 2
  - date: "2026-01-20T14:15:00Z"
    rating: 3
---

Fields of each review session:

  • date — date/time in ISO 8601
  • rating — 0 (Again), 1 (Hard), 2 (Good), or 3 (Easy)

Notes:

  • reviews can be [] for new cards
  • Each review adds a session to the array
  • FSRS calculates the next review date based on history
  • The plugin adds these fields automatically

🎮 Plugin Commands

Via Command Palette (Ctrl/Cmd+P)

  • FSRS: Add FSRS fields to file header
  • FSRS: Find cards to review
  • FSRS: Review current card
  • FSRS: Remove last card review
  • FSRS: Show review history
  • FSRS: Insert review button
  • FSRS: Insert default fsrs-table
  • FSRS: Show fsrs-table syntax help

Via the Status Bar

  • Button 🔄FSRS: at the bottom of the Obsidian window

⚙️ Settings

FSRS Algorithm Parameters

Setting Description Default
Request Retention Target retention level 0.9 (90%)
Maximum Interval Max interval (days) 36500 (~100 years)
Enable Interval Fuzz Randomize intervals (±5%) Enabled

Default Settings for New Cards

Setting Description Default
Initial Stability Initial stability 0.0
Initial Difficulty Initial difficulty for new cards 0.0

Display Settings

Setting Description Default
Auto Add Review Button Automatically add review button Disabled

Filter Settings

Setting Description Example
Ignore Patterns Ignore patterns .obsidian/, templates/

🧠 The FSRS Algorithm

FSRS is a modern spaced repetition algorithm by Jarrett Ye. Implements FSRS-5 (rs-fsrs v1.2.1). Compared to SM-2:

  • Learns memory patterns via machine learning
  • Adapts to your memory speed
  • Requires 20–30% fewer reviews for the same retention level
  • Handles breaks (weeks/months) much better

Key Concepts

  • Retrievability (R) — probability of successful recall
  • Stability (S) — time it takes for R to decay from 100% to 90%
  • Difficulty (D) — information difficulty (affects how stability grows)

The algorithm uses 21 parameters optimized on millions of reviews.

Read more: ABC of FSRS

🛠️ Development

Development happens on GitLab: gitlab.com/Evgene-Kopylov/FSRS-plugin. The GitHub repository is a mirror.

Tech Stack

  • Frontend: TypeScript, Obsidian API
  • Algorithm: Rust (compiled to WebAssembly)
  • Build: esbuild, wasm-pack
  • Testing: Rust (cargo test) + TypeScript (vitest)

Rust and TypeScript Responsibility Split

Principle: Rust is the computation core, TypeScript is a thin wrapper for the Obsidian API.

Release Pipeline

The project uses GitLab CI/CD for automated build, test, and release:

Building from Source

Build Requirements

  • Node.js 18+
  • npm
  • Rust (with wasm32-unknown-unknown target)
  • wasm-pack
  • binaryen (wasm-opt, installed via npm install)
git clone https://gitlab.com/Evgene-Kopylov/FSRS-plugin.git
cd FSRS-plugin
npm install
npm run build

# Install plugin in vault
ln -s "$PWD" /path/to/vault/.obsidian/plugins/fsrs

# Development (optional)
npm run dev

WASM Integration

The plugin uses Rust/WASM for FSRS computations:

  • WASM binary is embedded into the plugin via base64
  • No network requests — everything runs locally
  • High performance — native-level computation

Read more: WASM Integration

📄 License

This plugin is licensed under LGPLv3.

LGPL permits:

  • Use in proprietary software
  • Requires modified library source code to be open

Main Rights

  • ✅ Use (free, including commercial use)
  • ✅ Study (access to source code)
  • ✅ Distribute
  • ✅ Improve

Requirements

  • Library modifications must remain under LGPLv3
  • Dynamic linking is allowed without disclosing application code
  • Maintain copyright notices
  • Provide source code when distributing modifications

For Obsidian Users

  • Free to use for personal/commercial purposes
  • Derivative plugins must be under LGPLv3
  • Modifications to Rust WASM components must be under LGPLv3

Full text: LICENSE

🙏 Acknowledgements

  • Jarrett Ye (叶峻峣) — author of the FSRS algorithm
  • Obsidian Community — inspiration and support
  • Rust Community — WASM tooling
  • DeepSeek — a powerful and convenient development tool (code, refactoring, localization)
  • All contributors — improvements and bug reports

📚 Additional Resources

  • Official FSRS Documentation
  • Obsidian Forum Discussion
  • Issues & Feature Requests
  • FSRS Table Usage Guide
93%
HealthExcellent
ReviewSatisfactory
About
Turn your notes into FSRS-based flashcards and schedule reviews using a modern spaced-repetition algorithm. Set retention targets, track progress with built-in statistics, and review via customizable SQL-like tables powered by a fast Rust/WASM engine with mobile support.
FlashcardsReviewTables
Details
Current version
0.16.1
Last updated
Yesterday
Created
Last month
Updates
19 releases
Downloads
445
Compatible with
Obsidian 1.12.7+
Platforms
Desktop, Mobile
License
OTHER
Report bugRequest featureReport plugin
Author
evgene-kopylovevgene-kopylov
GitHubevgene-kopylov
  1. Community
  2. Plugins
  3. Flashcards
  4. FSRS

Related plugins

Review

Add a link to the current note to a daily note on a future date (or a past date, you time traveller).

Repeat

Review notes using periodic or spaced repetition.

LearnKit

A native study system for your Obsidian vault. LearnKit turns notes into durable knowledge with flashcards, spaced repetition, tests, and more.

Recall

A flexible and configurable spaced repetition plugin with multiple algorithms to choose from.

QueryDash

Add new views and enhanced features for bases. Inspired by Dataview and bases, this includes search, sorting, and pagination functionalities similar to Notion.

Advanced Tables

Improved table navigation, formatting, and manipulation.

Spaced Repetition

Fight the forgetting curve by reviewing flashcards & entire notes.

Datacore

An even faster reactive query engine for the data obsessed.

Super Simple Time Tracker

Multi-purpose time trackers for your notes.

Sheet Plus

Create Excel-like spreadsheets and easily embed them in Markdown.