Markdown to Anki Flashcards

Paste your Markdown notes and get an Anki-importable deck file — headings, Q/A lines, tables and cloze deletions all supported, with deck, tag and note-type controls. Runs entirely in your browser, no sign-up.

Try:
Anki import file

What this tool does

Paste Markdown notes and get back a flashcard deck file you can import into Anki — or into any app that reads tab/comma-separated cards (Quizlet, RemNote, Mochi, Memrise). It runs entirely in your browser: nothing is uploaded, it works offline once loaded, and there's no account.

The parser understands the shapes real notes are already written in:

Card formatWhat it reads
Headings## Question on one line, the text underneath is the answer. Nested headings become the answer's context.
Q: / A: blocksQ: … starts a card, A: … starts its answer (multi-line answers welcome). Question: / Answer:, **Q:** and bulleted variants work too.
One card per lineterm :: definition, term - definition, term => definition, term; definition, term: definition or a tab. Bullets and numbering are stripped.
Table rows| question | answer | rows; the | --- | row and the header above it are dropped, and an optional third column becomes tags.
ClozeEvery **bold** or ==highlighted== span becomes {{c1::…}}, {{c2::…}}, … on one cloze note.

Auto-detect picks the format for you (and tells you which one it chose in the Readable preview output), so most notes convert with a single paste.

Worked example

Input — Markdown notes:

## What is mitosis?
Cell division that makes **two identical** cells.

## What is meiosis?
Cell division that makes gametes.

Output — the Anki import file (tab-separated, HTML fields):

#separator:Tab
#html:true
#notetype:Basic
#columns:Front	Back
What is mitosis?	Cell division that makes <b>two identical</b> cells.
What is meiosis?	Cell division that makes gametes.

Save that as a .txt file and use File → Import in Anki. The # lines are Anki's own header directives, so the separator, note type, deck and tags are set for you — you don't have to configure the import dialog by hand.

A vocabulary list works the same way. gato :: cat on each line, deck name Spanish::Week 1, and every line becomes one card in that subdeck.

Options

OptionWhat it does
Card formatAuto-detect (default), or force headings / one-card-per-line / Q:-A: / table / cloze.
Line delimiterOne-card-per-line mode only. auto picks whichever of ::, =>, tab, |, ;, -, : splits the most lines; or pass a name (tab, colon, dash, arrow, …) or any literal text.
Heading level0 (default) auto-picks the level with the most answers under it; 16 pins ####### as the question.
Field separatorTab (default — what Anki recommends), Comma, Semicolon or Pipe. Fields containing the separator, a quote or a newline are quoted RFC-4180 style.
Field formattingHTML (default) converts bold, italics, code, links, lists and fenced code blocks to HTML and line breaks to <br>; Keep raw Markdown leaves the source untouched; Plain text strips all markup.
Note type / Deck / TagsWritten as #notetype:, #deck: and #tags: header lines. Use :: in a deck name for a subdeck (Biology::Cells).
Tag from heading pathHeading mode: each card is tagged with its parent headings as one hierarchical tag, e.g. Biology::Cell_Parts.
Include Anki #header linesOn by default. Turn it off for a bare CSV/TSV for another app — deck-wide tags then move into each row's Tags column instead of being dropped.
Drop duplicate questionsOn by default; keeps the first card when a question repeats (case-insensitive).
OutputThe import file (default), a readable numbered preview (shows the detected format and card count), or JSON.

Limits & edge cases

FAQ

How do I import the result into Anki?

Copy the output (or use the download link), save it as a .txt file, then in Anki choose File → Import and pick that file. The #separator:, #notetype:, #deck: and #tags: header lines configure the import dialog for you, so you normally just press Import.

Can it export a .apkg deck file?

No — a .apkg is a zipped SQLite collection, which a browser-local tool can't build safely. The tab-separated text file this tool produces is Anki's own documented import format and covers the same job: it carries the deck name, note type, tags and HTML flag with it.

How do cloze deletions work?

Choose Cloze from bold text. Each **bold** or ==highlighted== span in a line becomes a numbered deletion, so The **mitochondrion** is the **powerhouse** of the cell. exports as The {{c1::mitochondrion}} is the {{c2::powerhouse}} of the cell. — one note with two cards. The note type is switched to Cloze automatically.

My notes use `-` or `=>` between term and definition. Does that work?

Yes. In one-card-per-line mode the delimiter defaults to auto, which tries ::, =>, tab, |, ;, - and : and uses whichever splits the most lines. If your notes mix several, set Line delimiter explicitly — you can type a name (dash, arrow, tab, colon) or any literal string.

Why did it pick the wrong card format?

Auto-detect prefers Q:/A: blocks, then tables, then whichever of headings or line-splitting yields more cards — so a vocabulary list under a # Title still converts line by line. When a document is ambiguous, set Card format explicitly and, for headings, pin the Heading level.

Can I put every card in a specific deck with tags?

Yes. Fill in Deck name (use :: for subdecks, e.g. Biology::Cells) and Tags (space- or comma-separated). Both are written as header lines, so they apply to every card in the file. In heading mode you can also tag each card with its own heading path.

Is it free, and do my notes leave my device?

It's free and your notes stay local. The conversion runs in your browser through WebAssembly — nothing is uploaded, there's no account, and the page keeps working offline once it has loaded.

Developer & Automation Access

Run it from the terminal

Same engine as this page, headless — via the gizza CLI:

gizza tool markdown-flashcards "## What is mitosis?
Cell division that makes two identical cells.

## What is meiosis?
Cell division that makes gametes."

New to the CLI? Get gizza →

Open it by URL

Pre-fill and auto-run this tool with query parameters — the names match the API/CLI:

https://gizza.ai/tools/markdown-flashcards/?markdown=%23%23%20What%20is%20mitosis%3F%0ACell%20division%20that%20makes%20two%20identical%20cells.%0A%0A%23%23%20What%20is%20meiosis%3F%0ACell%20division%20that%20makes%20gametes.&mode=auto&separator=auto&heading_level=0&field_separator=tab&field_format=html&notetype=Basic&deck=Biology%3A%3ACells&tags=exam%20week1&tags_from_headings=true&include_headers=true&dedupe=true&output=anki

Machine-readable descriptor: tool.json — title + parameters JSON Schema for agents.