Import and export
Move Anki packages and structured text, inspect compatibility, and choose the right collection backup format.
Repeto can import and export Anki .apkg deck packages. Treat transfer as a reviewable operation: inspect the package summary, warnings, templates, and media before depending on the imported collection.
Import an Anki package
Open Import, then drop or choose an .apkg file. Repeto uploads the package as a resumable background job and prepares a preview before writing it to your collection.
The preview lists:
- decks and their note/card counts;
- note models found in the package;
- media count;
- whether scheduling data is present;
- package-specific warnings.
You can optionally replace the package’s top-level deck name. A package with several decks keeps its hierarchy unless you provide an enclosing target name.
Choose what to preserve
When scheduling data exists, Keep scheduling and review history is enabled by default. Turn it off when you want the material but intentionally want a fresh learning state.
Use Repeto styling is also enabled by default. It lets Repeto’s theme shell control the card colors while preserving the imported content and template structure. Turn it off when the package’s original visual design is essential, then check both light and dark modes.
Media is matched through the package manifest and stored as durable collection media. A later import can restore missing media even when the corresponding cards already exist.
Long-running imports
Large packages continue as jobs. Repeto stores the current import ID locally and restores the preview or result after navigation or reload. Do not upload the same file repeatedly while a job is processing; open the existing job page first.
If the browser reports a package error, export the deck again from its source application and retry with the new file. Corrupt SQLite data, unsupported compression, and missing media entries should appear as warnings or an import failure rather than partially trusted cards.
Export a deck
Open a deck and choose Export .apkg. Repeto downloads the deck with its nested names, notes, cards, note types, templates, media, and supported scheduling data.
Use the downloaded package to:
- keep an independent snapshot before structural changes;
- move a deck to another compatible application;
- share a deck privately;
- test import/export round trips.
Not every Anki desktop feature has a Repeto equivalent. Filtered-deck execution state, buried state, add-ons, custom template scripts, and unsupported scheduler metadata may not round trip exactly. Review the exported package in the destination before deleting the source.
Import structured text
Open Import, choose CSV or TSV, then choose or drop a UTF-8 .csv, .tsv, or .txt file. The web importer accepts files up to 5 MiB and 10,000 data rows. Preview detects common delimiters, handles a byte-order mark, quoted multiline fields, escaped quotes, and row-width problems.
Before preview, choose the note type and deck, optional tags, delimiter and HTML handling, duplicate policy, and whether duplicate matching is limited to the note type or also to the selected deck. The importer understands #separator, #html, #notetype, #deck, and #tags before the first data row; explicit choices in the screen override matching file directives.
After preview, map each source column to one note field, space-separated tags, or Ignore column. The first note field must be mapped because it identifies duplicates. Repeto shows diagnostics and a row plan describing every create, update, skip, or invalid row. Duplicate handling is explicit: Update the matching note, Skip the imported row, or Add another note.
Changing the file, mappings, or settings makes the plan stale and requires another preview. Commit is enabled only after you confirm that you reviewed the exact row plan. It accepts only the file and choices represented by the user-bound preview token, reconstructs the plan, applies it atomically, preserves existing card IDs, schedules, due dates, intervals, scheduler state, and review history when a note is updated, and makes an exact retry idempotent.
The browser stores the selected file, options, and preview locally so a reload can restore an uncommitted plan or safely retry an interrupted commit. Keep the page open if the browser reports that local preview recovery is unavailable.
The current importer does not import referenced media, GUIDs, #columns, per-row deck/note-type directives, or a column-heading row. The first non-directive row is data. Repeto also does not yet export notes as structured text.
Back up the complete Repeto collection
The Repeto-native archive is the exact recovery format. GET /v1/collection/backup creates a versioned ZIP64 archive containing the live collection graph, deck trees and settings, note types/templates/CSS, notes, cards, scheduling state, review history, media bytes and checksums, and filtered-deck definitions/membership snapshots. POST /v1/collection/restore validates ownership, paths, checksums, relationships, and sync clocks before an empty or explicitly replaced collection is committed.
This API is not yet a timed automatic-backup browser or a finished account recovery UI. Keep the archive outside Repeto before a destructive structural change.
Export or inspect an Anki collection package
GET /v1/collection/export.colpkg produces a real legacy schema-11 .colpkg containing the live Anki-representable collection and verified media. It is an interoperability export, not Repeto’s exact backup. Repeto-specific sync identity, generation metadata, some extended scheduler state, undo snapshots, and active filtered-deck execution state have no lossless legacy representation.
Empty or delete active filtered decks before JSON-manifest or legacy .colpkg export. Those narrower formats reject an active filtered-deck execution state instead of silently producing a misleading snapshot.
POST /v1/collection/import.colpkg/preview safely inspects legacy, anki21, and anki21b packages and reports the checksum and compatibility boundary. It does not replace the current collection. Destructive .colpkg import remains disabled until presets and review history can be retained exactly enough for an honest protected restore.
Check media integrity
The collection API can scan live note fields and card templates for image, audio, source, and [sound:…] references. It reports missing, unused, malformed, and ambiguous legacy-filename references without fetching remote URLs or deleting anything. A guided repair/trash UI is still planned.
Other exports
The Stats page can export its displayed statistics as CSV. The API also exposes a deterministic, checksummed JSON collection manifest for inspection and engineering workflows. That manifest does not contain media bytes and is not a restore format; use the native archive for exact recovery.
Marketplace publishing is different from backup export: a published deck is a shareable content package, not a private copy of your full review history.
Safe migration checklist
- Keep the original package until the migration is verified.
- Import with scheduling preserved when continuity matters.
- Open representative cards from every note type.
- Check images and audio.
- Compare due counts and a sample of intervals.
- Create a Repeto-native backup before deleting or replacing a source collection.
- Export the imported deck from Repeto and test that package independently.
The remaining automatic-backup, conflict-recovery, modern .colpkg, and user-interface work appears in the parity roadmap.