EASY Roam to Tana Migration
Based on CortexFutura Tools's video on YouTube. If you like this content, support the original creators by watching, liking and subscribing to their content.
Use “Export all” in Roam and choose “Json” to preserve multi-layer link relationships; avoid flat “export” output.
Briefing
Migrating a Roam Research graph into Tana is presented as a fast, low-friction process—provided the export/import settings preserve link structure. The core workflow is to export the Roam graph as a full JSON bundle (not a flat export), then import that JSON into Tana via the import content flow. Done correctly, Tana brings over the graph as a separate workspace containing nodes, backlinks, and most content formatting, while leaving the user’s existing Tana graph untouched.
The transcript walks through a practical example of a Roam daily-page graph: daily notes with linked pages, question/claim/evidence structures, bold inline references, imported Readwise content with attributes (author, title, tweet text, image link), and even a local-image case where the asset exists only on the user’s machine. In Roam, the export step is the critical hinge. Using the three-dot menu, the user must choose “Export all,” then select “Json,” and export the full bundle. The alternative—choosing “export” instead of “export all”—produces a flat export that loses the multi-layer link relationships between pages.
After unpacking the exported zip, the import happens in Tana through the gear menu: “import content,” then selecting “roam.” Tana prompts for the JSON file and shows counts such as total nodes and leaf nodes before importing. The import is described as stable, though duration depends on graph size.
Once imported, Tana creates a new workspace (named by the user) rather than overwriting the main graph. Inside that workspace, daily nodes are tagged and organized under a calendar node, with daily entries linking to the same related pages that existed in Roam. Pages from Roam become nodes in Tana, and Roam “attributes” become Tana “fields.” Inline formatting like bold is carried over, and backlinks translate cleanly—so references that Roam maintained as link-based relationships remain navigable in Tana.
Not everything transfers perfectly. Some Roam extension features don’t map cleanly into Tana’s current model. For example, content imported from the Discourse Graph extension retains question/claim/evidence links, but the deeper semantic relationships tied to that extension may not transport as expected, requiring manual rework. Another limitation is local assets: images that were local to Roam don’t import, resulting in empty pages when clicked in Tana.
To integrate imported content into the main Tana graph, the transcript describes enabling cross-workspace content access. In the main graph, the user must allow content from the imported workspace, then search and reference nodes from that library. Content can also be moved into the main workspace node-by-node, making it easy to rework and extend the migrated material.
Overall, the migration is framed as under 10 clicks if the export is done correctly and the user understands what maps (nodes, fields, backlinks, most formatting) versus what doesn’t (extension-specific semantics and local images).
Cornell Notes
Roam-to-Tana migration works best when the Roam export preserves link structure: choose “Export all” and export as “Json,” not a flat export. Tana imports the JSON into a new workspace, keeping the main graph safe while translating Roam pages into Tana nodes and Roam attributes into Tana fields. Backlinks and inline formatting like bold carry over, and daily notes appear under a calendar with tagged daily nodes. Some items don’t translate perfectly—especially Discourse Graph extension semantics and local images—so those may require manual cleanup. Imported content can then be referenced from the main graph (after enabling workspace access) or moved into the main workspace for further editing.
Why does “Export all” matter more than “export” when moving from Roam to Tana?
What does Tana create after importing a Roam graph, and how is it organized?
How do Roam “pages,” “attributes,” and backlinks map into Tana?
What formatting and content elements transfer cleanly, and what doesn’t?
What happens to images that were local assets in Roam?
How can imported library content be used inside the main Tana graph?
Review Questions
- When migrating, what specific export choices in Roam prevent link relationships from being lost in Tana?
- Which Roam concepts map directly to Tana nodes and fields, and which two categories of content are likely to need manual attention after import?
- How does enabling cross-workspace content access change what appears when searching from the main Tana graph?
Key Points
- 1
Use “Export all” in Roam and choose “Json” to preserve multi-layer link relationships; avoid flat “export” output.
- 2
Import the resulting JSON into Tana via the gear menu using “import content” → “roam,” then import into a new workspace.
- 3
Expect Roam pages to become Tana nodes and Roam attributes to become Tana fields, with backlinks translating cleanly.
- 4
Plan for imperfect translation of extension-driven semantics (e.g., Discourse Graph extension relationships) and be ready to rework them.
- 5
Local Roam images that aren’t available online won’t import; they may produce empty pages when clicked in Tana.
- 6
To use imported content in the main graph, enable workspace content access and then reference or move nodes into the main workspace.