Lightning Fast
Migrate your entire workspace in seconds. Batch processing with concurrent operations handles thousands of files effortlessly.
Fast Notion to Obsidian migration.
Clean, simple, minimal dependencies.
Migrate your entire workspace in seconds. Batch processing with concurrent operations handles thousands of files effortlessly.
Extract and migrate zip files in one command. Preview changes with dry-run mode. No manual extraction, no backups cluttering your workspace.
Smart link conversion, auto-tagging, frontmatter generation, callout conversion, database processing with Dataview support, and duplicate handling. Everything works in Obsidian from day one.
Making the switch to Obsidian for better performance, offline access, or local-first control? Migrate your entire workspace in seconds.
Years of notes in Notion but want Obsidian's graph view, backlinks, and plugin ecosystem? Keep your structure intact during migration.
Need a scriptable, CLI-based migration that you can run on multiple exports or integrate into workflows? Built for the command line.
Removes 32-character Notion IDs from files and directories
Generates YAML metadata including title, tags (auto-generated from folder structure), and Notion IDs
--- title: "My Document" tags: [projects, work] notion-alias: - "My Document 2d6fa1e585714845" notion-id: "2d6fa1e585714845be81f7d5ca30194a" published: false ---
Transforms markdown links to Obsidian wiki links
Uses folder context to disambiguate files with identical names
folder: "Work/Projects"
Moves markdown files into their attachment folders and simplifies image paths
Transforms Notion callouts with icons to Obsidian format
Creates clean CSV files with Dataview-compatible index pages showing all records
Default structure: Tasks.csv (clean file) Tasks_Index.md (Dataview query) Tasks/_data/ (individual pages) ๐ฆ Requires: Dataview plugin
Why Bun? This tool is built with Bun, a modern JavaScript runtime that's significantly faster than Node.js. Bun handles thousands of files in seconds and provides native TypeScript support. Installing Bun takes just one command and won't interfere with your existing Node.js setup.
Bun is a fast JavaScript runtime. If you already have it, skip to step 2.
curl -fsSL https://bun.sh/install | bash
Install the tool globally to use it anywhere.
bun install -g notion2obsidian
In Notion: Settings & Members โ Export โ Export all workspace content โ Markdown & CSV
Point to your downloaded zip file with optional output directory.
notion2obsidian Export-*.zip ~/Documents/Obsidian
--dry-run
Create a new vault and install the Dataview plugin for database features.
Your original .zip file is never modified. The tool extracts it to a temporary location, moves files to the output directory (specified with -o
or created next to the zip), then cleans up the temp folder. The migration modifies only the output directory. Use --dry-run
to preview changes before committing.
The tool handles duplicates in two ways:
Work/Projects/README.md: --- folder: "Work/Projects" --- Personal/Notes/README.md: --- folder: "Personal/Notes" ---
Untitled 888cfab6.md โ Untitled-1.md Untitled 85f75240.md โ Untitled-2.md Untitled 985c88c5.md โ Untitled-3.md
No! Just point notion2obsidian at the .zip file and it will extract and migrate in one step.
All images, PDFs, and other attachments are preserved and organized. Files with attachments are moved into their attachment folders for better organization:
My Document.md My Document 2d6fa1e5/ image1.png image2.png
My Document/ My Document.md โ moved inside image1.png image2.png
My%20Document/image.png
to just image.png
For database features: Install the Dataview plugin to view and query your Notion databases. Without it, database index pages will only show raw query code instead of interactive tables.
For cover images (with --enrich): Install the Obsidian Banners plugin to display cover images enriched from Notion. Covers are downloaded to _banners/
folder.
For icons (with --enrich): Install the Iconize plugin to display emoji and image icons enriched from Notion. Emoji icons work immediately; image icons are downloaded and configured automatically.
Install in Obsidian: Settings โ Community plugins โ Browse โ Search plugin name โ Install & Enable
The --enrich
flag adds creation dates, last edited times, public URLs, and downloads cover images from Notion. Here's how to set it up:
ntn_
for new tokens)export NOTION_TOKEN="ntn_xxx"
# For bash echo 'export NOTION_TOKEN="ntn_xxx"' >> ~/.bashrc source ~/.bashrc # For zsh echo 'export NOTION_TOKEN="ntn_xxx"' >> ~/.zshrc source ~/.zshrc
cd ~/Documents/Obsidian/MyVault notion2obsidian . --enrich
Yes. Your original .zip file is never touched. Simply delete the output directory and run the migration again to start fresh. The tool automatically cleans up temporary files, so you only need to manage the output directory.