Notion and Markdown
Notion takes Markdown in and gives Markdown back, but never stores it: a page is a tree of blocks, so Markdown is a format it reads and writes rather than the thing it holds. Below is a converter for getting one page out, and what to expect in each direction.
Copy a Notion page and paste it below — or drop an exported .html file
or
Select the page content, copy, then paste
Converted in this tab. The file is never uploaded.
Notion writes blocks, not Markdown
This one fact explains everything else on the page. When you type
## in Notion, the characters are consumed and a Heading 2
block appears. The Markdown was an instruction, not content — there is no
## in the page afterwards, because there is no text file
afterwards.
So Markdown going in is a shortcut, Markdown coming out is a rendering, and nothing round-trips exactly. That is not a flaw so much as the trade Notion made: blocks buy databases, backlinks and synced content, and cost you the plain file.
Getting Markdown into Notion
Just paste it. Notion recognises Markdown in pasted text and converts it as it lands — headings, lists, bold, italic, links, code blocks and tables all arrive as real blocks. For most purposes this is the whole answer, and it is why there is no "import this paragraph" command.
Type it. The same shortcuts work as you write:
| Type | Get |
|---|---|
# ## ### | Headings, three levels only |
- or * | Bulleted list |
1. | Numbered list |
[] | To-do checkbox |
> | Toggle list — not a quote |
" | Quote |
| three backticks | Code block |
--- | Divider |
The > row is worth noticing. Everywhere else an angle
bracket makes a blockquote; in Notion it makes a collapsible toggle, and
the quote is a double quote character instead.
Import a file. Sidebar → Import → Markdown & CSV takes
.md files or a .zip of them, creating a page per
file. Right for a batch, slower than pasting for one.
Getting Markdown out of Notion
For one page, select the content, copy, and paste into the converter above. The clipboard carries an HTML version of the selection alongside the plain text, and that is what gets converted — so headings stay headings rather than becoming a wall of unstyled lines. No download, no unzip, and nothing leaves your browser.
For a workspace, use Notion's own export:
••• → Export → Markdown & CSV. It produces a
.zip with one .md per page, databases as separate
CSV files, and images in folders alongside.
Two things about that export are worth knowing before you rely on it. Every
filename gets the page ID appended — Meeting notes 8a3f21c9….md
— and every internal link points at those names, so a usable set of
documents needs a rename-and-relink pass. And the first line of each file
is the page title as an H1, which duplicates the filename.
What does not survive the trip out
| In Notion | In the Markdown |
|---|---|
| Headings, lists, bold, code, links | Exactly as expected |
| Tables (simple) | Markdown tables |
| Databases | A separate CSV file, not a table in the document |
| Columns | Flattened into sequence, top to bottom |
| Callouts | A blockquote, emoji included |
| Toggles | A heading, with the contents underneath |
| Synced blocks | An ordinary copy in each place |
| Page properties | Lost |
| Comments and mentions | Lost, or plain text |
The database row is the one that surprises people mid-migration. A page built around an inline database exports as a document with a gap in it and a CSV beside it, and reassembling that is manual work. If a Notion workspace is mostly databases, Markdown is not really the export format for it.
One syntax difference to remember
~struck~ Notion
~~struck~~ GitHub Flavored Markdown One tilde, not two. Text moved either way loses the formatting without complaint — the markers just render as literal tildes. Everything else in Notion's inline syntax matches the standard.
Why convert at all
Usually because the document needs to outlive the tool, or go somewhere Notion cannot reach: a repository, a static site, a PDF for someone without an account. Markdown is the format that does all three, and once a page is Markdown you can export it to PDF or to Word from here without it going anywhere near a server.
Common questions
- Does Notion support Markdown?
- As an input format, yes — typing # and a space makes a heading, and pasting Markdown converts it as it lands. Notion does not store Markdown, though. Every page is a tree of blocks in a database, so what you get back out is an export rather than the file you put in.
- How do I convert a Notion page to Markdown?
- Two ways. Notion's own export produces a .zip of .md files, which is right for a whole workspace. For one page, select the content, copy, and paste into the box above — the clipboard carries HTML, which is converted here without a download or an unzip.
- Why do Notion export filenames have a long code on the end?
- That is the page ID, and Notion appends it to guarantee unique names. It also appears in every internal link inside the export, so a folder of exported files needs a rename-and-relink pass before it becomes a usable set of documents.
- How do I paste Markdown into Notion?
- Just paste it. Notion recognises Markdown in pasted text and converts headings, lists, bold, links and code blocks as they land. Ctrl or Cmd+Shift+V pastes as plain text instead, which is what you want when the Markdown should stay visible as characters.
- What does Notion lose when exporting to Markdown?
- Databases become separate CSV files rather than tables in the document. Columns flatten into sequence, synced blocks become ordinary copies, and comments, mentions and page properties do not survive. Callouts and toggles degrade to quotes and headings.
- Is strikethrough different in Notion?
- Yes, and it is the one syntax difference that catches people. Notion uses one tilde — ~struck~ — where GitHub Flavored Markdown uses two. Text moved either way loses the formatting silently.