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 searchripgrep through 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:

  1. Register an Azure AD app with Notes.Read or Notes.Read.All permission
  2. Acquire a token via OAuth or device-code flow
  3. GET /me/onenote/notebooks → list notebooks
  4. GET /me/onenote/sections → list sections
  5. GET /me/onenote/pages → list pages, with filters
  6. GET /me/onenote/pages/{id}/content → retrieve page HTML
  7. 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:

  1. Open OneNote desktop → Section → Export → Word (.docx)
  2. Run Pandoc: pandoc input.docx -f docx -t gfm -o output.md
  3. Clean up the output (images end up as media/image1.png references)

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-exporter or 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-exporter or 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.

## Continue reading

Jean-Sébastien Wallez

Written by

Jean-Sébastien Wallez

I've been making internet products for 10+ years. Built Save on weekends because I wanted my own reading library in clean markdown for Claude and Obsidian. Write here about web clipping, AI workflows, and the small things that make a personal knowledge base actually useful.