How to Import a Roam Research Graph Into Notion Preserving Backlinks
🔍 WiseChecker

How to Import a Roam Research Graph Into Notion Preserving Backlinks

You want to move your Roam Research graph into Notion without losing the connections between your notes. Roam Research uses bidirectional links and block references that do not map directly to Notion’s database structure. This article explains the exact steps to export your Roam graph, transform the data into a Notion-compatible format, and import it so that backlinks remain functional as linked references. You will also learn how to verify that the links survived the migration.

Key Takeaways: Importing Roam Research to Notion with Backlinks Intact

  • Roam Research > Export All Pages as Markdown: Exports your graph with plain text and [[wiki links]] that can be parsed.
  • Markdown-to-Notion converter tool: Transforms Roam’s [[wiki links]] into Notion’s page mention syntax ([[Page Name]]).
  • Notion Import > Markdown & CSV: Accepts the converted files and automatically creates linked references between pages.

ADVERTISEMENT

How Roam Research Links Differ From Notion Links

Roam Research stores connections as block-level references. When you type [[Page Name]], Roam creates a bidirectional link that appears in both the source page and the target page’s linked references section. Notion uses page mentions ([[Page Name]]) within database page content or inline text, and it displays backlinks in the “Linked References” section of the target page. The key difference is that Roam can link to individual blocks, while Notion links only to entire pages. To preserve backlinks during migration, you must convert Roam’s block references to page-level mentions and ensure every [[wiki link]] points to a page that exists in the import.

What Gets Lost and What Stays

Roam block references (e.g., ((block-id))) do not have a Notion equivalent. These will be removed during conversion unless you manually replace them with page mentions. Roam tag references (e.g., #tag) can be converted to Notion page mentions if you create a page for each tag. Daily notes in Roam become individual Notion pages. Attributes (e.g., Attribute:: Value) can be stored as Notion database properties if you choose a structured import format like CSV. The core bidirectional links between pages, however, survive the conversion if you use the correct tool.

Steps to Export and Convert Your Roam Graph

  1. Export all pages from Roam Research
    In Roam, go to the top-right menu (three dots) and select Export All. Choose “Markdown” as the format and “Include all pages” as the scope. Roam will download a ZIP file containing one .md file per page plus an EDN file. The .md files contain [[wiki links]] that reference other pages.
  2. Unzip the export and inspect the file structure
    Extract the ZIP to a folder. You will see a folder named “pages” with all .md files. Open any .md file to confirm that links appear as [[Page Name]] without extra formatting. If you see ((block-id)), those references will be stripped in the next step.
  3. Use a conversion tool to transform links
    Open a tool like Roam-to-Notion (roam-to-notion.netlify.app) or a local Python script such as roam-to-notion-converter. Upload the entire “pages” folder. The tool will parse each [[wiki link]] and generate a CSV file where each row represents a page with a “Name” column and a “Content” column. The content will have [[Page Name]] syntax that Notion understands. Block references and unsupported markup are removed.
  4. Download the converted CSV file
    After processing, the tool provides a single CSV file. Open it in a text editor to verify that the first row contains headers like “Name” and “Content”. Every subsequent row should have a page name and its body text with [[mentions]].

ADVERTISEMENT

Import the Converted CSV Into Notion

  1. Create a new Notion page for the import
    Open Notion and create a new empty page. Give it a title like “Roam Import”. This page will hold the imported database.
  2. Choose Import from the page menu
    Click the three-dot menu at the top-right of the new page. Select Import and then choose CSV. Notion will open a file picker.
  3. Select the converted CSV file
    Locate the CSV file from the conversion tool and select it. Notion will display a preview showing the columns “Name” and “Content”.
  4. Configure the import settings
    In the import dialog, make sure the “Name” column is mapped to the page title. The “Content” column should be mapped to the page body. Leave other settings at their defaults. Click Import.
  5. Wait for Notion to process the import
    Depending on the number of pages, this may take a few minutes. Notion will create one database page per row. Each page will have its title and body text with [[mentions]].
  6. Verify that backlinks appear
    Open any imported page and scroll to the bottom. You should see a “Linked References” section listing pages that mention this page. If you see no references, the [[wiki links]] may have been mistyped or the target page name does not match exactly.

If Notion Import Fails or Links Are Missing

Converted CSV shows blank content

The conversion tool may have stripped all content if your Roam export contained unsupported block types like code blocks with special characters. Re-export from Roam using “Markdown” and ensure you did not include any custom CSS or scripts. Run the conversion again.

Backlinks point to the wrong page

Notion matches page mentions by exact page title. If your Roam graph used trailing spaces or punctuation in page names, the conversion tool may have preserved them. Edit the CSV file in a spreadsheet and trim the “Name” column values. Re-import.

Block references ((block-id)) did not convert

Roam block references have no Notion equivalent. The conversion tool removes them. To preserve the information, copy the content of the referenced block into the source page manually before exporting. Alternatively, use a script that replaces ((block-id)) with the block’s text during conversion.

Roam Research Export vs Notion Import: Format Differences

Item Roam Research Export Notion Import
File format Markdown (.md) and EDN CSV or Markdown
Link syntax [[Page Name]] and ((block-id)) [[Page Name]] only
Block references Preserved as ((id)) Not supported
Tags #tag Converted to [[tag]] if target page exists
Attributes Attribute:: Value Lost unless using CSV with columns

You can now move your Roam Research graph into Notion while keeping the backlinks that connect your notes. After import, open a few pages and confirm that the Linked References section shows the expected mentions. To refine the structure, consider grouping related pages into Notion databases with custom properties. For a more advanced workflow, use the Notion API to programmatically verify that every [[mention]] resolves to an existing page.

ADVERTISEMENT