You have spent months building a knowledge base in Roam Research, but now you want to move that data into Notion for better team collaboration, database flexibility, or a simpler interface. The core challenge is that Roam stores data as a graph of linked blocks, while Notion uses a page-and-database structure with properties. This article explains the complete migration process, including exporting your Roam data, cleaning and restructuring it, and importing it into Notion so that your notes, links, and tags remain usable.
Key Takeaways: How to Migrate From Roam Research to Notion
- Roam Export > JSON or Markdown: Use Roam’s built-in export to create a JSON file for structured data or Markdown for simpler content.
- Notion Import > Markdown or CSV: Notion can directly import Markdown files and CSV tables, but JSON requires a third-party converter.
- Manual restructure > Relations and Databases: After import, reorganize pages into Notion databases with properties and relations to preserve Roam’s link structure.
Understanding the Migration Challenge: Roam Graph vs Notion Pages
Roam Research stores all content as individual blocks that can link to any other block, creating a bidirectional graph. Notion organizes content into pages and databases, where pages can contain blocks and databases store structured records with properties. The fundamental difference means that a direct one-click migration is not possible. Roam’s block references, block embeds, and daily notes patterns do not map cleanly to Notion’s page-based hierarchy.
When you export from Roam, you get either a JSON file that preserves block-level structure or a folder of Markdown files that flattens the content. Notion can import Markdown files and CSV files, but it cannot import Roam’s JSON format natively. You will need to use a third-party converter like Notion Converter or a manual process to transform the data.
What Roam Features Will Not Transfer
Roam’s block-level references and block embeds are lost during migration. In Notion, you can create page links and database relations, but you cannot link to a specific block inside a page. Roam’s daily notes template system also does not exist in Notion. You will need to recreate daily notes as a Notion database with a date property. Roam’s attributes and queries are not supported; you must replace them with Notion database filters and formulas.
Steps to Export and Import Your Roam Data Into Notion
Follow these steps to move your content from Roam Research to Notion. The process has three phases: export from Roam, convert the data, and import into Notion.
- Export your Roam graph as JSON
Open Roam Research. Click the three-dot menu in the top-right corner. Select Export All. Choose the JSON format. This exports your entire graph as a single JSON file containing all blocks, links, and metadata. Save the file to your computer. - Convert the JSON to Markdown or CSV
Notion cannot import Roam JSON directly. Use a third-party converter such as Notion Converter (notionconverter.com) or Roam-to-Notion (roamtonotion.com). Upload your JSON file to the converter. The tool will generate a ZIP file containing Markdown files for each page and a CSV file for database structures. Download the ZIP file. - Prepare Notion for import
Open Notion. Create a new page to serve as the root folder for your imported content. Name it something like “Roam Archive.” This keeps the imported data separate from your existing Notion workspace. You can move pages later. - Import the Markdown files into Notion
In Notion, go to Settings & Members in the left sidebar. Click Settings. Under Workspace, click Import. Select Markdown & CSV. Upload the ZIP file you downloaded. Notion will create a new page for each Markdown file. The page titles come from the file names. The content inside each page is preserved as blocks. - Import the CSV file as a database
If the converter generated a CSV file for daily notes or structured data, import that separately. In Notion, go to Settings & Members > Settings > Import. Select CSV. Upload the CSV file. Notion will create a database table with the columns from your CSV. Each row becomes a database item. - Recreate links between pages
Roam’s internal links become plain text after export. You must manually recreate them as Notion page links. Open each page and type the @ symbol followed by the page name to create a link. For large graphs, use the Find All feature in Notion to search for link text and add links in bulk. - Restructure into databases
Convert flat pages into Notion databases for better organization. For example, create a Notes database with properties for Date, Tags, and Status. Move each page into the database by creating a database item and pasting the page content into the body. Use the Relation property to link items to each other.
Alternative Method: Export Roam as Markdown Only
If you do not need block-level structure, export Roam as Markdown. In Roam, click the three-dot menu, select Export All, and choose Markdown. You will get a ZIP folder with one Markdown file per page. Import that ZIP directly into Notion using the Markdown & CSV import option. This method is faster but loses block references and metadata.
Common Migration Problems and How to Solve Them
Imported Pages Have Broken Block References
Roam’s block references appear as (()) syntax in the exported JSON. After conversion, these references become plain text. Notion does not support block-level references. You must replace them with page links. Use Notion’s search function to find all instances of the reference text and manually link to the target page.
Daily Notes Are Missing or Disorganized
Roam exports daily notes as individual Markdown files named by date. When imported into Notion, they become separate pages. To organize them, create a Notion database with a Date property. Move each daily note page into the database by creating a new database item, setting the Date property to the corresponding date, and pasting the content into the page body. Use database views to display them as a calendar or timeline.
Tags From Roam Become Plain Text
Roam tags (#tag) become plain text after export. In Notion, tags work as database properties. Create a Tags property in your database. For each item, add the appropriate tag by typing in the Tags field. If you have many tags, use the Find All feature to search for each tag word and update the property in bulk.
Roam Research vs Notion: Key Structural Differences
| Item | Roam Research | Notion |
|---|---|---|
| Content unit | Block (any paragraph or heading) | Page (top-level container) and block (inside a page) |
| Linking system | Bidirectional block references and page links | Page links and database relations |
| Data organization | Daily notes with block-level outliner | Databases with properties, views, and templates |
| Export format | JSON or Markdown | Markdown, CSV, or HTML (import only) |
| Block references | Supported natively | Not supported |
| Query system | Datalog queries | Database filters and formulas |
The table shows that Roam’s block-level granularity does not exist in Notion. You must accept that block references and Datalog queries will not transfer. Instead, you will use Notion’s database properties and filters to achieve similar results. Plan to spend time restructuring your data after the import.
You can now move your Roam Research content into Notion using the export, convert, and import steps described above. After import, focus on linking pages manually and creating databases for daily notes and tagged content. For a smoother experience, use the Notion Converter tool to handle the JSON conversion. Once you have your data in Notion, explore database formulas and rollup properties to recreate the analytical capabilities you had in Roam.