An Obsidian plugin for creating and reviewing content by means of the FSRS spaced repetition algorithm.
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
idshould 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:
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:
You can also right-click on a file, folder, or a selection of files and folders to review the content defined there.
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:
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.