Marco Pozzecco286 downloadsLocal-first spaced repetition with FSRS scheduling that never touches your notes. Better retention without note pollution.
The active knowledge layer for Obsidian.
FSRS-powered spaced repetition that keeps your notes pristine.
Mnemoloop is a local-first spaced repetition system built directly into Obsidian. Unlike plugins that embed flashcard syntax into your source notes, Mnemoloop stores every flashcard as its own Markdown file: portable, git-friendly, and completely isolated from your thinking space. It pairs FSRS scheduling with a dashboard for heatmaps, deck trees, and retention analytics, so you review more in less time without leaving Obsidian.
Your notes stay pristine. Your retention improves. Your workflow never leaves Obsidian. Start remembering more, reviewing less.
Every flashcard is a standalone Markdown file in a dedicated directory, linked back to its source note via YAML frontmatter. Your thinking space remains exactly as you designed it—no !! or ?? markers polluting your carefully organized literature reviews, course notes or research documents.
Mnemoloop brings native FSRS scheduling into Obsidian, the same scientifically validated algorithm powering modern Anki. Better retention, fewer reviews, no context switching.
Swipe to rate. Tap to flip. Responsive layouts. Mnemoloop works as well on your phone as on your desktop, natively inside Obsidian Mobile.
Dual-source truth: a fast JSON index for queries, plus human-readable YAML frontmatter on every card for transparency and recovery. Even if the index is corrupted, all your SRS data lives in Markdown and can rebuild everything. Error boundaries ensure the plugin never brings down Obsidian.
| Feature | Description |
|---|---|
| 🧠 FSRS Scheduling | Scientifically validated spaced repetition algorithm for better retention with fewer reviews |
| 📄 1 File = 1 Flashcard | Each card is a standalone Markdown file—portable, version-controllable, never touches source notes |
| 📊 Learning Dashboard | Heatmaps, deck tree, daily goals, and retention rates |
| 🔒 Local-First & Private | Core features work fully offline. No telemetry. No data mining. Your knowledge belongs to you. |
| 🏗️ Self-Healing Data | JSON index + YAML dual-source truth with corruption recovery |
| ⚡ High Performance | Lazy card loading, debounced vault watching, and 50,000-card performance targets |
| 📈 Learning Analytics | Track retention, forecast, and cumulative progress over time |
| 📱 Mobile Touch UI | Swipe left/right to rate, tap to flip: native feel inside Obsidian Mobile |
| Feature | Description |
|---|---|
| 🤖 AI-Powered Flashcard Generation | AI generates flashcards from source notes, keeping your knowledge base up-to-date (paid feature) |
| 🔔 Stale Detection | Source note edits automatically flag linked flashcards as STALE |
Creating a card is modal-driven:
Ctrl/Cmd + P) and run Create flashcard to open the flashcard form;The card is saved as its own Markdown file in your flashcards directory and opened in the editor.
Open the Command Palette and run "Open dashboard" to see your learning stats and start a review session.
During review:
Organize flashcards into decks using YAML frontmatter:
---
decks:
- Maths::Linear algebra
- CS::Algorithms
---
A card can belong to multiple decks — in the flashcard form, enter them as a comma-separated list (e.g. Maths::Linear algebra, CS::Algorithms). Use :: for nested decks. Cards without a deck appear under Uncategorized in the deck tree.
Each flashcard is a Markdown file with YAML frontmatter:
---
uuid: 550e8400-e29b-41d4-a716-446655440000
source: '[[Biology/Cell biology.md]]'
status: ACTIVE
decks:
- Biology::Cell structure
card_type: basic
stability: 4.5
difficulty: 3.2
elapsed_days: 3
scheduled_days: 5
learning_steps: 1
reps: 4
lapses: 0
state: Review
last_review: 2026-05-10T09:00:00Z
due: 2026-05-15T09:00:00Z
---
What is the powerhouse of the cell?
?
The mitochondrion.
The card_type field selects the card format (defaults to basic), and the ? delimiter separates question from answer (configurable in settings). All SRS metadata lives in YAML—transparent, editable, and portable.
Mnemoloop supports four card types. Pick one in the flashcard form, or set card_type in YAML when authoring cards by hand.
A question and an answer, separated by the marker (? by default). During review, flip the card to reveal the answer and rate it manually.
---
card_type: basic
---
What is the powerhouse of the cell?
?
The mitochondrion.
A question plus an ordered list of steps (at least two). During review the steps are shuffled — drag them back into the correct order (drag works with touch on mobile). The card is scored automatically based on the final order.
---
card_type: sequence
---
Arrange these steps in order.
?
- Receive the signal
- Transcribe the DNA
- Translate the mRNA
A question with multiple-choice options, where the correct option is marked with [x]. During review the options are shuffled and the card is scored automatically based on your selection.
---
card_type: quiz
---
What is the powerhouse of the cell?
?
- [ ] Nucleus
- [x] Mitochondrion
- [ ] Ribosome
Text with one or more deletions written as {{c1::answer}} (optionally {{c1::answer::hint}}). During review each deletion is revealed one at a time; rate the card manually.
---
card_type: cloze
---
The powerhouse of the cell is the {{c1::mitochondrion}}.
| Context | Command | Description |
|---|---|---|
| Palette | Open dashboard | Open the learning dashboard |
| Palette | Create flashcard | Open the flashcard form to create a new card |
| File menu | Create flashcard from file | Open the flashcard form pre-linked to the selected Markdown file |
yarn install
yarn dev # development with hot reload
yarn test # run the test suite
yarn lint # lint TypeScript and Svelte files
yarn build # production build
yarn format # format code with Prettier
For detailed architecture guidance, code patterns, and conventions, see AGENTS.md.
@/*)$props, $state, $effect)ts-fsrs for state-of-the-art spaced repetition schedulingMIT © 2026 Marco Pozzecco