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

Come Through

mntnomntno1k downloads

Drill yourself using spaced repetition.

Add to Obsidian
  • Overview
  • Scorecard
  • Updates15

An Obsidian plugin for creating and reviewing content by means of the FSRS spaced repetition algorithm.

Declaring review content

Each note can contain one or more sides of a card (or more generally, pages of a unit). The review content of a side of a certain card is confined within the heading section that has declared the side. Card sides are declared inside a code block↗ or in the frontmatter↗, with ct as the language/name (alt. comethrough or come-through).

In a code block, the first page is declared like this:

```ct
side: front
```

which in Live Preview will be rendered as:

Page declaration
ID: 1745575690288
Side: Front

The ID is automatically generated and is used to pair the front of a specific card with its back. For example, to pair the back to the front above, add the following to another heading section (that isn’t under the front’s heading):

```ct
id: 1745575690288
side: back
```

The id of this type of card must be unique across the vault, which allows for declaring parts of a certain card in different notes. The following note, for example, contains three sides: one complete card and one front side.

# Note 1

Text here is not part of a card.

## Question Card 1

```ct
side: front
id: card1
```

Contents of the front of `card1`.

## Section without a card

Text here is not part of a card.

## Answer Card 1

```ct
side: back
id: card1
```

Contents of the back of `card1`.

### This section is included

Since this section belongs to the same section that declares the 
back of `card`, it is also included as part of the back of `card1`.

## Question Card 2

```ct
side: front
id: card2
```

Contents of the front of `card2`.

The back side of card 2 is declared in another file:

# Note 2

## Section

### Answer Card 2

```ct
side: back
id: card2
```

When adding a declaration in the frontmatter, the whole note becomes one side:

---
ct:
  id: lc1jrjx1vm
  side: front
---

# Front

Contents of the front of `lc1jrjx1vm`.

[!NOTE] The card declaration format is plain YAML (same as Obsidian properties) so the YAML specification has to be adhered to. For example, there must be a space between the colon and the value.

[!IMPORTANT]

Once you start rating, the id should not be changed or it will lose its rating statistics and be treated as new review content.

Select Insert declaration in the Command palette↗ to insert these declarations without typing:

  • Insert code block declaration under cursor
  • Insert declaration in frontmatter

Reviewing

To review declared content, select Review in the ribbon↗ or the Command palette.

A modal opens, which lets you select All, Deck, Folder, File, or Tag for review:

  • All: All review content in the vault.
  • Deck: A specific deck.
  • Folder: Review content defined in the files of a specific folder.
  • File: Review content defined in a specific file.
  • Tag: Review content defined in the files with a specific property tag.

You can also right-click on a file, folder, or a selection of files and folders to review the content defined there.

Decks

To assign decks, select a deck from the dropdown that is shown in the rendered declaration when in Live Preview mode.

There is no need to create decks as you can group review content by folders, files, or tags as described above. For more granular grouping, however, you need to use decks. Each deck can also be assigned as a parent or child of another deck.

To create decks:

  • select the + button next to the rendered declaration when in Live Preview.
  • select Command palette → Decks. Here you can also assign parent decks.

Syncing

Syncing your vault across multiple devices can sometimes lead to conflicts, which may cause review statistics to be overwritten with older data. This can happen if you, e.g., rate on two or more devices while they are offline or before they have had a chance to sync. When the devices come online, the sync service may not be able to determine which version of the data is the correct one and will have to choose one version. To avoid this, the safest approach is to only make changes or rate on one device at a time.

However, as soon as changes are detected, a dialog is shown where you may accept or reject the change. Note that if you reject on one device, the next sync will cause the dialog to show on the other device(s), where you should then accept the change.

Roadmap

  • More and quicker ways to create content to review.
  • Scheduler settings.

More

  • See the release notes for more details.
  • See the tests for more examples.
HealthExcellent
ReviewSatisfactory
About
Create and review spaced‑repetition content using the FSRS algorithm.
FlashcardsReview
Details
Current version
0.9.0
Last updated
3 days ago
Created
2 years ago
Updates
15 releases
Downloads
1k
Compatible with
Obsidian 1.8.2+
Platforms
Desktop, Mobile
License
MIT
Report bugRequest featureReport plugin
Author
mntnomntno
github.com/mntno
GitHubmntno
  1. Community
  2. Plugins
  3. Flashcards
  4. Come Through

Related plugins

LearnKit

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

CBT Exam Simulator

A robust, offline-first CBT exam simulator using FlashQuiz format.

Review

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

Echo Recall

Memorize, Revise and Review your notes and paragraphs actively with spaced repetition and retrospective deadlines.

Repeat

Review notes using periodic or spaced repetition.

Feynman Learning

Learn concepts deeply using the Feynman Technique — AI-guided explanation, gap analysis, spaced repetition review, and Notion sync.

Spaced Repetition

Fight the forgetting curve by reviewing flashcards & entire notes.

Flashcards

Anki integration.

Yanki

Sync flashcards from a folder in your vault to Anki. Pure Markdown syntax. No fuss.

Journal Review

Review your daily notes on their anniversaries, like "what happened today last year".