> 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.

# Validate a file and download examples

Check both the file's structure and its intended import destination. A JSON schema checks an individual record. The app checks the package, destination, and product limits. Review generated questions and answers for accuracy before studying them.

## Comprehensive example

<a href="https://docs.flashnerd.com/examples/flashnerd-format/comprehensive.flashnerd" download>Download comprehensive.flashnerd</a> to inspect two decks and five cards covering all 11 field types, folders, tags, media, SRS, all preset types, portable preferences, schedules, and history.

This archive is **format demonstration data**, including synthetic progress and settings. Inspect its records before importing; settings and preferences can affect your app, and turning on **Include study progress** imports the demonstration history. Keep **Override existing** off when inspecting a separate copy. Its tiny PNG and short silent WAV illustrate packaging, not useful study media. For new learning material, use the [record definitions](https://docs.flashnerd.com/reference/flashnerd-format/index.md#find-a-definition) and omit study schedules and history.

For an existing deck, obtain its own **Download Starter Template** in the app instead of treating this example as a universal cards-only file. See [Cards-only files](https://docs.flashnerd.com/reference/flashnerd-format/cards-only.md).

## Editable sources

The following files match the corresponding archive members. Keep the displayed paths when packaging them. A full JSON example on a reference page is expanded for reading; use these JSONL sources, or compact each record onto a single physical line.

### Comprehensive package

- <a href="https://docs.flashnerd.com/examples/flashnerd-format/full/content/cards/00000.jsonl" download>content/cards/00000.jsonl</a>
- <a href="https://docs.flashnerd.com/examples/flashnerd-format/full/content/decks/00000.jsonl" download>content/decks/00000.jsonl</a>
- <a href="https://docs.flashnerd.com/examples/flashnerd-format/full/content/review_folders/00000.jsonl" download>content/review_folders/00000.jsonl</a>
- <a href="https://docs.flashnerd.com/examples/flashnerd-format/full/content/tags/00000.jsonl" download>content/tags/00000.jsonl</a>
- <a href="https://docs.flashnerd.com/examples/flashnerd-format/full/history/normal_reviews/00000.jsonl" download>history/normal_reviews/00000.jsonl</a>
- <a href="https://docs.flashnerd.com/examples/flashnerd-format/full/history/srs_reviews/00000.jsonl" download>history/srs_reviews/00000.jsonl</a>
- <a href="https://docs.flashnerd.com/examples/flashnerd-format/full/manifest.json" download>manifest.json</a>
- <a href="https://docs.flashnerd.com/examples/flashnerd-format/full/media/pronunciation.wav" download>media/pronunciation.wav</a>
- <a href="https://docs.flashnerd.com/examples/flashnerd-format/full/media/station.png" download>media/station.png</a>
- <a href="https://docs.flashnerd.com/examples/flashnerd-format/full/preferences/ai_instruction_presets/00000.jsonl" download>preferences/ai_instruction_presets/00000.jsonl</a>
- <a href="https://docs.flashnerd.com/examples/flashnerd-format/full/preferences/card_template_presets/00000.jsonl" download>preferences/card_template_presets/00000.jsonl</a>
- <a href="https://docs.flashnerd.com/examples/flashnerd-format/full/preferences/search_presets/00000.jsonl" download>preferences/search_presets/00000.jsonl</a>
- <a href="https://docs.flashnerd.com/examples/flashnerd-format/full/preferences/srs_presets/00000.jsonl" download>preferences/srs_presets/00000.jsonl</a>
- <a href="https://docs.flashnerd.com/examples/flashnerd-format/full/preferences/user.json" download>preferences/user.json</a>
- <a href="https://docs.flashnerd.com/examples/flashnerd-format/full/progress/schedules/00000.jsonl" download>progress/schedules/00000.jsonl</a>
- <a href="https://docs.flashnerd.com/examples/flashnerd-format/full/srs/srs_folders/00000.jsonl" download>srs/srs_folders/00000.jsonl</a>
- <a href="https://docs.flashnerd.com/examples/flashnerd-format/full/srs/srs_sets/00000.jsonl" download>srs/srs_sets/00000.jsonl</a>

Each JSONL file may contain multiple records. Keep all referenced companion records when extracting a smaller example. The [dependency table](https://docs.flashnerd.com/reference/flashnerd-format/package.md#dependencies) explains which files can stand alone. `manifest.json` may be omitted after edits; the importer ignores it.

## Checks before importing

1. Open the file as a ZIP and inspect its root. It must contain recognized paths such as `content/decks/decks.jsonl`, not `my-folder/content/decks/decks.jsonl`.
2. Parse every JSONL line as one JSON object. Check UTF-8, duplicate keys, escaped string newlines, and exact enum spelling.
3. Resolve every relationship inside the archive. Match card value keys to field IDs and their types. Follow the separate destination-template rules for cards-only files.
4. Check field-specific structures: rich text uses Delta arrays; cloze uses UTF-16 ranges; image occlusion uses normalized rectangles. Review inherited versus overridden settings.
5. Include the actual referenced image/audio bytes under the exact `media/<filename>` paths. Open the files to check that they are usable media.
6. Stay within the [package limits](https://docs.flashnerd.com/reference/flashnerd-format/package.md#limits), including the 20,000-card deck cap and 10,000-record JSONL file limit.
7. Use the appropriate import preview, review warnings and sample cards, and confirm their content before saving.

An AI's statement that it checked a file is not proof of a completed app import. Ask it to report which checks it actually ran.

## JSON schemas

These **JSON schema files** help editors and AI tools construct individual ordinary records. Download the related schemas together, preserving their filenames; their references resolve to sibling files.

- <a href="https://docs.flashnerd.com/examples/flashnerd-format/schemas/ai_instruction_preset.schema.json" download>ai_instruction_preset.schema.json</a>
- <a href="https://docs.flashnerd.com/examples/flashnerd-format/schemas/card.schema.json" download>card.schema.json</a>
- <a href="https://docs.flashnerd.com/examples/flashnerd-format/schemas/card_template_preset.schema.json" download>card_template_preset.schema.json</a>
- <a href="https://docs.flashnerd.com/examples/flashnerd-format/schemas/deck.schema.json" download>deck.schema.json</a>
- <a href="https://docs.flashnerd.com/examples/flashnerd-format/schemas/field_definition.schema.json" download>field_definition.schema.json</a>
- <a href="https://docs.flashnerd.com/examples/flashnerd-format/schemas/field_settings.schema.json" download>field_settings.schema.json</a>
- <a href="https://docs.flashnerd.com/examples/flashnerd-format/schemas/field_value.schema.json" download>field_value.schema.json</a>
- <a href="https://docs.flashnerd.com/examples/flashnerd-format/schemas/general_settings.schema.json" download>general_settings.schema.json</a>
- <a href="https://docs.flashnerd.com/examples/flashnerd-format/schemas/manifest.schema.json" download>manifest.schema.json</a>
- <a href="https://docs.flashnerd.com/examples/flashnerd-format/schemas/normal_review.schema.json" download>normal_review\.schema.json</a>
- <a href="https://docs.flashnerd.com/examples/flashnerd-format/schemas/review_folder.schema.json" download>review_folder.schema.json</a>
- <a href="https://docs.flashnerd.com/examples/flashnerd-format/schemas/schedule.schema.json" download>schedule.schema.json</a>
- <a href="https://docs.flashnerd.com/examples/flashnerd-format/schemas/search_preset.schema.json" download>search_preset.schema.json</a>
- <a href="https://docs.flashnerd.com/examples/flashnerd-format/schemas/srs_folder.schema.json" download>srs_folder.schema.json</a>
- <a href="https://docs.flashnerd.com/examples/flashnerd-format/schemas/srs_preset.schema.json" download>srs_preset.schema.json</a>
- <a href="https://docs.flashnerd.com/examples/flashnerd-format/schemas/srs_review.schema.json" download>srs_review\.schema.json</a>
- <a href="https://docs.flashnerd.com/examples/flashnerd-format/schemas/srs_set.schema.json" download>srs_set.schema.json</a>
- <a href="https://docs.flashnerd.com/examples/flashnerd-format/schemas/srs_settings.schema.json" download>srs_settings.schema.json</a>
- <a href="https://docs.flashnerd.com/examples/flashnerd-format/schemas/tag.schema.json" download>tag.schema.json</a>
- <a href="https://docs.flashnerd.com/examples/flashnerd-format/schemas/user_preferences.schema.json" download>user_preferences.schema.json</a>

Schema `default` values document behavior; a schema validator does not insert those values into a record. Missing and explicit `null` are different unless the property allows null. Unknown properties are allowed by these schemas and ignored on import; they do not add app features or survive a later export.

The schemas describe individual record structures and limits on names, fields, and tags. Their string lengths count Unicode code points without trimming; see [package limits](https://docs.flashnerd.com/reference/flashnerd-format/package.md#limits) for differences from package validation and app behavior. They cannot establish correct cross-file IDs, duplicate JSON keys, folder depth, matching template types, valid cloze ranges or rectangles, ZIP integrity, or complete settings semantics. `field_settings.schema.json` and deck `modeSettings` only describe objects; use [field settings](https://docs.flashnerd.com/reference/flashnerd-format/fields.md) and [deck settings](https://docs.flashnerd.com/reference/flashnerd-format/decks.md) for supported properties. Date and date-time formats require a validator with format checking enabled.

`card.schema.json` requires ordinary cards' `deckId`. It does **not** validate cards-only files, which omit `deckId` and require the selected destination template. Do not add a fake `deckId` to satisfy that schema. Check a cards-only file through the selected deck's **Add Card** preview. The shared field-definition schema permits omitted preset-field IDs, but deck fields and referenced TTS targets require explicit IDs.

## Common failures

| Symptom                                | What to check                                                                                                                                                                                                                                           |
| -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Invalid ZIP or unsupported format      | Generate a real unencrypted ZIP using STORE or DEFLATE. Renaming JSON or a different archive format is insufficient.                                                                                                                                    |
| Empty package or no importable records | Check exact root paths and `.jsonl` suffixes. A manifest, unused media, empty files, or an empty preferences object do not supply content.                                                                                                              |
| JSON parse error                       | Keep one complete object per physical JSONL line. Remove comments, enclosing arrays, duplicate keys, and whitespace-only lines.                                                                                                                         |
| Missing deck, tag, folder, or preset   | Supply explicitly identified companion records in the same archive; names or existing app records cannot replace them.                                                                                                                                  |
| Unknown field or incompatible type     | Use field IDs rather than labels. For an existing deck, use its own starter and preserve its types.                                                                                                                                                     |
| Incompatible template                  | Distinguish missing template definitions from valid omitted card values. Full-archive Add Card needs matching source and destination templates.                                                                                                         |
| Invalid rich text, cloze, or masks     | Use structured Delta arrays, UTF-16 `[start,end)` ranges, and normalized rectangles. Anki `{{c1::text}}` syntax is not a Flashnerd cloze range.                                                                                                         |
| Blank image/audio after import         | Include real media under the exact path and case. Missing media is recoverable; remote URLs and base64 strings do not attach files.                                                                                                                     |
| Cards-only file rejected from Home     | Open the intended deck and use **Add Card**. Omit all deck files and card `deckId` properties in this mode.                                                                                                                                             |
| Duplicate cards after reimport         | Anonymous cards and copy imports create new records. Updating requires stored IDs from an export and deliberate override.                                                                                                                               |
| Unable to load study progress          | Review schedule/history references, dates, and state constraints. The app may retain content while omitting all imported progress/history; see [progress compatibility](https://docs.flashnerd.com/reference/flashnerd-format/progress-and-history.md). |

For errors during the app workflow, see [import troubleshooting](https://docs.flashnerd.com/help/troubleshooting.md#import-problems).
