evgene-kopylov445 downloadsFree Spaced Repetition Scheduler integration. Implements FSRS algorithm for spaced repetition flashcards directly in your notes.
Free Spaced Repetition Scheduler — a modern spaced repetition algorithm for Obsidian. The plugin turns your notes into FSRS-based flashcards for effective memorization.
[toc]
Install from the community catalog (Settings → Community plugins → Browse → FSRS).
https://github.com/Evgene-Kopylov/fsrs_plugin| Platform | Status |
|---|---|
| Linux (x86_64) | ✅ |
| macOS | ❔ (not tested) |
| Windows (x86_64) | ✅ |
| Android | ✅ |
| iOS | ❔ (not tested) |
Add FSRS fields to file header (Ctrl/Cmd+P).FSRS: Insert review button (Ctrl/Cmd+P), or insert a ```fsrs-review-button``` block manually, or enable auto-adding in settings.Insert default fsrs-table (Ctrl/Cmd+P), or create a ```fsrs-table ...``` block manually.A detailed step-by-step guide with screenshots: Usage Guide
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:
COUNT, SUM, AVG), GROUP BY, UNIONWHERE supports only simple conditions: =, !=, <, >, <=, >=, ~ (regex), !~, AND, ORdate_format(field, 'format')SELECT, WHERE, ORDER BY — error with field name indicatedSELECT is preserved in the displayed tableMore: How the SQL parser works
Examples:
```fsrs-table
SELECT file as " ", r as "R",
s as "S", d as "D",
due as "Next review"
LIMIT 20
```
```fsrs-table
SELECT *
ORDER BY due ASC
LIMIT 100
```
The plugin uses rs-fsrs — the official Rust FSRS implementation by the algorithm authors (L-M-Sherlock). Rationale:
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).fsrs-review-button```fsrs-review-button
```
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 8601rating — 0 (Again), 1 (Hard), 2 (Good), or 3 (Easy)Notes:
reviews can be [] for new cards🔄FSRS: at the bottom of the Obsidian window| 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 |
| Setting | Description | Default |
|---|---|---|
| Initial Stability | Initial stability | 0.0 |
| Initial Difficulty | Initial difficulty for new cards | 0.0 |
| Setting | Description | Default |
|---|---|---|
| Auto Add Review Button | Automatically add review button | Disabled |
| Setting | Description | Example |
|---|---|---|
| Ignore Patterns | Ignore patterns | .obsidian/, templates/ |
FSRS is a modern spaced repetition algorithm by Jarrett Ye. Implements FSRS-5 (rs-fsrs v1.2.1). Compared to SM-2:
The algorithm uses 21 parameters optimized on millions of reviews.
Read more: ABC of FSRS
Development happens on GitLab: gitlab.com/Evgene-Kopylov/FSRS-plugin. The GitHub repository is a mirror.
Principle: Rust is the computation core, TypeScript is a thin wrapper for the Obsidian API.
The project uses GitLab CI/CD for automated build, test, and release:
wasm32-unknown-unknown target)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
The plugin uses Rust/WASM for FSRS computations:
Read more: WASM Integration
This plugin is licensed under LGPLv3.
LGPL permits:
Full text: LICENSE