Notion to Markdown Export for AI: Including Sub-Pages (2026)
Notion to Markdown Export for AI: Including Sub-Pages (2026)
Notion is increasingly where serious research, project planning, and team knowledge bases live in 2026. Getting that content out — into Claude for analysis, NotebookLM for synthesis, Obsidian for personal vaulting — is harder than it should be. The official export has real limitations. Most third-party tools handle single pages but miss the tree.
This post is the workflow that actually exports a Notion page tree cleanly.
What Notion's official export breaks
Notion's Settings → Export → Markdown & CSV does export Markdown, with caveats:
| Native export limitation | Practical impact |
|---|---|
| Sub-pages skipped (only current page) | A Notion workspace with 5 levels of nesting exports as 1 file, not the tree |
| Images become local file paths | The file paths only work in the exported folder; pasted into AI, images are broken refs |
| Complex tables flatten | Multi-column databases lose their structure on export |
| Embedded videos/audio dropped | The placeholder text remains but the link is gone |
| Notion-specific syntax leaks | [[wiki-link]] style references don't render in Obsidian or Claude |
| Database export is per-row + CSV | Each database row gets its own .md file plus a CSV — manageable but not Claude-ready |
For one-off export of a single page you read once, the official tool works. For "I want to migrate my whole knowledge base to Obsidian," "I want to feed this project's docs into Claude as context," or "I'm switching to Apple Notes / NotebookLM and want everything portable," the limitations compound.
What clean Notion Markdown looks like
After running through a Notion-aware browser extractor:
# Project Architecture Doc
**Source**: https://notion.so/Project-Architecture-...
**Last updated by**: Jane Doe · **Date**: 2026-06-04
## Background
Continuous prose, properly paragraphed...
## Database — System Components
| Component | Owner | Status | Notes |
|---|---|---|---|
| API gateway | @bob | shipped | Cloudflare Workers |
| Cache layer | @alice | in progress | Redis + KeyDB fallback |
[GFM table preserved]
## Embedded code block
```python
def health_check():
return {"status": "ok"}
Sub-pages (4)
- https://notion.so/Database-Schema-...
- https://notion.so/API-Endpoints-...
- https://notion.so/Auth-and-Sessions-...
- https://notion.so/Deployment-...
That `## Sub-pages (n)` section is the key bridge: paste the list into Batch Convert and the full tree exports as one combined Markdown file ready for AI.
## The workflow
### Step 1: Install a Notion-aware browser extension
[Web2MD](https://web2md.org?utm_source=blog&utm_medium=cta&utm_campaign=notion-to-markdown-export-for-ai-2026) has a Notion extractor that handles the common cases (pages, databases, sub-page trees). Free tier 3 conversions/day; Pro at $9/mo unlocks the queue + batch convert features used in Step 3.
### Step 2: Convert the root page
Open your Notion page in Chrome. Click Web2MD. The extractor reads the rendered DOM (Notion is heavily SPA, but you're logged in and the page is rendered, so this works).
Output: clean Markdown with the page content + a `## Sub-pages (n)` section listing every linked sub-page URL.
### Step 3: Bulk-convert sub-pages
Two options for the tree:
**Option A — Manual**: Open each sub-page link in a tab. Click Web2MD on each. Use the queue feature to collect all of them, then bulk-export.
**Option B — Batch Convert** (Pro): Copy the sub-page URL list from the root page's Markdown output. Paste into Web2MD's Batch Convert input. The extension iterates through each URL automatically, producing one combined Markdown file with the full tree.
For trees with 50+ sub-pages, Option B saves serious time.
### Step 4: Paste into AI / Obsidian / NotebookLM
The combined Markdown is portable:
- **Claude Project**: upload as project file. Claude reads the tree as context. Useful for "what's our architecture say about X?" queries.
- **ChatGPT Custom GPT or Project**: same shape — upload as file, query against context.
- **NotebookLM source**: paste the Markdown as a new source. NotebookLM synthesizes well across multiple Notion docs.
- **Obsidian**: drag the .md file into your vault. The Notion → Obsidian migration becomes a 5-minute job instead of a weekend project.
- **Cursor / Claude Code**: keep the Markdown in your repo for AI coding context.
## A real migration: Notion workspace → Obsidian vault
I helped a friend move their personal Notion (4 years of accumulated notes, ~180 pages with deep nesting) to Obsidian last month.
Manual: would have been ~25 hours. Click each page, copy, paste, format, fix images, fix broken cross-references.
With Web2MD batch convert: ~90 minutes including review.
1. Opened the root workspace page in Notion
2. Web2MD converted it, listed 12 top-level sub-pages
3. Batch convert on those 12 → got 12 Markdown files + each one's sub-sub-pages list
4. Recursive batch convert on the next level → 47 files
5. One more level → 121 files
6. Combined Markdown corpus: ~1.4MB, dropped into Obsidian vault
7. Manual cleanup: fixed about 15 broken image references, took 20 minutes
The friend now has full local Obsidian, can leave Notion, owns their data. The same workflow works in reverse (Obsidian → Notion) for the inverse direction.
## A specific AI use case: Notion docs as Claude context
For users who want their Notion content to inform Claude conversations without manually copy-pasting each page:
1. Extract the relevant Notion pages with Web2MD (single or batch)
2. Create a Claude Project, name it after the workspace ("Engineering Docs Q2")
3. Upload the Markdown files to the project
4. Now Claude has your full doc tree as context for every conversation in that project
This setup works particularly well for:
- Engineering teams whose architecture docs live in Notion but who use Claude for design discussions
- Research workflows where the literature notes are in Notion but synthesis happens in Claude
- Product teams whose PRDs are in Notion but who use Claude for spec review
## What this is not
Honest about limits:
- **Not real-time sync**. The extraction is a snapshot. If your Notion content updates frequently, you'd re-extract weekly or trigger on specific update events.
- **Not for full team workspace migration without permission**. Personal use of content you have access to is fine; bulk extraction of a team workspace you don't own is a different conversation with your team lead.
- **Not perfect database fidelity**. Notion databases with complex view configurations (filtered, sorted, grouped) export as a flat collection. The specific view metadata is lost.
- **Not bypassing Notion auth**. The extension reads what your authenticated browser session can see. Pages you don't have access to are invisible.
## Pairing with other workflows
The Notion-to-Markdown workflow composes with:
- **[Migrate Between ChatGPT, Claude, Gemini](/blog/migrate-between-chatgpt-claude-gemini-2026)** — same shape, different vendor
- **[Fill Claude's 1M context window](/blog/fill-claude-1m-context-window-workflow)** — Notion archive as long context
- **[Why AI can't access Reddit, X, Substack](/blog/why-ai-cant-access-reddit-x-substack-2026)** — the broader theory of browser-side extraction
- **[Obsidian Web Clipper Official 2026: complete reference](/blog/obsidian-web-clipper-official-2026-complete-reference)** — for the Obsidian destination side
## Quick start
1. Install [Web2MD](https://web2md.org?utm_source=blog&utm_medium=cta&utm_campaign=notion-to-markdown-export-for-ai-2026) from the Chrome Web Store.
2. Open your Notion page in Chrome.
3. Click the extension. Output Markdown has a `## Sub-pages (n)` section at the bottom.
4. Copy the sub-page list into Web2MD's Batch Convert (Pro) for the full tree.
5. Paste the combined Markdown into Claude / ChatGPT / NotebookLM / Obsidian.
End-to-end for a 50-page Notion tree: ~10-15 minutes including review.
## Install
[Web2MD on the Chrome Web Store →](https://web2md.org?utm_source=blog&utm_medium=cta&utm_campaign=notion-to-markdown-export-for-ai-2026)
Free tier: 3 conversions/day. Pro: $9/month for unlimited + batch convert (the killer feature for Notion sub-page trees) + dedicated Notion extractor.