Why I Switched My Blog's Backend to Notion

3 min read

A developer's journey from a traditional static site to using Notion as a headless CMS. This post explores the pros and cons of different CMS options like Payload CMS and WordPress before settling on the Notion API for a more flexible and mobile-friendly blogging workflow.

Update (2025-07-28): I've since switched back to using Markdown files. You can read about why in my new post, Back to Markdown.

While the JavaScript community is buzzing about static websites, I always found it really interesting that Remix went out and made their website dynamically fetch and render versioned content from GitHub.

I don't want anything too fancy, but I was starting to feel the pain of a static website. This site is something I work on in my limited spare time. I don't want to mess with Git. I want to make notes on my phone while I am lying down in bed or on the train, but GitHub and Markdown files are not really amenable to that.

Maybe I can do something similar to the Remix team for my own benefit.

I looked into a few different headless CMSs, but it turns out they quickly get expensive and generally don't have great mobile support.

My favorite headless CMS was Payload CMS 3.0. At the time of writing, they have a beta release of version 3.0 out, and it's basically going to be the first polished headless CMS solution that runs in serverless JavaScript. But I eventually dropped this because:

  • it wouldn't run on Cloudflare Workers (my preferred hosting platform)
  • I couldn't figure out a simple post-to-markdown-to-html transformation workflow that made sense
  • it doesn't have a mobile app

I also looked into WordPress. It does actually have a mobile app. However, as I wanted to host both Posts and Projects, it appeared I would need to either self-host or pay for a nice plan to get the level of features I want. Considering that you can get shared hosting for WordPress for as low as 220 yen/month in Japan, this is probably the best option objectively.

However, I also discovered Notion around the same time. The database feature is pretty amazing, and it has a basically unlimited free personal plan. Hopefully this won't change in the future, but it seems to have decent export features so I could escape later if needed. I also like the editor and that the Notion API just returns blocks as JSON, so my blog doesn't need to worry about Markdown at all—just rendering a JSON blob of blocks as various React components.

Now that I completed the initial migration, I am going to try to fix various secondary bugs like SEO, slugs, caching, watching for updates, and supporting more block types like intra-page links.