Plugin: Decks - Write flashcards using pure markdown and review using FSRS

Disclaimer

Is this project open source? Yes
Is this project completely free? Yes
Is this project vibe-coded beyond the author’s ability to comprehend how it works? No
Community Directory: link


Hi everyone. I’m the developer of Decks. I built this plugin to solve a specific problem: the friction of exporting or copying notes from Obsidian into a separate app like Anki. I wanted the markdown files to remain the absolute source of truth.

We recently crossed 11,000 downloads, and I’ve just released v1.10.0, which brings full internationalization to the plugin.

Here is a quick overview of how it works:

Zero-syntax parsing Tag any file with #decks. The plugin automatically reads the markdown you already write:

Headers & Paragraphs: Every heading becomes the front of a card, and the paragraph below becomes the back.

Tables: Two-column markdown tables are parsed as bulk flashcards.

Cloze Deletions: Standard ==highlights== automatically become fill-in-the-blank cards.

Image Occlusion: An image followed by a numbered list creates image occlusion cards.

FSRS and local optimization Decks runs entirely on the FSRS algorithm rather than SM-2. Once you hit around 100 reviews, you can run the built-in optimizer. It trains the 21 FSRS weights directly against your local review history to match your specific forgetting curve. Everything happens client-side with no servers or telemetry.

Conflict-free sync Syncing SQLite databases across iCloud or Dropbox usually leads to locked files or conflict copies. Decks solves this by writing your review events to a lightweight, append-only .deckssynclog text file. Your sync provider merges these text files in seconds, keeping your mobile and desktop reviews in sync without data loss.

Custom Decks based on filters and tags: Create custom decks based on a selection of flashcards or filter by tags/breadcrumbs and multitude of other filters. Great for cramming a specific set of cards.

What’s new in v1.10.0 The entire UI, including the complex FSRS configuration screens and the flashcard manager, has been fully localized. Decks now natively supports Chinese (Simplified and Traditional), Japanese, Spanish, French, German, Italian, Russian, Arabic, Turkish, Albanian, and Hindi.

You can download Decks directly from the Obsidian Community Plugins tab. I’m always looking to improve the parsing and the review UI, so I’d love to hear your feedback or answer any questions about the FSRS implementation.

::rocket:: Decks v2.1.0 is live! The Spaced Repetition Migrator is here. Hey everyone! For those of you who have been waiting to make the jump from the Spaced Repetition plugin over to an alternative, your time has finally come. I just shipped a built-in, one-click migrator that brings all your old cards and review history directly into Decks so you can pick up exactly where you left off. It is 100% non-destructive. It leaves your original files completely untouched and builds a fresh, clean Decks setup in a target folder of your choice. What it does:

  • Splits your notes: It extracts your legacy cards into a dedicated (Flashcards) file and rewrites your original note into beautiful, readable prose (de-sugaring all those old :: and == tags into plain text and removing spaced repetition state text).
  • Smart formatting: Single-line cards are automatically converted into clean markdown tables, and multi-line cards are turned into headers.
  • Keeps your progress: It reads your old <!--SR:--> metadata and translates your entire review history directly into FSRS-6. No starting from scratch!
  • Cross-linked: Your new readable notes and flashcard files are automatically linked together via frontmatter so you never lose the context.
  • Migrates SM-2 to FSRS6: Your reviews in SM-2 are migrated in the modern FSRS6 algorithm.

How to use it: Just click the new ::package:: cube icon in the Decks panel toolbar, or run the Migrate from Spaced Repetition plugin command in the command palette. Check out the full release notes for all the under-the-hood details. Grab the update, run the migrator, and let me know how it goes! ::hot_beverage::::brain:: https://github.com/dscherdi/decks/releases/tag/2.1.0

Decks 2.2.0 — Templates! Tag a table, and every row renders through a card you design once — HTML/CSS or Markdown with {{column}} placeholders, sandboxed and theme-aware. Fully opt-in, existing decks unaffected. ::open_book:: decks/docs/TEMPLATES.md at main · dscherdi/decks · GitHub · ::down_arrow:: Release 2.2.0 · dscherdi/decks · GitHub

::framed_picture:: Decks 2.3.0 is out — interactive image occlusion! Run “Create image occlusion at cursor”, drag boxes onto any image, add Markdown/LaTeX answers (or leave blank to just hide a label), and review. Self-contained, percentage-based so it scales on any device, fully localized, and the classic numbered-list method still works. Enjoy! Release 2.3.0 · dscherdi/decks · GitHub

:tada: Decks 2.4.0 — Import from Anki

Coming from Anki? Now you can bring your whole collection into Obsidian — decks, cards, media, and review history come with you, and your cards keep going on FSRS-6 right where Anki left them.

Just export a .apkg from Anki (with media + scheduling info), hit the new Import from Anki button in the Decks panel (or run the command), pick a folder, and go. :sparkles:

What carries over

  • :package: Everything — basic, cloze (incl. cloze inside $…$ MathJax), multi-field/templated notes (auto-generated templates), and image occlusion
  • :loud_sound: Media + math — audio plays and images render in review (kept at their real size); LaTeX/MathJax and tags preserved
  • :stopwatch: Your schedule, not a reset — due dates, intervals, and full review history map to FSRS-6, so cards show up already due on the right day
  • :ring_buoy: Non-destructive — your Anki collection is never touched; re-importing just overwrites + refreshes
  • :zap: Built for big decks — huge, audio-heavy decks auto-split into capped files so they stay snappy to open, with a live progress bar the whole way
  • :earth_africa: Fully localized in 13 languages

Both legacy and modern (compressed) .apkg files are supported.

Update via Community Plugins, or grab it from the release page :point_down:
:pencil: Release notes: 2.4.0

Happy importing — feedback & bug reports welcome in the thread! :raised_hands: