Updated August 29, 2026 · 7 min read
Anki can turn a plain CSV file into a full deck of flashcards, but it is picky about how that file is put together. Get the formatting right and the import takes about a minute. Get it wrong and you end up with garbled fields, a stray header row turned into a card, or duplicates you did not ask for. This guide covers both: how to prepare a CSV Anki will read correctly, and how to run the import itself.
Anki's text-file importer reads plain text with one note per line and fields separated by a delimiter. It accepts commas, semicolons, tabs, spaces, pipes, or colons, and it tries to guess which one your file uses by scanning the first line. You can override the guess in the import screen if it picks wrong.
A few formatting rules matter more than people expect:
If you're building the CSV from scratch, a simple spreadsheet with a Front column and a Back column, saved as CSV, covers most decks. If you have multi-line content in a field, know that Excel doesn't always export multi-line CSV cells cleanly — Google Sheets or LibreOffice Calc tend to handle this more reliably.
Front and Back are combined into one field. This almost always means Anki guessed the wrong delimiter — common with CSVs exported from Excel under certain regional settings, which can use semicolons instead of commas. Set the separator manually in the import screen, or add a #separator:tab (or comma , semicolon ) line as the very first line of your file to force it.
Accented or non-Latin characters show up as odd symbols. The file isn't saved as UTF-8. Re-export it from your spreadsheet app with UTF-8 explicitly selected, or open it in a plain text editor and re-save with that encoding.
HTML tags show up as literal text on the card (you see <b>word</b> instead of bold text). Turn on "Allow HTML in fields" in the import screen — it's off by default.
The header row got imported as a flashcard. Anki has no automatic header-row detection. Delete the header line from the file before importing, or prefix it with # so Anki treats it as a comment.
Importing the same file twice overwrote cards you'd already edited. That's the default duplicate behavior working as designed — Anki matched the first field and updated the existing note rather than adding a copy. If you don't want that, either give repeat rows a unique first field or change the duplicate-handling option when you import.
If your CSV just needs to become a plain Front/Back deck and you'd rather not fuss with delimiters and quoting by hand, QuizWhiz's CSV to Anki Converter will do the reformatting for you. Upload or paste a CSV, TSV, or TXT file (up to 5MB), pick comma or tab as the delimiter — it auto-detects this from an uploaded file — preview the first few cards, and download a tab-separated .txt file that's already in the two-column shape Anki expects. Processing happens in your browser, so the file never leaves your device. It doesn't strip a header row automatically, so remove one before uploading if your source file has one, and note it produces plain Front/Back pairs rather than mapping tags or multiple note-type fields — for anything more complex than a two-column deck, use Anki's own import dialog directly.
How do I import a CSV into Anki? Open Anki, go to File → Import, select your file, confirm the note type, deck, separator, and field mapping in the import screen, then click Import. See the step-by-step section above for the full walkthrough.
What CSV format does Anki accept? A plain text file with one note per line, fields separated by a comma, semicolon, tab, space, pipe, or colon, saved as UTF-8. Wrap any field that contains the delimiter or a line break in double quotes.
How does field mapping work in Anki's import screen? Each column in your file is matched to a field on the note type you're importing into — Front, Back, Tags, and so on. Anki shows a dropdown per column so you can fix any mapping it guessed wrong before you import.
Why did my import create duplicates, or update cards I didn't expect it to? Anki's default duplicate check compares the first field of each incoming row against your existing notes of the same note type. A match updates the existing note in place; no match creates a new card. You can change the matching scope or turn off duplicate updating in the import screen.
Once the deck is imported, it behaves like any other Anki deck — reviews, scheduling, and stats all work the same as if you'd typed the cards in by hand.