How to Export OneNote to Markdown (2026 Guide)
OneNote is where most Microsoft 365 users’ best thinking lives — meeting notes, personal journals, project plans, research. But when you want that content elsewhere — Obsidian, Notion, a Git repo, or an AI prompt — OneNote’s proprietary format fights you.
This guide covers every method that actually works in 2026.
Why Export OneNote to Markdown?
- Moving to a Markdown-first tool — Obsidian, Logseq, Foam, or a Git-based docs setup
- Feeding AI workflows — Claude and ChatGPT need plain text, not OneNote’s XML blobs
- Archival — your notebooks sync to OneDrive but you don’t own the format
- Cross-platform access — OneNote on Linux is painful; Markdown files work everywhere
- Plain-text search —
ripgrepthrough a folder of Markdown beats OneNote’s fuzzy search any day
Method 1: Save Chrome Extension (on the OneNote Web App)
Save works on onenote.com and captures any OneNote page as clean Markdown in one click.
What Save captures from OneNote:
- Page title, section, notebook
- Last-modified timestamp
- Full page body with heading hierarchy
- Bulleted and numbered lists (including nested)
- Tables rendered as Markdown tables
- Inline images as Markdown references
- Embedded files linked as Markdown URLs
- Checklists preserved as GitHub-flavored Markdown task lists
- Highlighted text rendered as Markdown emphasis
What Save strips:
- OneNote’s navigation panes and ribbon
- Drawing annotations (OneNote’s ink → a captured image reference)
- Presence indicators for co-authors
When it’s the right tool: individual pages, working on the web app (which Save runs in), quick extraction for an AI prompt.
Method 2: Microsoft Graph API
For scriptable bulk exports, the Microsoft Graph OneNote API exposes notebooks, sections, and pages.
Typical flow:
- Register an Azure AD app with
Notes.ReadorNotes.Read.Allpermission - Acquire a token via OAuth or device-code flow
GET /me/onenote/notebooks→ list notebooksGET /me/onenote/sections→ list sectionsGET /me/onenote/pages→ list pages, with filtersGET /me/onenote/pages/{id}/content→ retrieve page HTML- Convert HTML to Markdown with Pandoc or Turndown
Pros: covers entire notebooks, scriptable, scheduled jobs possible.
Cons: auth setup, throttling at large scale, HTML-to-Markdown step needs polishing for drawings and equations.
Method 3: Desktop OneNote + Export to Word + Pandoc
A low-tech but reliable path:
- Open OneNote desktop → Section → Export → Word (.docx)
- Run Pandoc:
pandoc input.docx -f docx -t gfm -o output.md - Clean up the output (images end up as
media/image1.pngreferences)
Pros: no API setup, handles most content including equations.
Cons: manual, loses checklists (they become plain bullets), one section at a time.
Method 4: onenote-to-markdown Community Tools
Open-source projects that target OneNote:
- Evernote2Md — if you export OneNote → Evernote first, then this converts Evernote to Markdown. Two-hop but battle-tested.
- onenote-md-exporter — direct OneNote → Markdown in .NET, bulk-capable, preserves attachments.
- Pandoc with DOCX pipeline — as described above.
When they shine: bulk migration from a big personal OneNote archive, where speed > fidelity.
Handling OneNote’s quirks
- Drawings / ink — Save captures them as image references. Scripted exports need OCR if you want the text inside them.
- Equations — LaTeX in the source, but rendered as images or MathML in the export. Pandoc handles MathML → LaTeX conversion if you dig into the flags.
- Nested pages (OneNote’s parent/child page hierarchy) — preserve the structure in your output folder layout for easy navigation.
- Printouts (PDFs embedded as pages) — these become links to the attachment in exports, not the content itself. Extract with OCR separately if you need the text.
The practical workflow
For most users:
- “I want this one OneNote page in my notes” → open it on onenote.com, click Save, done.
- “I want to migrate a full personal notebook” → use
onenote-md-exporteror the DOCX + Pandoc path. Budget 2–4 hours. - “I want a scheduled archive of our team’s shared notebook” → Microsoft Graph API with a nightly cron.
- “I want this page as Claude context right now” → Save. Output is already optimised for LLM ingestion.
What LLMs want from OneNote exports
When the end goal is feeding pages to Claude or ChatGPT:
- Flatten tables into Markdown tables. OneNote’s visual table format doesn’t tokenise well as an image.
- Drop page chrome (section tabs, page titles in sidebars) — keep only the content.
- Preserve checklist state — “
- [x] Deploy” is information; “Deploy” alone is less useful. - Include the page title and notebook context as frontmatter so the LLM knows what file it’s reading.
Save handles these by default. Scripted exports need the post-processing step.
The bottom line
OneNote is a great captive environment. Its export story is the worst of the big note-taking tools. Markdown liberates.
- Ad-hoc page export: Save on onenote.com. 5 seconds per page.
- Bulk notebook migration:
onenote-md-exporteror Graph API + Pandoc. - Scheduled archival: Graph API + a scheduled job.
Your notes are yours. Get them into a format that will still work in ten years.