Zero Hostage

How to Get Your Writing Out of Notion

Key Takeaway

Notion’s export is not broken. It is faithful to Notion — it hands back what Notion was computing for you, flattened into text, with a 32-character code welded to every filename. If you write long-form, the thing you need back is the structure, and the structure is the part that does not survive.

What Notion’s Export Actually Gives You

Settings → Export content → Markdown & CSV. A zip file arrives, by download or by email if the workspace is large. Everything below is verifiable in ten minutes by doing it yourself, which is the only kind of claim worth making about someone else’s software.

Every page becomes a .md file with a 32-character hexadecimal code appended to its name, so “Chapter One” comes back as Chapter One a4b2f90134d456789abcdef12345678.md. Every page that has sub-pages also becomes a folder — same name, same code. Every database becomes a .csv file plus a folder holding one page per row. Images and attachments land in a folder named after the page they were on.

The code is not decoration. It is the page’s id, and Notion uses it to rewrite your internal links so they point at real files on disk. That single design decision explains almost everything people run into afterwards.

What Survives, and What Does Not

Your prose survives. Headings, bold, italic, lists, quotes, code blocks, in-page tables, and images as relative links all come across as ordinary Markdown. If all you ever did in Notion was write paragraphs, the export is genuinely fine and you do not need a tool.

What does not survive is the part Notion was computing for you: database views, filters, sorts, rollups, and formulas. There is nothing to write down — those were live calculations, not stored text. Comments do not come. Page history does not come. A synced block arrives as a copy, no longer synced to anything.

And here is the correction I owe anyone who read the older version of this claim on our own home page: internal links do not always break. If you export the entire workspace, they resolve — every target file exists with exactly the name the rewritten link expects. Links break in two specific situations, and it is worth knowing which, because both are avoidable.

The first: you exported part of the workspace instead of all of it, so a link points at a file that is not in the zip. The second, and this is the cruel one: you tidied up afterwards. Stripping those ugly codes out of the filenames is the first thing anybody wants to do, and it silently breaks every link in the export, because the link was written to the old name.

The Trap Nobody Warns You About

On Windows, every level of nesting costs you a folder name plus 33 characters of id. A deep Notion tree — a book, inside a project, inside an area, with sub-pages under each chapter — runs past the 260-character path limit before you reach the writing.

The files at the bottom do not arrive. They do not error, either. They are simply not there when you unzip, and unless you were counting pages you will not notice for months.

The fix is unglamorous: extract to somewhere near the root of the drive (a folder like C:\notion, right off the drive root), or turn on long path support, or unzip with 7-Zip, which handles it. Do this before you look at anything else, or you will spend a week reorganising an export that is already missing pages.

Doing It by Hand: The Honest Version

You do not need a tool for this. You need a method, and you need to do the steps in this order — the order is the whole trick.

  1. Export the whole workspace, not the page you care about. Links only resolve when every target is inside the same zip.
  2. Choose Markdown & CSV. Set “Include content” to Everything, and leave “Create folders for sub-pages” on.
  3. Extract close to the root of your drive, before you open anything. If you are on Windows, use 7-Zip.
  4. Count your pages against the zip before you touch it. A missing page is much easier to explain now than after you have moved things.
  5. Do not rename anything yet. Read the tree first and decide what you actually want to keep. Most of a four-year workspace is not writing.
  6. Strip the ids last, and only with something that rewrites the links in the same pass. Renaming first is the one irreversible mistake in this list.
  7. Decide what a chapter is. Notion has no such concept — a book in Notion is a folder of pages — so this part is yours to invent, and it is the part that takes the time.
  8. Move the prose you write into a flat, boring structure you will still be able to read in ten years. Folders and files. Nothing clever.

What Happened When I Tried

I had four years of daily writing inside Notion. Hundreds of pages. A book in progress, journal entries, research notes — everything I had thought about since I started taking writing seriously.

When I tried to leave, I got the zip. Inside it: nested folders, codes on every filename, and Markdown files that had lost the shape I had put them in. Four years of careful organisation, technically all present, and unusable as a body of work.

I spent weeks piecing it back together. Not because Notion had done anything malicious — the export is honest about what Notion is — but because my writing had never really lived in that model, and the export handed me back the model rather than the writing.

That is what convinced me that the import tool matters as much as the editor. An app you cannot leave is not a tool you own, and an app that makes leaving technically possible but practically exhausting has found a way to hold you without ever saying so.

