AltFreeStack
Migration guide

How to migrate from Notion to AFFiNE

Notion's Markdown export carries the text over fine, but relational databases arrive as flat CSV — and {to} adds something {from} doesn't have natively: an infinite whiteboard on the same canvas as your documents.

  1. 1

    Before exporting: audit which databases use relations

    In Notion, check which databases have "Relation" or "Rollup" columns — they'll lose the connection on export. Note which tables are related to each other, since the exported CSV doesn't show it explicitly.

  2. 2

    Export the full workspace from Notion

    Go to Settings & members → Settings → Export content → "Export all workspace content", choose Markdown & CSV format, and include attachments. Notion generates a .zip with one folder per top-level page.

  3. 3

    Deploy AFFiNE via Docker Compose

    AFFiNE needs PostgreSQL and Redis (see its docker-compose.yml). Before importing anything, start the stack and confirm the web/desktop client connects correctly to your server.

  4. 4

    Import the Markdown .zip into AFFiNE

    With the workspace already open in AFFiNE, import the exported .zip. Text and page hierarchy are rebuilt, but each database .csv comes in as a new table without the relations reconstructed.

  5. 5

    Rebuild relations and explore the whiteboard

    Using the list from step 1, manually recreate each relation between databases in AFFiNE. Then try the built-in infinite whiteboard — it's the feature Notion doesn't offer natively, and the most common reason to migrate, not a conversion of existing content.

Before cancelling Notion

Before cancelling Notion, compare the number of top-level pages between both spaces and confirm images and attachments imported correctly. AFFiNE's official self-host still evolves quickly between versions — review the changelog before each update and keep a recent backup of the Postgres volume.

Ready to deploy AFFiNE?

Full profile with license, tech stack and ready-to-copy docker-compose.

View AFFiNE's profile

These steps are a general guideline — the exact export menu can vary depending on Notion's plan and version.

Frequently asked questions

Can I import my Notion databases with relations into AFFiNE?

Not automatically. The exported CSV arrives as a flat table without relation or rollup columns — you'll need to manually recreate those connections in AFFiNE after importing.

What does AFFiNE offer that Notion doesn't?

An infinite whiteboard built into the same canvas as your documents, for diagrams or visual brainstorming without leaving the app — Notion has no native equivalent.

Is it stable enough for a production team?

AFFiNE's official self-host still evolves quickly between versions. It's a solid choice for personal use or small teams that don't depend on a long-term stable API or integration; take frequent backups of the Postgres volume.