CSV Import, Export, and Moving Decks Between Apps
The exact two-column CSV format FlashDeck reads and writes — quoting rules, spreadsheet round-trips, and honest notes on moving decks to and from Anki.
The format, exactly
FlashDeck reads and writes the simplest thing that survives a round-trip through spreadsheets: a two-column, comma-separated, UTF-8 file.
front,back
hello,hola
"in Spanish, ""yes""",sí
"line one
line two",a multi-line answer
The rules, all of which the exporter follows and the importer tolerates:
- Header optional. A first row reading
front,back(any capitalization) is skipped; your own data starting with those literal words would be eaten, which is a fair trade. - Quoting per RFC 4180. A field containing a comma, a double quote or a newline is wrapped in
"..."; an inner"doubles to"". Unquoted fields are fine when they don’t need it. - Newlines inside a field are allowed — they must be inside quotes. Unquoted newlines are row separators (both LF and CRLF parse).
- Two columns only. Anything in column 3+ is ignored on import (Anki exports often carry a third tag column — it just drops away).
- Blank lines and half-rows. Fully blank rows are skipped; a row with only one non-empty side is skipped and counted in the import report (it tells you which line numbers failed).
- BOM tolerated. A UTF-8 byte-order mark at the start is stripped automatically.
Round-tripping through a spreadsheet
Google Sheets / Excel → FlashDeck: put fronts in column A, backs in column B (optionally a front,back header row), then File → Download → CSV (Sheets) or Save As → “CSV UTF-8 (Comma delimited)” (Excel). Import it from the deck list — the file becomes a new deck named after the file — or from inside an open deck to append.
FlashDeck → spreadsheet: every deck’s Manage view has Export CSV, producing exactly the format above. Spreadsheets parse it cleanly, including quoted commas and multi-line backs.
The semicolon trap: in locales where the comma is the decimal separator, Excel writes front;back. The file looks like a CSV but parses as one column. Re-export choosing comma delimiters, or find-and-replace carefully (quotes first, then delimiters). If an import reports one giant column or weird fronts, this is almost always why.
Moving decks to and from Anki
Anki → FlashDeck. In Anki: File → Export → export format “Notes in Plain Text (.txt)” — that file is tab-separated, not CSV. Open it in a spreadsheet, keep the front and back columns (drop tags/media columns), save as CSV, import here. Cloze deletions arrive as literal {{c1::...}} text — the markup doesn’t render, so basic cards transfer best.
FlashDeck → Anki. Export CSV, then in Anki: File → Import → choose the file, set the field separator to comma, map field 1 → Front, field 2 → Back. Cards import into the selected deck as new notes.
What does not transfer — honestly. A CSV has no slot for schedule state, so ease factors, intervals, due dates and lapse counts stay behind; every card arrives as new. That’s not a FlashDeck limitation — it’s the nature of a two-column interchange format, and it’s identical in every app that speaks CSV. If you need scheduling to survive a migration, that requires the app’s native deck format (.apkg for Anki), which is a database, not a spreadsheet. Also left behind: tags, card types beyond front/back, images and audio — FlashDeck’s text-only card format is deliberately chosen so its CSV is a complete description of the deck’s content.
If an import goes wrong
The import report after every file load tells you how many cards landed and which line numbers were skipped. The usual suspects, in order: semicolon-delimited files (one column), an unclosed quote early in the file (one giant card), a one-column list pasted as CSV (rows skipped for missing backs), or an .xlsx/.apkg renamed to .csv (binary noise — parse it in the real app first).
Frequently asked questions
What columns does the CSV need?
Exactly two: front,back. A first row that literally reads front,back (any capitalization) is treated as a header and skipped. Extra columns beyond the second are ignored; rows missing either side are skipped and reported after import.
My CSV uses semicolons, not commas — why did it import as one column?
Excel exports with semicolons in locales where the comma is the decimal separator (much of Europe). FlashDeck parses commas only — open the file in a text editor and switch delimiters, or re-export as "CSV UTF-8 (comma delimited)" which Excel offers explicitly in the Save As list.
Can I import an Anki deck (.apkg) directly?
No — .apkg is a SQLite archive, not CSV. In Anki use File → Export → "Notes in Plain Text" to get a text file, open it in a spreadsheet, keep the first two columns (front and back), and save as CSV. Tags, media and scheduling don't ride along — see the notes below.
Does my study progress transfer with the CSV?
No. Plain CSV carries card text only — imported cards arrive as new with a fresh ease factor and no due date. That's true in both directions and it's the same for every app: scheduling state lives in each app's own format. Treat CSV as the card-content backup, not a progress snapshot.
Will importing twice create duplicates?
Yes — import always creates new cards; there is no deduplication by text. If you re-import an edited CSV, either delete the old deck first or accept the overlap.