Moving your notes · Updated October 6, 2026
Get your notes out of Notion
Notion will give you Markdown, but with a 32-character code stapled to every filename and link. A free pass with the right tool leaves clean files.
| Official export | Markdown & CSV, or HTML, for one page, a page and its subpages, or the whole workspace. On every plan, the free one included. |
|---|---|
| Pictures and files | Included, in a folder beside each page. |
| Dates | Not in the export. Only a tool that asks Notion’s API can add them back. |
| Best free tool | Obsidian’s importer, without a terminal. notion_sanitizer with one. |
| Time | An hour of your own, plus the wait for the export: minutes for most workspaces, longer for big ones. |
Why people leave
Notion is a fine place to build things and an awkward place to keep notes. Its offline mode arrived in August 2025 and is opt-in page by page, on each device: a page you didn’t mark isn’t there on the plane, a database brings only its first 50 rows, and subpages don’t come along with their parent. Large databases make the app slow, and the mobile app slower. In May 2025 Notion folded its AI into the Business plan and raised that plan from $15 to $20 a member a month, leaving the free and Plus plans a capped trial of it. Underneath all of that is the thing people say most: their notes live in Notion’s house, and the way out is rough. One writer who exported 214 pages found 183 of the links between them broken and some forty pasted images gone.
What the export gives you
For one page or a branch of pages, open the page’s ⋯ menu and choose Export. For everything, open Settings, then General under Workspace, and choose Export all workspace content. Either way, pick the format Markdown & CSV, include content Everything, turn on Include subpages and Create folders for subpages. A workspace export is prepared in the background and emailed to you as a link that lasts seven days; Notion says it can take up to 30 hours, though most finish in minutes. A big workspace arrives as several zip files, sometimes with zips inside them. Unpack them all into one folder.
What is inside is Markdown, but Markdown with habits:
- Every file and folder carries a 32-character code:
Reading list 3f2a…c901.md. Every link between pages points at that exact name, so renaming a file by hand breaks every link to it. - A page with subpages or attachments gets a folder of the same name beside it, holding them. Links to them are relative, with spaces written as
%20. - Each database becomes a CSV file plus a folder with one Markdown file per row. Views, filters and sorts are gone; relations become page names; formulas and rollups are frozen at their last value.
- Callouts come out as HTML (an
<aside>block, as Notion’s help page says), toggles and columns are flattened, a synced block is copied into every page that showed it, and embeds and bookmarks become a bare URL. Comments and page history are not exported at all. - No created or last-edited dates: the files are stamped with the time of the export.
All of that is why the step that matters is not the export but the clean-up, and there are free tools that do it well.
The easiest way
Use Obsidian as the converter, even if you don’t mean to keep it. It is free for personal use, and its official Notion importer strips the codes, repairs the links, turns page properties into front matter and brings the attachments along.
- Export as above, but choose the format HTML: the importer’s zip mode wants it, because Notion’s HTML keeps details its Markdown drops. Run a second export as Markdown & CSV too and keep it: its CSV files are the only portable copy of your databases.
- Install Obsidian and create a new vault in an empty folder. In Settings › Files and links, turn off Use [[Wikilinks]], so that the links come out as standard Markdown links every app reads.
- In Settings › Import, choose Notion, then Notion (.zip), pick the export (each part in turn, if there are several), tick Save parent pages in subfolders, and import. Hundreds of pages take a few minutes.
- Open a few notes. Pictures should show, links between pages should open, and no filename should still end in a 32-character code.
- The vault folder, minus its hidden
.obsidianfolder, is your notes as Markdown files. Keep the original zips as an archive.
On Windows, unpack and import under a short path such as C:\n\: a deep Notion tree with the codes still on its names can exceed Windows’ 260-character path limit.
With a terminal
Work on the Markdown & CSV export, and keep the original zip. notion_sanitizer is a small Python script with no dependencies. It strips the codes from every file, folder and link and undoes the %20 encoding, in the Markdown and the CSV files alike, and leaves the links as the standard Markdown links they were. It wants the zip beside it and writes the result to a data folder:
git clone https://github.com/webmaniak/notion_sanitizer
cd notion_sanitizer
cp ~/Downloads/Export-….zip .
python3 notion_sanitizer.py Export-….zipIt needs Python 3.11 or newer, and it does not resolve two pages with the same title in one folder; it prints an error for each, so read its output. Then confirm nothing was missed:
# Names still carrying a code
find data | grep -E ' [0-9a-f]{32}' | head
# Links still carrying one
grep -rEl '[0-9a-f]{32}' data | headIf you are headed for Obsidian itself, notion2obsidian (it runs on Bun) does the same job with Obsidian’s conventions: wikilinks, callouts as > [!note], front matter with title and tags, and, with an integration token and --enrich, each page’s created and modified dates. Those dates are the one thing the export leaves behind that only Notion’s API can supply, so if they matter to you, that is the way to get them; it is also the only path here that writes them into the front matter, where Skysa Notes reads them.
What to check afterwards
- Links between pages. Open several. A link to a page that was not in the export, or whose title changed after the link was made, is dead and stays dead.
- Pasted pictures. They arrive with the cryptic names Notion gave them, and a picture that lived on another website may not have been downloaded at all.
- Callouts, toggles, columns. Now quotes, flat text and a single column. The content is there; the shape is not.
- Databases. Keep the CSV files. The per-row pages hold each row’s properties as front matter, but relations, rollups and formulas are plain text now, and the views are gone.
- Duplicate titles. Two pages called “Meeting notes” in one folder become two files that want the same name. Every tool handles this differently; make sure both survived.
Then bring them into Skysa Notes
Once you have a folder of Markdown files, the rest takes a minute, and it works the same whether you use the free app on one device or have storage connected.
- Open Skysa Notes. In the storage panel, open the menu (the gear, or the ⋯ beside a source) and choose Import a folder, then pick the folder the converter made. Import files takes a zip or loose .md files instead.
- The app shows what it will add and asks first. Nothing already there is changed or replaced; a name that is taken gets a number.
- The folder’s subfolders become notebooks, as deep as they nest. Every .md file becomes a note. Every other file, pictures and PDFs included, is kept beside the notes at its own path, so a note’s
still shows the picture.
Titles and dates. A note’s title is the title in its front matter, else its first heading, else its filename. Its dates are the front matter’s created and updated (modified, date created, date modified and lastmod are read too), which is why the guides favour converters that write them: a note without them is dated the day you import it. A tags list in the front matter is searchable. Front matter and the rest of the file are kept byte for byte until you next edit the note.
What renders. CommonMark and GitHub-flavoured Markdown: headings, lists, tables, task lists, strikethrough, footnotes, code, and HTML left as written. Not rendered: [[wikilinks]], math and Mermaid diagrams, and a note with reference-style links opens as raw Markdown. Callouts show as plain quotes. Files larger than 25 MB, and hidden files and folders (names starting with a dot), are left out.
On Dropbox there is a second way in: copy the folder into Apps/skysa-notes with the Dropbox desktop app, and the notes sync in. On Google Drive the app can see only the files it made itself, so use Import there.