Exporting your flashcards: CSV, JSON and Markdown without losing the context
Your cards should outlive any single app. What actually travels in each Kardo export format, how to bring a deck into a spreadsheet or another tool, and the traps that quietly strip context.
Reviewed by Kirill Oleinichenko on September 17, 2026 · checklist v1 · How Kardo writes
On this page
A flashcard deck is a small asset with a long life. The app you made it in will not be the app you use in five years, and the lessons the cards came from are already behind you. So it is worth asking a plain question about any study tool you invest months into: what exactly do I get to take with me?
This is a practical walkthrough of the export formats Kardo offers — the TSV file the app labels "CSV (Anki)", JSON, and Markdown, plus a direct export to Mochi Cards — and of the quiet differences between them. The formats differ less in how they look and more in what they preserve.
What a card actually contains
Most flashcard tools pretend a card is a front and a back. Under that model every export is trivial and every export loses the same things.
A card from a real lesson is richer. Take a single Spanish word your teacher used last Tuesday. The useful record is not despertarse = to wake up. It is closer to this:
- front —
despertarse - back — to wake up
- context —
Me despierto a las siete todos los días.— the sentence it was actually said in - type — verb
- difficulty — A2, roughly where the lesson was pitched
Those are the exporter's own field names, and the context line is the one every export silently drops first — and it is the part that carries the memory. When you review the word alone, you are memorizing a pairing. When you review it inside its sentence, you are rehearsing the word the way you will actually need it: in a stream of speech. An export that keeps the front and loses the context is a downgrade wearing a backup's clothing.
The file labelled "CSV (Anki)" is really a TSV
Start with the format most people reach for first. Kardo's export button says "CSV (Anki)", and the file it downloads is a tab-separated text file with a .tsv extension and a UTF-8 byte-order mark. The distinction is not pedantry — it is why the file opens cleanly.
What it contains is one card per row, with the five fields above as columns. A trimmed example — two rows of a lesson about mornings — looks like this (the gaps between columns are single tab characters, which is what a .tsv reader expects):
front back context type difficulty
despertarse to wake up Me despierto a las siete todos los días. verb A2
la alarma alarm La alarma no sonó y llegué tarde. noun A2
Two of the fields are worth defending. context is the sentence from your lesson; type and difficulty let you sort a mixed deck later — pull out the verbs, or hide everything above your current band. The other defensible choice is the delimiter itself: a tab is not a character that appears inside a Spanish sentence, so column boundaries never need escaping, and spreadsheets split the columns identically on every machine — no more "it opened as one column" after a spreadsheet guessed a semicolon because the locale said so.
The traps, in the order they bite. First, line breaks: a multi-line context sentence is flattened to a single line on export, because a raw line break would split one card across two rows. That is a deliberate loss, and the reason a long quote arrives as one readable line rather than as corruption. Second, encoding: the leading byte-order mark is what keeps despertarse and señor intact when the file is opened in spreadsheet apps that would otherwise guess a legacy code page and show ? — if you re-save or re-convert the file, keep UTF-8. Third, and most dangerous: any two-column importer that happily assigns the context text to the back of the card and leaves the deck technically correct and practically useless. Check where the sentence landed before you trust the import.
JSON — for keeping everything, forever
Where the TSV flattens the card into a row, JSON keeps the structure. A single card round-tripped through a Kardo export looks like this:
[
{
"front": "despertarse",
"back": "to wake up",
"context": "Me despierto a las siete todos los días.",
"type": "verb",
"difficulty": "A2"
}
]
Optional fields are omitted when a card has none — front and back are always present, context, type and difficulty appear when there is something to say. Exporting everything at once wraps the same card objects in an envelope — exportedAt, totalCards, and a lessons array of { title, date, cards } — while a single lesson exports the flat array shown above. This is the format to choose when the destination is a program rather than a person: a script that rebuilds the deck somewhere else, a statistics notebook, an archive you open again in three years. The rules are simple because the structure is explicit — no delimiter to escape, no column-position guessing.
One honest caveat: JSON is a record of your cards, not a review history. Spaced-repetition scheduling lives in the app that produced it. Moving decks between tools resets the schedule — unavoidable, and worth knowing before you migrate a deck you have been reviewing for months.
Markdown — for humans, notes and the archive
Markdown is the format for reading. It is what you would send to a study partner, paste into your notes app, or keep in the same folder as the lesson summaries. The export is a titled table, one row per card:
# Morning routine
| Front | Back | Context | Type | Difficulty |
| ----------- | ---------- | ---------------------------------------- | ---- | ---------- |
| despertarse | to wake up | Me despierto a las siete todos los días. | verb | A2 |
It survives text editors, note apps, and version control, and it is human-readable in a way the other two are not: you can read a Markdown export on a phone in a queue and actually learn from it. (A plain-text .txt variant exists too, for the same reason, with one card per line.)
If your destination is Mochi Cards, the export goes there directly — same term, translation and context sentence (the level tag stays behind: Mochi templates do not carry it), without a manual conversion stop in between. The principle is the same in every case: the export should be a complete copy, not a screenshot of the deck.
The question that decides the format
If you take one habit from this article, make it this decision rule:
- Spreadsheet or Anki import → the TSV labelled "CSV (Anki)". Keep it UTF-8; check that the context landed in the right column.
- A program or a long archive → JSON.
- People, notes, reading → Markdown.
Whichever you choose, export before you need it. A backup you make on the day you are leaving a tool is a backup made under pressure, at the moment you have the least patience to check the output. Ten seconds of choosing the right format in a calm week beats an afternoon of repairing a stripped deck later.
Your words came from a real conversation with a real teacher. The export is how they stay yours.
Turn your next lesson into cards
The bot joins your lesson on Zoom, Meet or Teams, extracts the vocabulary with its context sentence, and schedules the review. You just show up and learn.
Start free