Free tool
Notion names every exported file after its internal id. This strips them, repairs the internal links, and hands back clean Markdown ready for Obsidian, Logseq, or anywhere else. All in your browser.
Drop your Notion export .zip here
or
Runs entirely in your browser. Your notes are never uploaded, and this page makes no network requests with your data.
The problem
The content is fine. The filenames are the problem, and they are what breaks the export everywhere else.
Export a Notion workspace as Markdown and you get a ZIP where every single file carries the page's internal id: a note called Meeting Notes arrives as Meeting Notes a1b2c3d4e5f67890abcdef1234567890.md, inside a folder named the same way, several levels deep. Notion uses those ids to keep pages unique in its own database and simply leaves them in the export.
The second half of the problem is links. Every internal link in the Markdown points at those hashed, URL-encoded filenames. So renaming the files by hand, which is the obvious first instinct, silently breaks every page-to-page link and every image reference in the export. This tool does both halves together: it strips the ids from file and folder names, then rewrites the links so they still resolve to the files they were always meant to point at.
Step by step
Five steps from a live Notion workspace to a clean set of Markdown files.
Open the page or workspace in Notion. Use the desktop app or the web app. To move everything, start from the workspace level in the sidebar rather than a single page.
Open the ••• menu and choose Export. The three-dot menu sits at the top right of the page. Workspace-level exports live under Settings, then the export option for your whole workspace.
Choose "Markdown & CSV" as the format. This is the portable option. HTML and PDF exports look tidier but are far harder to reuse in another notes app.
Enable subpages and folders. Turn on "Include subpages" and "Create folders for subpages" so the hierarchy survives the move instead of flattening into one directory.
Download the ZIP, then drop it here. Notion prepares a .zip and either downloads it or emails you a link. Drag that file onto the cleaner above and everything else happens in your browser.
Scope
A cleaner should rename and repair, never rewrite what you wrote.
Fixed
Left untouched
Where they go next
Clean Markdown is portable by definition, so the same folder works in whichever app you are moving to.
Privacy
A Notion export is often an entire working life: client work, finances, journals, half-finished plans. Handing that to a random web service to perform a rename is a poor trade, so this tool does not ask you to. The ZIP is unpacked, cleaned, and repacked locally, and you can verify it the simple way: load the page, go offline, and clean your export anyway.
The same principle is why Mindly keeps your library in a folder on your own Mac rather than a vendor cloud. Whatever you migrate to, your notes should stay yours through the move and long after it.
Common questions
Notion appends each page's internal id, a 32-character hex string, to every exported file and folder name, so "Meeting Notes" arrives as "Meeting Notes a1b2c3d4e5f6...md". The ids keep names unique inside Notion's database, and Notion leaves them in the export. Nothing is broken, but the names are unreadable and every internal link points at them, which is what this cleaner fixes.
No. The ZIP is read, unpacked, cleaned, and repacked entirely in your browser. Nothing is sent to a server, ours included. You can load this page, disconnect from the internet, and the cleaner still works, which is the simplest proof there is no upload.
Open the page or workspace, click the ••• menu at the top right, and choose Export. Pick "Markdown & CSV" as the format, enable "Include subpages" and "Create folders for subpages" if you want the hierarchy preserved, then export. Notion emails or downloads a .zip, which is the file this tool expects.
Export from Notion as Markdown & CSV, clean the export here, then copy the resulting folder into your Obsidian vault. Obsidian reads Markdown natively, so the pages appear immediately with readable names and working internal links. Skipping the cleaning step is what leaves people with hashed filenames and broken links inside their new vault.
Yes, that is the point of the tool. Renaming files without fixing links is what breaks a Notion export. Every Markdown link is decoded, matched against the file it points to, and rewritten to the cleaned name, so page-to-page links, sub-page links, and image references keep resolving.
Databases exported as CSV are kept and renamed alongside your pages, including the "_all" variants Notion produces for views. Images and file attachments are carried through untouched, and the Markdown references pointing at them are rewritten to match their cleaned folder names.
Yes, within your browser's memory. Exports with hundreds of pages clean in seconds. Very large workspaces with heavy media are limited by available RAM rather than by any rule here, and Notion itself splits huge exports into multiple ZIP parts, which you can clean one at a time.
Anywhere that reads Markdown, which is the point of converting: Obsidian, Logseq, a plain folder, or Mindly. To be precise about Mindly, it imports Evernote .enex files directly, and for Notion the path is the normal one: bring the cleaned Markdown files in and the AI tags, summarizes, and connects each one to related items you already saved.
Free, with no account and no limit on how many exports you clean. There is no cost to run it because the work happens on your device rather than on a server. It is built by the team behind Mindly, a macOS second brain app, and the only ask is that you consider Mindly if you want somewhere to keep the notes afterward.
Bring the Markdown into Mindly and AI tags, summarizes, and connects every note. Free for macOS.