What Liberation Does Instead

Liberation does not use the zip at all. It talks to the Notion API using an integration token you create yourself, inside your own workspace, and revoke the moment you are finished. Wretify never registers as an application with Notion, so Notion never learns that we exist. The key is yours; so is the access.

Before anything moves, it scans. It walks the workspace without downloading a single page of content and comes back with an inventory of every page and database, a map of every id to its human title, a compatibility check on every block type it found, and an estimate of how long the move will take. You see the report before you decide.

Then it converts, page by page, and heals the links as it goes: [[a4b2f901-34d4-…]] becomes [[Character Notes]]. Human titles, not robot codes. Anything it cannot resolve is marked in the text rather than quietly dropped, because a link you can see is broken is worth more than a link that silently is not there.

Every page is written the moment it is converted, and checkpointed. If the laptop sleeps at page 300 of 900, you resume at 301 rather than starting again.

The files land in your own Google Drive, as plain Markdown. Not in our database — we do not have one for your words.

Before — Notion export
Notion-Export-2024-03/
├── My Book a3b8f1.../
│   ├── Untitled.md
│   ├── Untitled (1).md
│   ├── Page 7c2de4....md
│   └── Chapter abc9....md
├── Random notes 4f.../
│   ├── 2c8a1f....md
│   └── Untitled (2).md
├── images/
│   └── ... relative links
└── README.md
After — your Drive
Wretify/
├── Books/
│   └── Quiet Hours/
│       ├── Chapter 1.md
│       ├── Chapter 2.md
│       ├── Chapter 3.md
│       └── Chapter 4.md
├── Articles/
│   ├── On Solitude.md
│   └── The Morning Hour.md
└── Journal/
    ├── 2024-03-12.md
    └── 2024-03-11.md

Where Your Writing Lives Afterwards

In your Google Drive, as files with names you chose, readable by any text editor on any machine, with or without us. If Wretify disappeared tomorrow you would lose a writing room, not a manuscript.

We call that Zero Hostage, and it is the reason the import tool exists at all. It would be incoherent to build an escape route out of someone else’s software and then quietly build a lock on our own.

What It Costs

Liberation is free and unlimited. Import as many books, articles and notes as you want, as many times as you want. There is no per-page fee and no import tier, because charging someone to rescue their own writing would be the exact behaviour this whole article is about.

Wretify itself is $7 a month. First 1,000 get three months free, with no card — long enough to move four years of work and decide honestly whether the room suits you.

Frequently asked questions

Does Notion’s export break my internal links?

Not always. If you export the entire workspace, Notion rewrites internal links to relative file paths and they resolve, because every target file is in the zip. They break in two situations: you exported only part of the workspace, so a link points at a file that was not included; or you renamed the files afterwards, which breaks the rewrite the link depends on.

Why do my exported files have long codes in their names?

That is the page id — 32 hexadecimal characters. Notion appends it to every filename and folder name so that rewritten internal links have something unambiguous to point at. Removing the codes is safe only if you rewrite the links in the same pass.

Some files are missing after I unzip the export. Where did they go?

Most often this is the Windows path limit. Every level of nesting adds a folder name plus 33 characters of id, and a deep tree runs past the 260-character maximum. The files at the bottom fail to extract without an error. Unzip to a folder near the drive root, enable long path support, or use 7-Zip.

Do Notion databases survive the move?

The rows do — each database becomes a CSV file plus a folder holding one page per row. The views, filters, sorts, rollups and formulas do not, because those were live calculations rather than stored text. Comments and page history do not come either.

Does Wretify need access to my whole Notion workspace?

It needs whatever you share with the integration token you create yourself, inside your own workspace. You create the token, you choose the pages, and you revoke it when the move is finished. Wretify never registers as an application with Notion, so Notion is never told we exist.

Is the import limited by page count or plan?

No. Liberation is free and unlimited — as many books, articles and notes as you like, as many times as you like. Charging someone to rescue their own writing would contradict the reason the tool exists.

What happens if the import is interrupted?

Every page is written to your Drive the moment it is converted, and checkpointed. If the machine sleeps at page 300 of 900, you resume at 301 rather than starting over.

Where does my writing end up?

In your own Google Drive, as plain Markdown files with names you chose, readable in any text editor with or without Wretify. There is no Wretify database holding your words.

← PreviousZero Hostage ArchitectureNext →Why Focus Mode Dims Everything