Folder and tag records
Review folders organize decks; tags label cards and saved searches. Both are optional unless another record references them. SRS sets use a separate SRS folder hierarchy.
Review folders
Purpose and location
Review folders organize decks. Save records in content/review_folders/*.jsonl, for example content/review_folders/folders.jsonl. Any direct-child filename ending in .jsonl works; one complete object per line, with no enclosing array. Omit the directory if no deck needs a folder.
Basic example
A complete record for content/review_folders/folders.jsonl:
Full example
Copy the runnable content/review_folders/00000.jsonl, or read its expanded records below. Each object occupies one physical line in the file; the formatting here is for reading.
The parent folder-languages is in the same linked file. Keep it when copying this child, or remove parentId to make the folder a root.
The root uses parentId: null; the child supplies the root’s explicit ID. Both preserve their creation and update timestamps.
Root folder
Nested folder
Fields
Use the timestamp format. Extra properties are ignored.
Relationships and nesting
A deck selects this folder with folderId: "folder-languages". To nest a folder, give the parent an explicit ID and set parentId to that ID. Parents may appear in another file; folder order does not matter. Self-parenting and cycles are rejected. SRS folders form a separate hierarchy and cannot be parents here. A folder that omitted its own id cannot be a parentId or deck folderId target.
App imports allow six nested folder levels: the collection root is level 0, folders occupy levels 1–6, and a deck may occupy level 7. A seventh folder is rejected even without a deck inside it. The JSON Schema does not impose this folder-depth maximum; passing that check alone does not establish app compatibility.
Anonymous root folder, which cannot be referenced by another record:
Nested example, in addition to the basic parent above:
Tags
Purpose and location
Tags are labels that cards and saved searches can reference. Save content/tags/*.jsonl, for example content/tags/tags.jsonl. Any direct-child filename ending in .jsonl is accepted. Put one object per line, with no enclosing array; omit the directory if nothing references a tag.
Basic example
A complete record for content/tags/tags.jsonl:
Full example
Copy the runnable content/tags/00000.jsonl, or read its expanded records below. Each object occupies one physical line in the file; the formatting here is for reading.
The full package cards refer to this tag by tag-travel. The linked file also contains the other tags used by those cards.
Fields
label remains required. Extra properties are ignored. Tags do not use color, folder, or parent properties. See timestamp rules.
Add Card uses tag labels rather than restoring tag timestamps: it reuses existing catalog tags without changing their dates or creates new tags with creation and update dates set to import time.
Anonymous tag, which cannot appear in tagIds or selectedTagIds:
Relationships
A card selects tags with "tagIds":["tag-beginner"]; a search preset selects them with "selectedTagIds":["tag-beginner"]. These are object-property fragments, not complete records. The referenced tag must exist in this package and must supply its own id. The default schema limit is five tags on a card. App import keeps the first five distinct tags; author at most five to retain every selection.