Moving My Daily Note-Taking from Notion to Obsidian: Here's Why and How

I recently migrated my daily note-taking app from Notion, which I had been using for years, to Obsidian. In this post, I’ll share why I used Notion in the first place, how I managed the migration, and my experience with Obsidian so far.

My Note-Taking Journey

Since I don’t have the best memory, I take notes on almost everything. I keep track of every novel, nonfiction book, and tech book I read, alongside notes on programming languages and various IT concepts.

Regarding the tech notes, the sheer volume has decreased lately because I often offload code generation to LLMs. Still, I find value in writing things down to capture my current level of understanding. For instance, if I ask an LLM about TCP/IP, it will output a highly detailed explanation. However, if that explanation goes way beyond my current comprehension, I can’t fully digest it. That’s why I like to filter that information—writing down what I already understand plus the new things I’ve just learned.

My note-taking journey started back in college. At the time, I used Bookmeter to track my reading list and OneNote to store book reviews and deeper notes. Right before entering the workforce, I switched to Notion, and now, I’ve finally migrated to Obsidian.

The Notion Era

I originally jumped onto Notion because I wanted to centralize all my notes in one place, and it just felt more intuitive than OneNote.

My first PC in college was a Windows machine, which is why I initially picked OneNote. While it was great because I could access it via both the app and the web, the formatting options felt a bit bloated for my needs. All I really wanted was to create headings, insert images, and search through my notes. On top of that, its keyword search was a bit weak at the time, and I had a nagging feeling that its proprietary file format would make migrating to another app a nightmare down the road.

That’s when I discovered Notion. It supported Markdown, allowed image embeds, and had a solid search feature. I thought, “This is exactly what I need.”

The deal-breaker for me was that Notion allowed you to export your content. After seeing that it exported to Markdown, I was reassured that if I ever wanted to switch apps in the future, I could manage it. Plus, the Database feature was incredibly handy for filtering books by genre or rating, and easily tracking how many books I read each year. So, Notion became my go-to for a long time.

From Notion to Obsidian

I used Notion for over five years with no major complaints. When I started, the free plan had a block limit, so I paid for a premium subscription. However, at some point, the block limit was removed for personal use, making the free tier more than enough for my workflow. Having the Notion app on both my Mac and iPhone made syncing and accessing my notes across devices seamless.

Since the core features already met my needs, I didn’t pay much attention to new feature announcements. Whether it was AI-generated notes, brainstorming assistants, or the agentic features of Notion AI, none of them fit into my workflow. As Notion evolved into a heavy-duty collaboration tool for teams and companies, a gap started growing between the tool’s direction and my use case as a solo note-taker.

Ultimately, two major shifts pushed me over the edge:

  1. AI Agent (MCP) Compatibility Lately, when referencing my notes, I’ve wanted to interact with them via AI Agents using MCP (Model Context Protocol). For example, I might want an Agent to look at my reading history and recommend my next book. While there is a Notion MCP Server, the way Notion treats everything as a “block” means the API responses are incredibly bloated. Since you want to keep context windows as lean as possible when working with Agents, this redundant metadata was a huge bottleneck.
  2. Data Sovereignty As my knowledge base grew, storing thousands of personal notes exclusively on an external SaaS platform started making me anxious. “Data sovereignty” might sound a bit dramatic, but after hearing stories like Google Photos banning accounts due to automated false positives on family pool photos, the risk of losing access to my own data overnight felt real.

That’s when I turned my attention to Obsidian. It supports Markdown, handles images smoothly, and the local search is blazing fast. Best of all, it stores everything as plain files on my local machine—giving me 100% data sovereignty. I couldn’t easily replicate Notion’s native databases, but I realized I could live without them. The benefits of a local-first system far outweighed the downsides, so I decided to make the switch.

The Migration Process

I found out later that there’s an official importer plugin. Since I didn’t know that at the time, I handled the migration in two steps: exporting the data from Notion and writing a script to import it into Obsidian. Since most of my existing notes were already close to plain Markdown, it was a relatively smooth process.

Exporting the Content

I simply followed the steps in Notion’s official help guide to export my workspace. The total size was 42.8MB, spanning around 3,700 files.

Writing a Script and Importing to Obsidian

Since the raw exported files had a few quirks, I wrote a script to clean them up before importing them into Obsidian. The script handled:

  • Fixing relative paths for images
  • Adding tags to the Front Matter (metadata)
  • Replacing internal links between notes

Doing this manually would have been an absolute nightmare, so I used the Obsidian Local REST API to batch-import everything programmatically.

As for Notion’s databases, they export as CSV files. Simply recreating them as static tables in Obsidian didn’t make much sense since they wouldn’t link dynamically to my markdown files. Instead, I decided to handle this using the Obsidian Dataview plugin.

To build the migration script, I leaned heavily on the Gemini CLI 1. Since it was a one-time throwaway script, I didn’t read a single line of the code myself. I just pointed it to the exported folder and kept giving it prompts until the migration worked perfectly. When I first started using Notion, I hoped that migrating away would be doable, but actually doing it manually would have been exhausting. I’m incredibly glad we live in the age of LLMs.

Backup Strategy (Saving to NAS)

Storing my notes exclusively on my MacBook’s local drive made me a bit nervous about durability, so I back them up to my NAS. I ran git init --bare on the NAS to set it up as a remote repository, and I manually push my vault whenever I think about it.

Compared to the Notion era, I’ve lost the effortless mobile syncing and editing on my iPhone, but for now, I’m perfectly fine treating this as a Mac-primary setup. The availability is technically lower than a cloud SaaS, but hey, “it works for me” 2.

Conclusion

It’s been a while since I migrated to Obsidian, and so far, I’m loving it. There are absolutely no complaints. Keeping my knowledge base in simple, local text files (Markdown) has given me the ultimate peace of mind: knowing that if I ever need to switch tools again in the future, it will be a breeze.


  1. Note: The Gemini CLI is now EOL. The official guide recommends using the Antigravity CLI instead↩︎

  2. I eventually plan to set up a cron job to sync the NAS to Cloudflare R2 or a similar service, but I haven’t gotten around to it yet. ↩︎