Markdown

Notion Export Cleaner (UUIDs, links, CSV databases)

Clean a Notion .zip export in your browser: strip UUID filenames, rewrite internal links, and turn CSV databases into Markdown tables. Nothing is uploaded.

Runs 100% in your browserUpdated Jul 6, 2026
Live · runs on your deviceNothing leaves your browser

Drop your Notion export .zip here

or choose the file from your computer.

Nothing is uploaded. The zip is read, cleaned, and rebuilt entirely in your browser.

Overview

Drop your Notion export .zip into the tool. It strips the 32-character ID Notion appends to every file and folder name, rewrites internal Markdown links so they still point at the renamed pages, converts each database's CSV into a Markdown table, and resolves any naming collisions the cleanup creates. Download a clean .zip ready for Obsidian, Logseq, or plain Markdown. Nothing is uploaded.

How it works

  1. 1Drop your Notion export .zip onto the tool, or choose it from your computer. Everything below runs locally; nothing is uploaded.
  2. 2The tool reads every entry, strips the trailing 32-character ID from each file and folder name, and shows how many it renamed.
  3. 3Markdown links that pointed at the old UUID-suffixed filenames are rewritten to the cleaned paths, so internal navigation keeps working.
  4. 4Each database's CSV export, the ones sitting next to a folder of that database's rows, is converted into a Markdown pipe table.
  5. 5If stripping the ID makes two names identical, the second one gets a " (2)" suffix so nothing is silently overwritten.
  6. 6Download the cleaned .zip and unzip it into your vault or note folder.

Worked example

Cleaning a small export with a database, a link, and a naming collision

A five-file export has a page linking to a CSV database, the folder holding one of that database's rows, and two meeting-notes pages that differ only by their Notion ID. Running the cleanup renames all five entries (for example `Tasks 8f14e45fceea167a5a36dedd4bea2543.csv` becomes `Tasks.md`), rewrites the one link that pointed at the CSV so it now reads `[database](Tasks.md)`, converts that CSV's two rows into a two-column Markdown table, and resolves the one naming collision by renaming the second `Meeting Notes.md` to `Meeting Notes (2).md`. All five files come back stripped, linked, and readable, with nothing left in the original CSV or UUID form.

Methodology & privacy

Every file and folder name in a Notion export ends with a space and a 32-character hexadecimal block ID. The tool strips that exact trailing pattern from each path segment (preserving a file's extension by splitting at its last dot first), so any hex-looking text earlier in a title is left alone. Markdown links are found, URL-decoded, and resolved against the directory of the file that contains them; a link that resolves to a known entry is rewritten to a new relative path pointing at that entry's renamed location, while external URLs and same-page anchors are left untouched. A CSV is treated as a database export, and converted, only when it sits next to a same-named folder (Notion's export shape for a database's rows) and its content actually parses as a table; the conversion reuses this suite's Markdown Table Formatter parser and renderer, so the same GitHub-Flavored-Markdown pipe-table padding and RFC-4180 CSV parsing apply. When stripping the ID would make two names collide, the second (and any later) colliding entry is suffixed " (2)", " (3)", and so on, in the order the export lists them. Exports over 2,000 files or 200 MB uncompressed are declined with an explicit notice rather than risking a frozen browser tab.

This tool reads, cleans, and rebuilds your Notion export entirely in your browser with JSZip. The zip file and everything inside it, pages, databases, and attachments, never leave your device. A private export deserves a private cleanup, not an upload to a stranger's server.

FAQ

How do I convert a Notion export to Obsidian?

+

Export your workspace from Notion as Markdown & CSV, then drop the resulting .zip into this tool. It strips the UUID Notion appends to every filename, rewrites internal links to match, and converts database CSVs into Markdown tables, all before you unzip it into your Obsidian vault.

How do I clean up Notion export filenames with UUIDs?

+

Notion appends a 32-character hexadecimal ID to every file and folder name on export. This tool strips that exact trailing ID from every path segment, in both files and nested folders, while keeping the rest of the name (and each file's extension) intact.

How do I remove the Notion ID from filenames?

+

Drop the export .zip into this tool rather than renaming files by hand. It finds the trailing 32-character ID on every file and folder, strips it, and rewrites any Markdown links that pointed at the old UUID-suffixed name so they still resolve after the rename.

How do I convert a Notion CSV database to a Markdown table?

+

When a database's CSV export sits next to the folder of that database's rows, which is how Notion exports every database, this tool detects the pair automatically and converts the CSV into a column-aligned Markdown pipe table instead of leaving it as a bare spreadsheet file.

Why are my Notion database pages missing their content after exporting?

+

Notion's own Markdown & CSV export writes a database's properties (tags, titles, dates) into a CSV, but the actual page content inside each row exports separately as its own file in a same-named folder. This tool does not recover missing content Notion itself failed to export; it cleans and connects what the export actually produced, converting the CSV to a table and stripping every filename's UUID.

Will this fix broken links between my exported pages?

+

It fixes the specific breakage the UUID-stripping rename would otherwise cause: a Markdown link that pointed at a UUID-suffixed filename is rewritten to the new, cleaned path. It does not invent links between pages that were never linked in Notion to begin with.

Does this tool upload my Notion export anywhere?

+

No. The zip is read, cleaned, and rebuilt entirely in your browser with JSZip. Nothing inside it, no page, no attachment, no database row, is ever sent to a server, which matters because Notion exports often contain private or unpublished content.

What if my export is too large for this tool?

+

Exports over 2,000 files or roughly 200 MB uncompressed are declined with a clear notice instead of freezing your browser tab. For an export that large, try cleaning your largest databases as separate sub-exports from Notion first.

This tool fixes one moment. recal handles the whole day.

recal is a private brain for your Mac. It watches how you work, on device, and starts doing your busywork itself. You approve every action.

Get early access