← Blog

Bringing your existing flashcard library into Discito

If you've been using a spaced-repetition app on iPhone, you've already built something valuable: a personal review history, a set of decks that fit how you study, and — most importantly — the muscle memory of showing up daily and tapping Again / Hard / Good / Easy. That work is real, and you shouldn't have to throw any of it away to try a different app.

This guide walks through exactly how to bring your existing .apkg library into Discito, what carries over, what doesn't, and how to round-trip back to the open .apkg format whenever you want. There is no lock-in. There is no proprietary format. If Discito turns out not to be for you, you can take everything back with one tap.

Before you start: what carries over

Discito uses the open .apkg file format that the spaced-repetition ecosystem has used for years. The full-fidelity import path covers:

If you had SM-2 scheduling state instead of FSRS (older decks, or decks created before FSRS became the default), Discito's import pipeline converts SM-2 → FSRS-6 using the same memory_state_from_sm2 routine the open spaced-repetition community uses. The conversion is bit-exact with the fsrs-rs reference implementation. Your scheduling won't suddenly diverge.

Step 1: Export your library to .apkg

The simplest path is to export from a desktop spaced-repetition app on a Mac or PC, because desktop apps typically expose more export options than their mobile counterparts. On iPhone, you can usually export single decks from your current app directly, but a desktop export lets you capture everything in one shot.

From a desktop spaced-repetition app:

  1. Open the app and find File → Export (or your app's equivalent)
  2. Set the export format to .apkg (sometimes labeled "Deck Package")
  3. Choose All Decks, or pick a single deck if you'd rather migrate one at a time
  4. Make sure Include scheduling information is checked — this is what preserves your review history
  5. Make sure Include media is checked if your cards have images or audio
  6. Save the .apkg file somewhere you can hand to your iPhone — AirDrop, iCloud Drive, Dropbox, email to yourself

From a mobile app on iPhone:

  1. Long-press (or open) the deck you want to export
  2. Look for the Export action
  3. Choose the .apkg format and confirm scheduling + media are included
  4. Share the resulting .apkg file to Files, iCloud Drive, or wherever you'd like to stage it

A large library — 20,000+ cards with media — can produce a .apkg file in the 200-500 MB range. That's normal. Discito's importer streams the zstd-compressed payload rather than loading the whole thing into memory, so your iPhone won't run out of RAM even on bigger archives.

Step 2: Get the .apkg file onto your iPhone

Any of the usual paths works:

When iOS sees an .apkg file, it'll offer a Share Sheet with Discito as one of the destination apps. You can also open Discito first, tap the Import button on the Today tab, and pick the file from there.

Step 3: Preview and confirm the import

Before Discito touches anything in your library, the import sheet shows you a preview:

If you're importing a large library for the first time, this is the right moment to make a decision: do you want to merge everything into your existing Discito decks, or land the import inside a new top-level deck so you can review the result first? Both options are on the import sheet. The default is land in a new deck, which is the safe choice.

Tap Import and watch the progress bar. The commit pipeline runs on a background queue, batched into chunks so the UI stays responsive. If you cancel mid-import, Discito drops everything that hadn't committed and leaves your existing library untouched. There is no half-imported state to clean up.

Imports are atomic at the batch level. Cancel mid-flight, and you're back exactly where you started — no orphaned cards, no stale media blobs, no manual cleanup.

Step 4: Spot-check the result

Once the import completes, open the imported deck and tap a few cards. Things to verify:

If something looks off — a missing image, a card that didn't render — open an issue or email [email protected] with the deck name and the kind of card. Real-world .apkg archives have edge cases the synthetic test fixtures don't cover, and we want to know.

What about review history?

Every Again / Hard / Good / Easy you logged, going back to whenever that card was created, comes across as a Review entity in Discito's Core Data store. The FSRS-6 optimizer (Pro feature) can train against this history immediately — no need to re-bank reviews on Discito's side before it has enough data.

For most users, this means the per-user weight optimizer is usable from day one of using Discito, not after months of fresh reviews. If you've got 5,000+ reviews in your history, the optimizer has plenty to chew on.

The round-trip: exporting back to .apkg

Discito's export pipeline produces .apkg files that conform to the open format and round-trip cleanly with any compatible reader. We test this automatically against the open-source reference Python validator on every build.

To export a deck:

  1. Long-press the deck on Today or open Deck Detail and tap the overflow menu
  2. Pick Share Deck…
  3. Choose .apkg — the CSV option is also there if you'd rather flat-export
  4. Share the resulting file wherever you'd like — AirDrop, Files, Mail

The exported archive round-trips cleanly: every note, every card, every cloze ordinal, every image, every audio file, every tag, every scheduling field comes out the other end intact and portable to any FSRS-aware app that reads the format.

(CSV export is part of Discito Lite — free forever. .apkg export is part of Discito Pro, with one free trial on the Lite tier so you can verify the round-trip works on your own deck before deciding.)

What about cloud sync from your previous app?

Discito doesn't sync to any third-party cloud service. We use Apple's CloudKit for cross-device sync, which has different trade-offs:

If you actively study on Windows, Linux, or Android, and you want those devices to keep getting updates as you study, a cross-platform cloud sync service may still be the right tool for you and Discito isn't a one-to-one replacement. If your study life is iPhone-and-maybe-Mac, CloudKit is going to feel less like a sync setting and more like a thing that just works.

Credits and gratitude

This entire migration path exists because of the work of the Open Spaced Repetition project, which built the FSRS family of scheduling algorithms and the reference implementations Discito ports. The scheduling math is theirs. Discito's contribution is an iOS-native shell around that work, with on-device AI features layered on top.

Try Discito

Discito Lite is free forever. Pro is $14.99 once, lifetime, Family Sharing included. Pay once, own forever.

Read other posts