SRS folders, sets, and settings
Use these records when a file should create study sets as well as decks. For new learning material, include the content and any wanted sets; omit schedules and review history so newly imported linked cards start as New. Full examples are illustrative settings, not recommended values for every learner.
The downloadable schemas count name lengths in Unicode code points without trimming; package validation uses UTF-16 code units after trimming. The current app accepts longer names and shortens names to 200 UTF-16 code units and field/tag labels to 100. See package limits for the separate schema, default package, and app limits.
SRS folders
Organize SRS study sets into folders. These folders belong to the SRS hierarchy; Home/review folders are a separate collection.
Folder location
srs/srs_folders/*.jsonl, for example srs/srs_folders/folders.jsonl.
Choose any .jsonl filename. Each physical line is one complete folder object; do not wrap the records in an array. You may split folders across several files. Omit this directory if all study sets belong at the SRS root.
Folder basic example
Save this line in srs/srs_folders/folders.jsonl:
Omitting parentId places this folder at the root of the SRS hierarchy.
Folder full example
Download the comprehensive example’s srs/srs_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 srs-folder-study is in the same linked file. The full set links to this child folder.
The root uses parentId: null; the child supplies the root’s explicit ID. Both preserve their creation and update timestamps.
Root folder
Nested folder
Folder fields
Extra properties are ignored; null for required fields is rejected. Timestamps use the shared timestamp rules. An empty parentId is not a root marker; use omission or null.
Folder relationships
parentId links to another explicitly identified record in this collection, never a Home/review folder. A study set joins a folder by setting its folderId to this folder's explicit id.
Every referenced parent must exist in this package and must supply its own id. A folder cannot be its own parent, and longer parent cycles are rejected. Parent records may appear before or after their children: package validation checks the complete folder collection.
Flashnerd imports allow six nested folder levels: the SRS root is level 0, folders occupy levels 1–6, and an SRS set may occupy level 7. A seventh folder is rejected even without a set inside it. This app limit is separate from the JSON Schema, which does not impose a folder-depth maximum.
Creating a folder does not create any study sets, decks, or cards.
Folder additional example: a nested folder
Add this line alongside the basic folder above:
An anonymous folder at the SRS root, which cannot be a parentId or set folderId target:
The resulting hierarchy is:
Folder schema
SRS-folder schema and complete package layout.
SRS sets
Create SRS study sets and link them to decks. A set stores its study settings and an ordered list of decks; the cards themselves remain in the content collection.
Set location
srs/srs_sets/*.jsonl, for example srs/srs_sets/daily.jsonl.
Use any .jsonl filename, with one complete set object per physical line and no surrounding array. Several sets may share a file. Omit this directory when importing content without SRS sets.
Set basic example
Save this line in srs/srs_sets/daily.jsonl:
This example requires the srs-folder-study record from SRS folders above and a deck-tokyo record in the same package. A minimal companion in content/decks/tokyo.jsonl is:
This creates an empty linked deck until you also add cards.
Set full example
Download the comprehensive example’s srs/srs_sets/00000.jsonl, or read its expanded records below. Each object occupies one physical line in the file; the formatting here is for reading.
This set links to the language deck and nested SRS folder in the full package. Its settings include every supported property. The linked file also contains set-dart, with custom weekday scheduling enabled. See complete shared settings for that variant.
Set fields
Extra properties are ignored; null for required fields is rejected. Timestamps follow the shared timestamp rules.
Omitting the entire settings property uses the full defaults in the tables below. settings: {} and partial maps preserve empty or omitted sections; Flashnerd fills missing values when converting them to app settings. See all SRS settings and defaults.
Set relationships
folderIdrefers to an explicitly identified SRS folder, not a Home/review folder. An empty string is not a root marker.- Each
deckIdsentry must identify an explicit deck in this package. A deck can be listed only once across all SRS sets, including within one list. deckIdsorder is the stored linked-deck order.settings.displayOrder.deckOrderModecontrols how new-card selection uses this order.- Schedules refer to this set through
setId. Each scheduled card must belong to one of the set's linked decks and must have an explicit card ID. - SRS presets are separate reusable settings. There is no
presetIdfield; put settings directly in this record to configure the imported set.
When importing new cards without schedules, the app initializes their linked SRS entries as New. Overriding existing records can retain existing progress; omitting progress is not a request to reset it. Including a set alone does not restore a review history.
Set additional example: an empty set at the SRS root
An anonymous empty set at the SRS root, which cannot be a schedule setId target:
This self-contained record needs no folders or decks:
To customize review buttons, daily limits, or learning steps, add the corresponding sections from the SRS settings reference inside settings.
Set schema
SRS-set schema, SRS settings schema, and complete package layout.
SRS settings
Configure the behavior of an SRS set or save reusable settings in an SRS preset. Both records use the same structured settings object.
Settings location and basic example
This is a nested object, not a separate archive file. Put it in the settings property of a set or preset:
The surrounding set or preset remains one JSON object per physical line in its .jsonl file. The set and preset pages contain complete, compact record examples.
Settings full example
This complete settings object comes from the full SRS preset. It shows every supported section and nested property, including all weekday arrays, every review category, and learning steps in minutes, hours, and days. Use it as the nested settings object of a set or preset; it is not a separate archive member.
Settings omission, defaults, and nulls
All keys within settings are optional. The supported top-level keys are version and the six section names below.
Flashnerd fills missing values when converting partial maps into its app settings. The tables below identify defaults for an entirely omitted settings property, matching the app's defaults; they are not instructions to copy every default into a hand-authored file. Specify a value when its exact behavior matters.
Extra properties are ignored at every settings level, including inside learning/relearning steps. Recognized properties retain their validation: numeric strings such as "10" are not numbers, and booleans must be true/false.
Settings fields and options
version
Integer, default 1. Use 1 for this settings format. A missing version uses 1; explicit null is rejected. The format checks the integer type rather than enforcing a particular version value.
cardDisplay
Flashnerd's card-display settings use thresholds from 1 through 9999. The format checks their integer types; use values in the app's range when authoring for Flashnerd.
reviewBehavior
These values match Flashnerd's persisted settings: camelCase button layouts and integer no-answer ratings. Import rejects the former snake_case layouts and rating names in settings; correct or regenerate archives that use them. Review-history rating continues to use again, hard, good, and easy. The two-button interface displays Again/Good; Flashnerd displays a configured 2 (Hard) as Again and 4 (Easy) as Good, while all four ratings are preserved under either layout.
dailyLimits
Every supplied weekday array must contain exactly seven integers, with Monday at index 0 and Sunday at index 6. Use nonnegative counts; the format checks the integer types and array length without imposing additional numeric ranges.
displayOrder
Categories are new, learning, relearning, review, and suspended. These use learning and relearning; schedule/search state strings use learn and relearn instead.
Put each category in exactly one group when authoring. Group order expresses priority; order inside a group does not prescribe the live review sequence. The format checks nested-array shape and enum values. Flashnerd normalizes duplicates, missing categories, and empty groups when loading app settings.
schedulingAlgorithm
Each step requires value (integer) and unit (min, hour, or day). Additional properties are ignored:
For Flashnerd, author whole retention percentages from 70 to 99, maximum intervals from 1 to 36500 days, one to five learning steps, and zero to five relearning steps. Step values should be positive. The format checks types and units without enforcing those app-level ranges or step-count limits. An empty relearning array is useful when no intermediate relearning step is wanted.
advanced
The format checks only that parametersCsv is a string; a successful schema check does not establish that custom weights are usable by the scheduler. Leave it empty unless supplying a known valid set of scheduler parameters. Extra advanced properties such as autoOptimize are ignored and have no effect.
Settings relationships
Settings contain no deck, card, folder, or preset IDs. For an SRS set, linked decks are declared in the set's sibling deckIds property. For an SRS preset, the settings remain reusable until applied by the app. Settings do not supply a card's schedule or review history.
Settings additional example: weekday limits and two priority groups
Use this as the value of a set or preset's settings property:
Compact the surrounding record onto one physical line before saving it in a .jsonl file. This formatted fragment is not a standalone package member.
Settings schema
SRS settings schema, wire enum reference, and file reference.