Open Source · MIT Licensed · 98% Test Coverage

Free your notes from
Microsoft's walled garden

Export your entire OneNote library to Obsidian-compatible Markdown. Images, attachments, checkboxes, structure — everything comes with you.

pip install onenote-to-obsidian

Why people switch to this

🚀

Zero config

No Azure AD app registration. No client secrets. No admin consent. Just install and run.

📎

Full fidelity

Images, PDFs, file attachments, checkboxes, tables, embedded content. Nothing left behind.

Smart resume

Re-run anytime — only new or changed pages get exported. Crash mid-way? Pick up where you left off.

📂

Preserves structure

Notebooks, sections, section groups — your hierarchy becomes clean folders in Obsidian.

🏷️

Rich metadata

YAML frontmatter with created/modified dates, source tags, and OneNote IDs on every page.

🔐

Your data stays yours

Talks only to Microsoft Graph API and your local disk. Tokens cached with owner-only permissions.

Three steps. That's it.

1

Install

pip install onenote-to-obsidian
2

Authenticate

Open a link, enter a code.
No app registration needed.

3

Export

onenote-to-obsidian

What gets converted

OneNoteMarkdown
Images![alt](attachments/img.png)
File attachments[file.pdf](attachments/file.pdf)
Checkboxes- [ ] todo / - [x] done
Embedded content[Embedded](url)
Headers, bold, italic, tables, linksStandard Markdown
Absolute positioning CSSRemoved (clean output)

How it compares

onenote-to-obsidianManual copy-pasteOneNote OOXML export
No registration neededN/AN/A
Images & attachmentsManualPartial
Resume / incremental
Checkboxes
Section groupsN/A
YAML frontmatter
Automation-friendlyPartial

Common questions

Does this work with work/school Microsoft accounts?

Personal accounts work out of the box. Work/school accounts may need a custom client ID — just run --setup and follow the prompts.

What if the export crashes mid-way?

Progress is saved automatically. Re-running picks up exactly where it stopped. File deduplication survives crashes too.

Is my data sent anywhere besides Microsoft?

No. The tool talks only to Microsoft Graph API and writes to your local filesystem. Tokens are cached with owner-only file permissions.

Can I re-export without downloading everything again?

Yes. Only new or modified pages are exported. Use --reset-state to force a full re-export.

What Python version do I need?

Python 3.10 or newer. Works on macOS, Windows, and Linux.

Ready to move your notes?

pip install onenote-to-obsidian