- Home/
- APKG to CSV
APKG to CSV Converter
Drop an .apkg or .colpkg and download every note as a CSV that opens cleanly in Excel or Google Sheets. It runs in your browser — the deck is never uploaded. Works with current Anki exports (.anki21b), up to 100 MB.
Convert an Anki .apkg to CSV or TSV in your browser: every note, deck and tag, Excel-ready UTF-8, or a file Anki can re-import. No upload, no signup.
Convert an Anki deck to CSV
An Anki package is a zip file with an SQLite database inside, so a spreadsheet cannot open it directly. This converter reads that database on your device and writes one row per note: the note’s fields in order, plus its deck and tags. Cloze deletions stay as {{c1::…}}, so you can still see which part of the sentence was hidden.
Pick the output for what you will do next. “For Excel or Google Sheets” gives a header row, plain text, and a UTF-8 byte-order mark, so accented letters, Chinese, Japanese and emoji survive when Excel opens the file. “For re-importing into Anki” keeps the HTML and writes Anki’s own import headers and each note’s GUID, so importing the edited file updates the original notes instead of adding copies.
How to convert an .apkg file to CSV
- 1Choose or drop the .apkg or .colpkg file. Shared decks from AnkiWeb and exports from Anki Desktop, AnkiMobile and AnkiDroid all work, including the newer zstd-compressed format.
- 2Pick the output: “For Excel or Google Sheets” or “For re-importing into Anki”. You can also change the separator, keep HTML formatting, or limit the file to one note type.
- 3Select Convert. The package is unzipped and read in this browser tab; you see the note count, the columns, and the first rows before anything is saved.
- 4Select Download. The file is named after the deck, with .csv (comma or semicolon) or .tsv (tab).
- 5Open it: double-click it in Excel or Numbers, or in Google Sheets choose File → Import → Upload.
What carries over to the CSV
| Part of the note | In the CSV | Details |
|---|---|---|
| Fields | One column per field | Every field of every note, in the note type’s own order. When note types differ, columns are named Field 1, Field 2… and shorter notes are padded so the Tags column never moves. |
| Cloze deletions | Kept as text | {{c1::answer::hint}} stays exactly as written, so the file can be imported back as cloze notes. |
| Deck | Deck column | The full path, such as Biology::Cells — taken from the note’s first card, as Anki’s own export does. |
| Tags | Tags column | Space-separated, the way Anki stores them. |
| Formatting | Plain text or HTML | For spreadsheets, bold, colours and lists are removed and line breaks are kept. The Anki file keeps the HTML. |
| Images and audio | Not included | A CSV cannot hold media files. With HTML kept, the image tags and [sound:] references stay in the cells; the files themselves stay in the .apkg. |
| Review history | Not included | Due dates, intervals and ease have no place in a note table. To move a deck with its progress, share the .apkg itself. |
| GUID and note type | Anki file only | Included by default when re-importing into Anki, so Anki can match each row to the note it came from. |
Spreadsheet files also get one safety change: a cell that starts with =, +, - or @ is prefixed with an apostrophe, so Excel shows it as text instead of running it as a formula. Plain numbers such as -5 are left alone, and the Anki file is never altered this way.
Editing the cards and importing them back into Anki
Choose “For re-importing into Anki”. The file starts with header lines such as #separator:Tab, #html:true and #guid column:1. Anki 2.1.54 and later read those lines and map every column on their own — note type, deck, fields and tags.
Edit the fields, keep the header lines at the top, and leave the GUID column exactly as it is. According to the Anki manual, as long as the GUID is unchanged, importing the file again updates the existing notes rather than creating duplicates. A row whose GUID you delete is imported as a new note.
When you don’t need this tool
- If the deck is already in Anki Desktop, File → Export → “Notes in Plain Text” writes the notes to a tab-separated text file. That is the native route and needs nothing else.
- If you only want to read the cards, the Anki .apkg viewer shows them rendered with their images, searchable, without making a file.
- Use this converter when Anki is not installed — a school laptop, a Chromebook, a phone — or when you want to look inside a shared .apkg before it goes anywhere near your collection.
How it works, and what stays on your device
The file is read by JavaScript in this tab: unzipped with JSZip, decompressed with a zstd decoder if it is an .anki21b package, and queried with SQLite compiled to JavaScript. None of it is sent anywhere — not the file, not the card text, not the file name. The page still loads its own scripts, and it records an anonymous “CSV exported” event with the note count and the output type, never the content.
The limits are the same as the viewer’s: 100 MB per package, and 64 MB for the database once decompressed. A bigger collection is refused with a message rather than quietly cut short.
Developer verification — November 3, 2026
We ran the converter end to end with Playwright in headless Chromium 145 against our local development server, at desktop width (1280 px) and with iPhone 13 emulation (390 px). Each run chose a file, converted it, downloaded the result and read the downloaded file back. Every request the page made from choosing the file to the finished download was recorded.
| Input | Browser | Observed result |
|---|---|---|
| GuruOwl sample deck (.apkg, 2 notes, a packaged image) | Desktop and 390 px | Header row plus 2 rows, UTF-8 byte-order mark present; cloze text kept as {{c1::…}}; one note flagged as referencing media |
| Current-format package (zstd .anki21b, 2 notes) | Desktop and 390 px | Read without re-exporting from Anki; header row plus 2 rows with the full deck path |
| Generated deck: 10,000 notes, 11,000 cards, 3.5 MB | Desktop and 390 px | 10,000 rows; under half a second from Convert to the result on our development Mac |
| GuruOwl sample deck, “For re-importing into Anki” | Desktop | Tab-separated, no byte-order mark, 7 Anki header lines (#separator, #html, #columns, GUID / note type / deck / tags columns) and HTML kept |
| Current-format package (.anki21b) picked from the Files app | Safari, iOS 26.3 simulator (iPhone 17 Pro) | Converted in Safari; the CSV downloaded as modern-anki21b.csv with its byte-order mark and both rows |
| Network requests during conversion | All Chromium runs | No POST, PUT or PATCH request at all — the file, its card text and its name never left the page |
These are our own checks, not an independent audit. Besides headless Chromium, the converter ran in Safari on the iOS 26.3 simulator; it was not run on a physical phone, and timings depend on the device. Analytics is off on the development server; the live site sends one anonymous event after a download, with the note count and output type only. For signed-out visitors the live site also loads Google’s sign-in prompt, whose own frame sends Google telemetry (browser and language, checked on November 3, 2026); it never receives the deck. We have not run the re-import file through Anki Desktop in this test; the GUID behaviour described above is the Anki manual’s.
Frequently asked questions
Can I convert an .apkg to CSV without Anki?
Yes. This page reads the package itself, so you need no Anki installation, no account and no upload. It accepts .apkg and .colpkg files up to 100 MB, and up to 64 MB once the database inside is decompressed.
Will the CSV open in Excel without broken characters?
Yes. The spreadsheet output is UTF-8 with a byte-order mark, which is what Excel looks for to read UTF-8, so accented letters, CJK text and emoji come through. Numbers, LibreOffice and Google Sheets read it too.
Can I edit the CSV and import it back into Anki?
Choose “For re-importing into Anki”. That file carries Anki’s import headers, which Anki 2.1.54 and later read, plus each note’s GUID. Keep the header lines and the GUID column unchanged and Anki updates the existing notes instead of adding duplicates.
What happens to images and audio?
They are not in the CSV — a spreadsheet cannot hold media files. In the Anki file the image and sound references stay in the fields, so the cards still point at the right files if those files are already in your Anki collection.
Does it keep my review history?
No. The CSV holds notes, not scheduling. To give someone a deck together with its progress, share the .apkg file itself.
What about a deck with several note types?
Every note gets one row. When the note types have different fields, the columns are named Field 1, Field 2 and so on, and shorter notes are padded so the Tags column stays in one place. For real column names, export one note type at a time.
Is this affiliated with Anki?
No. GuruOwl is an independent tool and is not affiliated with Anki, AnkiMobile, AnkiDroid or AnkiWeb. “Anki” here only describes the file format it reads and writes.
Keep exploring
Turn your PDF into a deck you’ll actually review
Web signup includes 50 credits. Estimated generation: 1 credit/page for Standard or 3 for Expert; check the estimate before confirming. No card required.
