> For AI agents: the complete documentation index is available at https://docs.flashnerd.com/llms.txt, the full documentation bundle is available at https://docs.flashnerd.com/llms-full.txt.

# 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](https://docs.flashnerd.com/reference/flashnerd-format/package.md#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`:

```jsonl
{"id":"srs-folder-study","name":"Daily Study"}
```

Omitting `parentId` places this folder at the root of the SRS hierarchy.

### Folder full example

Download the comprehensive example’s <a href="https://docs.flashnerd.com/examples/flashnerd-format/full/srs/srs_folders/00000.jsonl" download>srs/srs_folders/00000.jsonl</a>, 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](https://docs.flashnerd.com/reference/flashnerd-format/srs.md#srs-sets) 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

```json
{
  "id": "srs-folder-study",
  "parentId": null,
  "name": "Study",
  "createdAt": "2026-03-01T09:00:00.000000Z",
  "updatedAt": "2026-03-02T09:00:00.000000Z"
}
```

#### Nested folder

```json
{
  "id": "srs-folder-languages",
  "parentId": "srs-folder-study",
  "name": "Language study",
  "createdAt": "2026-03-01T09:00:00.000000Z",
  "updatedAt": "2026-03-02T09:00:00.000000Z"
}
```

### Folder fields

| Key         | Required? | Value and behavior                                                                                                                                                                   |
| ----------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `id`        | No        | Nonempty string when supplied, unique among SRS folders. Omission creates a temporary source identity and always imports as a new folder. `null`, `""`, and non-strings are invalid. |
| `parentId`  | No        | ID of another SRS folder in this package. Omitted or `null` means an SRS root folder.                                                                                                |
| `name`      | Yes       | Nonblank display name. Default package validation allows 40 UTF-16 code units after trimming. Schema `maxLength` allows 40 Unicode code points without trimming.                     |
| `createdAt` | No        | Timestamp with a timezone when supplied. Omission and null mean unavailable metadata.                                                                                                |
| `updatedAt` | No        | Timestamp with a timezone when supplied. Omission and null mean unavailable metadata.                                                                                                |

Extra properties are ignored; `null` for required fields is rejected. Timestamps use the [shared timestamp rules](https://docs.flashnerd.com/reference/flashnerd-format/package.md#timestamps-and-calendar-dates). 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](https://docs.flashnerd.com/reference/flashnerd-format/folders-and-tags.md#review-folders). A [study set](https://docs.flashnerd.com/reference/flashnerd-format/srs.md#srs-sets) 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:

```jsonl
{"id":"srs-folder-japanese","parentId":"srs-folder-study","name":"Japanese","createdAt":"2026-01-01T00:00:00Z","updatedAt":"2026-01-01T00:00:00Z"}
```

An anonymous folder at the SRS root, which cannot be a `parentId` or set `folderId` target:

```jsonl
{"name":"Inbox"}
```

The resulting hierarchy is:

```text
SRS root
└── Daily Study
    └── Japanese
```

### Folder schema

<a href="https://docs.flashnerd.com/examples/flashnerd-format/schemas/srs_folder.schema.json" download>SRS-folder schema</a> and [complete package layout](https://docs.flashnerd.com/reference/flashnerd-format/package.md).

## 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`:

```jsonl
{"id":"set-daily","folderId":"srs-folder-study","name":"Daily Tokyo","settings":{"dailyLimits":{"newCardsPerDay":10}},"deckIds":["deck-tokyo"]}
```

This example requires the `srs-folder-study` record from [SRS folders](#srs-folders) above and a `deck-tokyo` record in the same package. A minimal companion in `content/decks/tokyo.jsonl` is:

```jsonl
{"id":"deck-tokyo","name":"Tokyo vocabulary","fields":[{"id":"term","name":"Term","side":"front","type":"text"},{"id":"definition","name":"Definition","side":"back","type":"text"}]}
```

This creates an empty linked deck until you also add [cards](https://docs.flashnerd.com/reference/flashnerd-format/cards.md).

### Set full example

Download the comprehensive example’s <a href="https://docs.flashnerd.com/examples/flashnerd-format/full/srs/srs_sets/00000.jsonl" download>srs/srs_sets/00000.jsonl</a>, 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](https://docs.flashnerd.com/reference/flashnerd-format/srs.md#srs-settings) for that variant.

```json
{
  "id": "set-travel",
  "folderId": "srs-folder-languages",
  "name": "Travel review",
  "createdAt": "2026-03-01T09:00:00.000000Z",
  "updatedAt": "2026-03-02T09:00:00.000000Z",
  "settings": {
    "version": 1,
    "cardDisplay": {
      "showTag": false,
      "showSrsState": true,
      "showStruggleStatus": true,
      "struggleThreshold": 6,
      "recoveryThreshold": 3
    },
    "reviewBehavior": {
      "maximumLoggedTime": 90,
      "reviewButtonDisplay": "twoButtons",
      "showElapsedTime": true,
      "autoAdvance": true,
      "timeBeforeShowingAnswer": 4,
      "timeBeforeNextCard": 2,
      "noAnswerRating": 2
    },
    "dailyLimits": {
      "maximumReviewsPerDay": 80,
      "newCardsPerDay": 8,
      "suspendedCardsPerDay": 2,
      "maximumReviewsCustomScheduling": false,
      "newCardsCustomScheduling": false,
      "newCardsIgnoreReviewLimit": true,
      "suspendedCardsCustomScheduling": false,
      "suspendedCardsIgnoreReviewLimit": true,
      "maximumReviewsPerWeekday": [
        80,
        80,
        80,
        80,
        80,
        120,
        120
      ],
      "newCardsPerWeekday": [
        8,
        8,
        8,
        8,
        8,
        12,
        12
      ],
      "suspendedCardsPerWeekday": [
        2,
        2,
        2,
        2,
        2,
        4,
        4
      ]
    },
    "displayOrder": {
      "cardPriorityGroups": [
        [
          "learning",
          "relearning"
        ],
        [
          "new",
          "review",
          "suspended"
        ]
      ],
      "deckOrderMode": "random"
    },
    "schedulingAlgorithm": {
      "desiredRetentionPercent": 92,
      "maximumIntervalDays": 365,
      "learningSteps": [
        {
          "value": 1,
          "unit": "min"
        },
        {
          "value": 1,
          "unit": "hour"
        },
        {
          "value": 1,
          "unit": "day"
        }
      ],
      "relearningSteps": [
        {
          "value": 10,
          "unit": "min"
        },
        {
          "value": 1,
          "unit": "hour"
        }
      ]
    },
    "advanced": {
      "parametersCsv": "0.212,1.2931,2.3065,8.2956,6.4133,0.8334,3.0194,0.001,1.8722,0.1666,0.796,1.4835,0.0614,0.2629,1.6483,0.6014,1.8729,0.5425,0.0912,0.0658,0.1542"
    }
  },
  "deckIds": [
    "deck-japanese-travel"
  ]
}
```

### Set fields

| Key         | Required? | Value and behavior                                                                                                                                                             |
| ----------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `id`        | No        | Nonempty string when supplied, unique among SRS sets. Omission creates a temporary source identity and always imports as a new set. `null`, `""`, and non-strings are invalid. |
| `folderId`  | No        | SRS folder ID. Omitted or `null` places the set at the SRS root.                                                                                                               |
| `name`      | Yes       | Nonblank display name. Default package validation allows 40 UTF-16 code units after trimming. Schema `maxLength` allows 40 Unicode code points without trimming.               |
| `createdAt` | No        | Timestamp with a timezone when supplied. Omission and null mean unavailable metadata.                                                                                          |
| `updatedAt` | No        | Timestamp with a timezone when supplied. Omission and null mean unavailable metadata.                                                                                          |
| `settings`  | No        | [SRS settings object](https://docs.flashnerd.com/reference/flashnerd-format/srs.md#srs-settings). Omission uses the defaults in the settings tables; `null` is rejected.       |
| `deckIds`   | No        | Ordered array of deck IDs present in this package. Omission uses `[]`; `null` is rejected.                                                                                     |

Extra properties are ignored; `null` for required fields is rejected. Timestamps follow the [shared timestamp rules](https://docs.flashnerd.com/reference/flashnerd-format/package.md#timestamps-and-calendar-dates).

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](https://docs.flashnerd.com/reference/flashnerd-format/srs.md#srs-settings).

### Set relationships

- `folderId` refers to [an explicitly identified SRS folder](https://docs.flashnerd.com/reference/flashnerd-format/srs.md#srs-folders), not a Home/review folder. An empty string is not a root marker.
- Each `deckIds` entry must identify an [explicit deck](https://docs.flashnerd.com/reference/flashnerd-format/decks.md) in this package. A deck can be listed only once across all SRS sets, including within one list.
- `deckIds` order is the stored linked-deck order. `settings.displayOrder.deckOrderMode` controls how new-card selection uses this order.
- [Schedules](https://docs.flashnerd.com/reference/flashnerd-format/progress-and-history.md#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](https://docs.flashnerd.com/reference/flashnerd-format/presets.md#srs-presets) are separate reusable settings. There is no `presetId` field; 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:

```jsonl
{"name":"Unfiled","settings":{},"deckIds":[]}
```

This self-contained record needs no folders or decks:

```jsonl
{"id":"set-empty","name":"Future study","createdAt":"2026-01-01T00:00:00Z","updatedAt":"2026-01-01T00:00:00Z","settings":{},"deckIds":[]}
```

To customize review buttons, daily limits, or learning steps, add the corresponding sections from the [SRS settings reference](https://docs.flashnerd.com/reference/flashnerd-format/srs.md#srs-settings) inside `settings`.

### Set schema

<a href="https://docs.flashnerd.com/examples/flashnerd-format/schemas/srs_set.schema.json" download>SRS-set schema</a>, <a href="https://docs.flashnerd.com/examples/flashnerd-format/schemas/srs_settings.schema.json" download>SRS settings schema</a>, and [complete package layout](https://docs.flashnerd.com/reference/flashnerd-format/package.md).

## SRS settings

Configure the behavior of an [SRS set](https://docs.flashnerd.com/reference/flashnerd-format/srs.md#srs-sets) or save reusable settings in an [SRS preset](https://docs.flashnerd.com/reference/flashnerd-format/presets.md#srs-presets). 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:

```json
{
  "dailyLimits": {
    "newCardsPerDay": 10
  }
}
```

The surrounding set or preset remains one JSON object per physical line in its `.jsonl` file. The [set](https://docs.flashnerd.com/reference/flashnerd-format/srs.md#srs-sets) and [preset](https://docs.flashnerd.com/reference/flashnerd-format/presets.md#srs-presets) pages contain complete, compact record examples.

### Settings full example

This complete settings object comes from the <a href="https://docs.flashnerd.com/examples/flashnerd-format/full/preferences/srs_presets/00000.jsonl" download>full SRS preset</a>. 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.

```json
{
  "version": 1,
  "cardDisplay": {
    "showTag": false,
    "showSrsState": true,
    "showStruggleStatus": true,
    "struggleThreshold": 6,
    "recoveryThreshold": 3
  },
  "reviewBehavior": {
    "maximumLoggedTime": 90,
    "reviewButtonDisplay": "twoButtons",
    "showElapsedTime": true,
    "autoAdvance": true,
    "timeBeforeShowingAnswer": 4,
    "timeBeforeNextCard": 2,
    "noAnswerRating": 2
  },
  "dailyLimits": {
    "maximumReviewsPerDay": 80,
    "newCardsPerDay": 8,
    "suspendedCardsPerDay": 2,
    "maximumReviewsCustomScheduling": true,
    "newCardsCustomScheduling": true,
    "newCardsIgnoreReviewLimit": true,
    "suspendedCardsCustomScheduling": true,
    "suspendedCardsIgnoreReviewLimit": true,
    "maximumReviewsPerWeekday": [
      80,
      80,
      80,
      80,
      80,
      120,
      120
    ],
    "newCardsPerWeekday": [
      8,
      8,
      8,
      8,
      8,
      12,
      12
    ],
    "suspendedCardsPerWeekday": [
      2,
      2,
      2,
      2,
      2,
      4,
      4
    ]
  },
  "displayOrder": {
    "cardPriorityGroups": [
      [
        "learning",
        "relearning"
      ],
      [
        "new",
        "review",
        "suspended"
      ]
    ],
    "deckOrderMode": "random"
  },
  "schedulingAlgorithm": {
    "desiredRetentionPercent": 92,
    "maximumIntervalDays": 365,
    "learningSteps": [
      {
        "value": 1,
        "unit": "min"
      },
      {
        "value": 1,
        "unit": "hour"
      },
      {
        "value": 1,
        "unit": "day"
      }
    ],
    "relearningSteps": [
      {
        "value": 10,
        "unit": "min"
      },
      {
        "value": 1,
        "unit": "hour"
      }
    ]
  },
  "advanced": {
    "parametersCsv": "0.212,1.2931,2.3065,8.2956,6.4133,0.8334,3.0194,0.001,1.8722,0.1666,0.796,1.4835,0.0614,0.2629,1.6483,0.6014,1.8729,0.5425,0.0912,0.0658,0.1542"
  }
}
```

### Settings omission, defaults, and nulls

All keys within `settings` are optional. The supported top-level keys are `version` and the six section names below.

| Input                                                                   | Result                                                                                          |
| ----------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- |
| Entire `settings` property omitted from a set/preset                    | Creates settings with all defaults shown in the tables below.                                   |
| `"settings": {}`                                                        | Uses `version: 1` and six empty section maps.                                                   |
| A partial object                                                        | Keeps the supplied entries; missing sections stay empty and missing nested keys are not filled. |
| `null` for `settings`, a supported section, or a supported nested value | Rejected.                                                                                       |

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`

| Key                  | Type    | Default | Meaning                                                           |
| -------------------- | ------- | ------- | ----------------------------------------------------------------- |
| `showTag`            | Boolean | `true`  | Show tags during review, subject to the session's tag visibility. |
| `showSrsState`       | Boolean | `true`  | Show the learning-state badge.                                    |
| `showStruggleStatus` | Boolean | `true`  | Show the struggle-status badge.                                   |
| `struggleThreshold`  | Integer | `8`     | Failures before a card is marked as Struggle.                     |
| `recoveryThreshold`  | Integer | `5`     | Consecutive Review successes needed to recover from Struggle.     |

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`

| Key                       | Type / allowed values       | Default       | Meaning                                                                     |
| ------------------------- | --------------------------- | ------------- | --------------------------------------------------------------------------- |
| `maximumLoggedTime`       | Integer                     | `60`          | Maximum logged review duration, in seconds.                                 |
| `reviewButtonDisplay`     | `twoButtons`, `fourButtons` | `fourButtons` | Number of grading buttons shown.                                            |
| `showElapsedTime`         | Boolean                     | `false`       | Display the elapsed review time.                                            |
| `autoAdvance`             | Boolean                     | `false`       | Reveal/advance automatically.                                               |
| `timeBeforeShowingAnswer` | Integer                     | `5`           | Seconds before revealing an answer when auto-advance is enabled.            |
| `timeBeforeNextCard`      | Integer                     | `5`           | Seconds before moving to the next card when auto-advance is enabled.        |
| `noAnswerRating`          | Integer `1`, `2`, `3`, `4`  | `1`           | Rating when auto-advance occurs without an answer: Again, Hard, Good, Easy. |

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`

| Key                               | Type           | Default                         | Meaning                                                         |
| --------------------------------- | -------------- | ------------------------------- | --------------------------------------------------------------- |
| `maximumReviewsPerDay`            | Integer        | `150`                           | Daily review limit when weekday customization is off.           |
| `maximumReviewsCustomScheduling`  | Boolean        | `false`                         | Use `maximumReviewsPerWeekday` instead of a single daily limit. |
| `maximumReviewsPerWeekday`        | Seven integers | `[150,150,150,150,150,150,150]` | Review limits from Monday through Sunday.                       |
| `newCardsPerDay`                  | Integer        | `15`                            | New-card limit when weekday customization is off.               |
| `newCardsCustomScheduling`        | Boolean        | `false`                         | Use `newCardsPerWeekday`.                                       |
| `newCardsPerWeekday`              | Seven integers | `[15,15,15,15,15,15,15]`        | New-card limits from Monday through Sunday.                     |
| `newCardsIgnoreReviewLimit`       | Boolean        | `false`                         | Allow new cards after the review limit is reached.              |
| `suspendedCardsPerDay`            | Integer        | `0`                             | Suspended-card allowance when weekday customization is off.     |
| `suspendedCardsCustomScheduling`  | Boolean        | `false`                         | Use `suspendedCardsPerWeekday`.                                 |
| `suspendedCardsPerWeekday`        | Seven integers | `[0,0,0,0,0,0,0]`               | Suspended-card allowances from Monday through Sunday.           |
| `suspendedCardsIgnoreReviewLimit` | Boolean        | `false`                         | Allow suspended cards after the review limit is reached.        |

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`

| Key                  | Type / allowed values               | Default                                                  | Meaning                                                             |
| -------------------- | ----------------------------------- | -------------------------------------------------------- | ------------------------------------------------------------------- |
| `cardPriorityGroups` | Array of arrays of category strings | `[["new","learning","relearning","review","suspended"]]` | Earlier groups have higher review priority.                         |
| `deckOrderMode`      | `sequential`, `random`              | `sequential`                                             | New-card selection follows linked-deck order or mixes across decks. |

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`

| Key                       | Type                  | Default                       | Meaning                                                |
| ------------------------- | --------------------- | ----------------------------- | ------------------------------------------------------ |
| `desiredRetentionPercent` | Integer               | `90`                          | Target recall percentage; use `90` for 90%, not `0.9`. |
| `maximumIntervalDays`     | Integer               | `36500`                       | Maximum review interval in days.                       |
| `learningSteps`           | Array of step objects | `[{"value":10,"unit":"min"}]` | Ordered learning delays.                               |
| `relearningSteps`         | Array of step objects | `[{"value":10,"unit":"min"}]` | Ordered relearning delays.                             |

Each step requires `value` (integer) and `unit` (`min`, `hour`, or `day`). Additional properties are ignored:

```json
{"value":10,"unit":"min"}
```

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`

| Key             | Type   | Default | Meaning                                                                             |
| --------------- | ------ | ------- | ----------------------------------------------------------------------------------- |
| `parametersCsv` | String | `""`    | Scheduler weights as comma-separated text. Empty selects the app's default weights. |

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](https://docs.flashnerd.com/reference/flashnerd-format/progress-and-history.md#schedules) or [review history](https://docs.flashnerd.com/reference/flashnerd-format/progress-and-history.md#srs-reviews).

### Settings additional example: weekday limits and two priority groups

Use this as the value of a set or preset's `settings` property:

```json
{
  "dailyLimits": {
    "newCardsCustomScheduling": true,
    "newCardsPerWeekday": [10, 10, 10, 10, 10, 5, 5]
  },
  "displayOrder": {
    "cardPriorityGroups": [
      ["relearning", "review"],
      ["new", "learning", "suspended"]
    ],
    "deckOrderMode": "sequential"
  },
  "schedulingAlgorithm": {
    "desiredRetentionPercent": 90,
    "learningSteps": [{"value": 10, "unit": "min"}],
    "relearningSteps": []
  }
}
```

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

<a href="https://docs.flashnerd.com/examples/flashnerd-format/schemas/srs_settings.schema.json" download>SRS settings schema</a>, [wire enum reference](https://docs.flashnerd.com/reference/flashnerd-format/enums.md), and [file reference](https://docs.flashnerd.com/reference/flashnerd-format/package.md).
