Notion is great for writing and organizing. It’s awful at letting that content leave Notion in a usable form. Every time you copy from Notion or export to Markdown, you get URL encoding glitches, toggle block remnants, callout formatting that nobody outside Notion understands, and database property artifacts.
Here’s how to get clean Markdown from Notion pages — free, in 2026.
Why you’d want Notion → Markdown
Notion is one of the best writing tools around. But it’s a walled garden. Markdown is the lingua franca for:
- Static site generators (Astro, Hugo, Jekyll, Eleventy)
- Static blog posts (most dev tools expect .md files)
- Obsidian / DevonThink / Logseq — note-taking tools that store plain files
- Git repos — documentation, READMEs, wikis
- AI workflows — Claude, GPT, and other tools consume Markdown easily
If your writing lives in Notion and you want it anywhere else, you need clean Markdown. Notion’s built-in export is “fine but noisy.”
Notion’s built-in Markdown export
Notion has an export feature:
- Open a page in Notion
- Click
⋯(top right) → Export - Choose Markdown & CSV
- Pick whether to include sub-pages and databases
- Click Export
- Get a
.zipfile with.mdfiles,.csvfiles, and animages/folder
The output is technically valid Markdown. But it has several issues:
- Sub-page nesting produces folders —
<page>/Sub Page.mdetc. Sometimes desired, sometimes not. - Databases export as Markdown tables + a separate CSV — the CSV is for the database properties, the Markdown is for the page body. Two files per database.
- Toggle blocks become HTML
<details>tags — works in browsers but not in most Markdown editors. - URL-encoded fragments —
%20instead of spaces in some links. - Image paths are local —
../images/hash.pngstyle. Break if you move files around. - Callouts become
<aside>tags with random CSS classes — look weird in Obsidian.
The result is workable but messy. Cleanup takes an hour per long document.
Method 1: Use a Notion-to-Markdown cleaner (fastest)
→ Try our free Notion to Markdown tool
What you do:
- Make your Notion page public (Share → Publish → Enable public access)
- Copy the public URL
- Paste into the Notion to Markdown tool
- Get clean Markdown — Notion artifacts stripped, URLs normalized, callouts cleaned
What gets cleaned:
- URL encoding fixed —
%20→ space,%2F→/, etc. - Toggle blocks → collapsible section syntax or removed entirely (your choice)
- Callouts → standard Markdown blockquotes with optional emoji prefix
- Database properties → stripped (database tables are exported as Markdown tables only)
- Image URLs → resolved to absolute public URLs (no broken
../images/paths) - Sub-page hierarchy → preserved in headings (cleaner than folders)
What does NOT work:
- Private pages (the URL-based tool needs the page to be public)
- Comments on the page (those stay in Notion)
- Real-time sync (the tool exports a snapshot)
Method 2: Copy from Notion and paste as HTML
A lesser-known trick: Notion’s clipboard behavior changes based on what you select.
- In Notion, select all (
Ctrl+AorCmd+A) - Copy (
Ctrl+CorCmd+C) - Paste into a tool that accepts HTML (Google Docs, Notion itself, Obsidian)
What you get:
- Images are embedded as base64 in the clipboard (works temporarily, but huge)
- Formatting is preserved as HTML, not Markdown
- Subtle Notion classes creep in
Then you’d convert HTML → Markdown. There are open-source tools for this (Turndown, html-to-md) but it’s another step.
This method works but is fiddly. Method 1 is much faster for a one-click experience.
Method 3: Notion’s API (developer-grade clean)
For developers with Notion API access:
- Create a Notion integration at notion.so/my-integrations
- Share each page you want to export with the integration
- Use the API to fetch page blocks
- Walk the block tree and convert each block type to clean Markdown
This produces the cleanest possible output (you control every conversion). But it requires:
- API token management
- Coding the block-walker
- Handling each block type’s edge cases
- Dealing with Notion’s pagination
If you have to do this for 5+ pages weekly, build it. If you have to do this once a month, use Method 1.
What about Notion’s “Markdown export” improvements?
Notion has gotten better about export over the years. As of 2026:
- Image URLs now use Notion’s signed URLs (they expire after 1 hour — annoying for archival)
- Database exports include schema in the Markdown frontmatter
- Sub-pages still produce folder structure (unavoidable because pages have IDs)
The signed-URL issue for images is the most frustrating. If you use Method 1 (our tool), we resolve signed URLs to permanent public CDN URLs so the images keep working in your exported Markdown.
Common conversion gotchas
A few specific things that break when converting Notion → Markdown:
Synced blocks — Notion’s “this content is a reference to over there” feature. Exports work but might create circular references. Best to manually un-sync before exporting.
Mentions — @username references become plain text or broken links in Markdown. If you need those preserved, our tool extracts them as proper Markdown links.
Equations — Notion uses KaTeX; Markdown needs LaTeX or MathJax syntax. Most converters miss this. Our tool outputs standard LaTeX delimiters.
Column lists — Notion supports multi-column layouts; Markdown doesn’t. Multi-column content collapses to a single column on export.
Embeds — Notion embeds (Figma, GitHub Gist, etc.) become plain links in Markdown. The visual preview is gone.
Most of these are unavoidable Markdown limitations, not converter bugs.
Setting up an Obsidian vault from Notion
If you’re moving from Notion to Obsidian (or maintaining both), here’s the workflow:
- Get Notion → clean Markdown (Method 1)
- Drop the
.mdfiles into your Obsidian vault - Configure Obsidian to handle Notion-style page links as Wikilinks
- Use Dataview plugin if you had databases (Markdown tables migrate cleanly)
Most Notion content survives the migration:
- ✅ Pages, headings, lists, tables
- ✅ Embedded images (if exported with public URLs)
- ✅ Code blocks
- ⚠️ Toggle sections (collapsible but visually different)
- ⚠️ Callouts (converted to blockquotes)
- ❌ Real-time collaboration (Obsidian is single-user)
- ❌ Comments and reactions (gone)
If you depend heavily on Notion’s collaborative features, consider running both — use Notion for collaborative work, Obsidian for personal knowledge base.
Try it now
Got a Notion page you want to drop into another tool?
- Make the page public (Share → Publish)
- Copy the public URL
- Paste into our Notion to Markdown tool
- Get clean Markdown — drop into Obsidian, a static site, a Git repo
Total time: 30 seconds.
Related tools: Notion to Markdown · Convert Notion to Markdown · Notion Backup