On switching from WordPress to Ghost
It was a long time coming.
After entirely too much deliberation, I finally pulled the trigger and migrated my website and blog from WordPress to Ghost. I'm very pleased with the result.
I think I first discovered Ghost through Coding Horror, which is the long-standing blog from Jeff Atwood, co-founder of Stack Overflow. Through the years, Ghost would occasionally pop up on my radar, but their product didn't really catch my eye until about six months ago.
Why did I make this switch?
I love WordPress. I recommend WordPress to pretty much everyone who needs a website. I even build WordPress sites for people. Why would I make a move away from a product I recommend to everyone?
The reasons are varied and nuanced.
A super-smooth publishing experience
The top reason was I wanted a smoother publishing experience than what WordPress offered. Even though WordPress started out as a blogging tool, it's blossomed into much more than that. And the "much more" part rears its head when you just want a simple interface for getting your content out into the world as a solo writer.
The more I wrote and published, the more I felt the inherent friction in the WordPress Block Editor. Love it or hate it, the Block Editor serves dual roles as a layout and design tool and a publishing interface. This means that there are lots of controls and options that are unnecessary for just getting a post live.
I write in Markdown in Obsidian, which is very seamless and fast. I wanted to simply copy my Markdown file into WordPress, add a cover image, update some metadata and smash that "Publish" button. Gutenberg supports Markdown—to a degree—and I'd inevitably have to do a decent amount of formatting and clean up.
Footnotes were the worst. I come from an academic writing background, and I enjoy David Foster Wallace's work, so historically I have tended to use footnotes liberally. Early on, I installed the Modern Footnotes plugin which generated really nice footnotes, but I had to place every single footnote within shortcodes, like this:
Here's an example of a sentence. [mfn]And here's the footnote between shortcodes[/mfn]
To generate the list of footnotes, I had to add [mfn_list]. This got tedious the more I wrote. WordPress has a built-in footnote block thats a bit simpler, but Modern Footnotes can display footnotes in a tooltip so readers don't have to scroll up and down for the extra content, and I had already spent a good bit of time adding CSS to get Modern Footnotes to look how I wanted and I didn't want to convert all of my notes.
Plus, I'd have to gather all the images, run them through ImageOptim to compress them and remove EXIF metadata, upload them to the Media Library, add them to the right block, etc. And, but, then, also, I had to add categories and tags and do all the meta publishing stuff just to get the post live. I totally understand that some of this is just the cost of normal publishing, but normal friction can be exacerbated by an interface that's overbuilt for the task.
Ghost automatically does all the compression and metadata stripping on upload, which is nice for privacy and saving time. It also simplifies things by providing just an option for tags.
I came across a LinkedIn post where someone advocated that 40% of time be spent on content creation and 60% on distribution. That breakdown resonated with me. The goal of writing is first and foremost for me to get my own thoughts down. But beyond that, I want to get it in front of people who might benefit from reading it. It already takes so much time to write a well-formed piece—I don’t want to add unnecessary friction in the publishing process.
Ongoing WordPress Litigation
Anyone who follows web dev / SEO / open source news knows that Automattic has unleashed a lawsuit against WP Engine. Then there was a countersuit and then a counter-counter suit. It will probably drag on for years.
I don't know how things will shake out, but the hostile takeover of Advanced Custom Fields, the "alignment offer" at Automattic, and the long and drawn out litigation suggests that this will continue to be a tumultuous issue in the open source world for a long time. My general sentiment is that the situation gives me the ick.
I repeat that I still think WordPress is an incredible. The flexibility and extensibility is amazing, and I still think it should always be the top choice for most people to build a website—especially over proprietary SaaS tools like Webflow and Wix. There's so much freedom that comes with open source and you don't have worry about vendor lock-in for hosting. You can literally build anything you want and modify just about anything in the frontend or backend. Total control. Total ownership.
And WordPress is free software. Plus, WordPress is doing some interesting things with block themes and theme.json. If they keep curating the interface, I think they'll go a long way at unlocking WordPress for more people, and that's a wonderful thing.
But at the end of the day, I wanted a home for my website that didn't have the same level of drama surrounding it.
Why did I choose Ghost?
There are lots of options for creating your own little digital garden on the internet. The law of inertia means that it was probably easier to stay on WordPress since I had already published about 70 posts on my previous site. But external forces ultimately convinced me to make the move. The following sections outline key events and content in the journey.
Lots of research on alternatives, including static site generators
After the WordPress debacle opened up, I was open to finding a new plot to transplant my digital garden. Almost by accident, I stumbled across Ernie Smith's article "So, Your CMS Blew Up" in which he outlines:
- why folks were wanting to switch from WordPress
- the pros and cons of different CMS's, static site generators, and the like
- how you should approach the choice of platform logically and strategically
Through that article and other research, I seriously considered converting my website into a static site using Hugo or 11ty. I noticed that Dan Mall has a pretty nice looking site in 11ty, and I thought what I wanted was raw speed—static site generators can make blazing fast sites because they don't have to connect to a database—it's just a collection of Markdown files.
I liked the idea of using an SSG because I'm already familiar enough with the command line, I wanted to get better at Git, and I wanted to do everything in Markdown. It seemed like a win.
After pouring over Hugo and 11ty docs and considering all the nuances of the tools (Do I want to learn Go or JavaScript? Which one seems easier to deal with long term?) and pondering Ernie Smith's advice, 11ty seemed like the best fit. I discovered that Zach Leatherman (creator and maintainer of 11ty) had produced a neat video on how you could migrate all of your content from WordPress with a single command. I tried it and was amazed to see all of my posts populate into a local 11ty install just like that.
But then challenges mounted. I can write a bunch of CSS, but I don't really want to write a bunch of CSS just to get my website going. I'm comfortable dealing with code and am more than happy to learn how a templating language works, but I really just want to write. The lift to get to the actual publishing outweighed all the perceived benefits of speed and a Git-based workflow. I gave up on the endeavor and stayed on WordPress for several months longer and per Smith's advice, I considered what I really wanted out of a content platform.
Hearing about Ghost from John O'Nolan on the Ahrefs Podcast
Over the summer, I listened to a ton of podcasts while cutting grass, and I started listening to the Ahrefs Podcast (which is fantastic, by the way). One of the episodes featured John O'Nolan, who founded Ghost in 2013. The title and the description had me intrigued:
John O'Nolan worked as the Deputy Head of UX for WordPress for several years before he got fed up with the direction it was taking. He decided to launch a non-profit, open source platform called Ghost in 2013, and the response was overwhelmingly positive.
As I listened to the interview, I felt like Ghost checked all the boxes for me. Here are a few standout quotes from O'Nolan:
On what publishing in WordPress legitimately feels like
John O'Nolan: But, if you have a background in using WordPress, I think the thing you notice the most is the speed and the ease of use and admin, you know, setting up a site is something you do once and then you have to live with it, the admin interface. So, like, how fast is it to get around? What is the editor like? What is the writing experience like? Are you fighting a block based editor that has 800 buttons every time you try and do something? Or do you have a relaxed experience where you can actually think as you are creating content?
On making that site go zoom zoom zoom
John O'Nolan: But the reality is that your performance is massively, massively dictated by the theme layer, whether that's the theme layer in WordPress or theme layer in Ghost. WordPress does some other things that don't help—it's database queries is a real bottleneck. But general benchmarks of performance Ghost to WordPress is one of the areas where there's the the biggest general advantage.
We serve on average—it might be different now—but the last time we benchmarked it was 19 to 1 requests in the same amount of time. So that means Ghost will serve 19 different visitors content in the time it takes WordPress to serve one visitor the content to the content. And search over the last ten years, you know, has become more and more focused on performance and has rewarded performing sites across desktop and mobile more and more. And that's an area where Ghost has done really well.
Tim Soulo: So in layman's terms, yeah, when you say performance, it's essentially page load speed...
John O'Nolan: Fast as f**k.
O'Nolan spoke to two of my main pain points: the friction in the editor and my desire to have a website that was lean, mean, and fast out of the box. I was hooked and ready to migrate by the end of it.
The two-hour conversation also spanned about a dozen other topics including:
- Why making a home on Substack, Quora, or Medium is a dubious prospect
- Ghost features, such as built-in emails and content syndication on the Fediverse
- Why Ghost is structured as a nonprofit
- The future of journalism and how Ghost fits in
I've learned that philosophy drives a lot of my major investments, and I definitely vibed with the Ghost philosophy on design, experience, and how a platform can support personal expression and open dialogue.
My impromptu sit down with Mark Schaefer at Ahrefs Evolve
One of my highlights at Ahrefs Evolve 2025 was getting to sit down with Mark Schaefer at the afterparty and soak up his insight and wisdom on everything from studying under Peter Drucker to what it means to build a personal brand and why it's important. He told me, "Personal brand gives you freedom of choice."

He illustrated this point by sharing stories about how building his personal brand in marketing had opened doors for him to publish books with a publisher, and how later he was able to self-publish without the need for a publisher; how he'd been able to teach and speak at conferences and see the world simply because he was known for his expertise and perspective. He emphasized consistency: "Once you start, you can't miss."
When I got back from the conference, everything was clear: I needed to stop dragging my feet already and buy a Ghost subscription, migrate the content, and get on with it already. So I did. Ghost has a super easy migration tool for getting posts out of WordPress, and I was able to perform the bulk of the transition in about an evening.
What it feels like to switch
It feels amazing. I'm not fighting with the editor, or plugin updates, or trying to figure out how to get MailPoet to not drain my CPU usage because of a rogue cron job. I write my posts in Obsidian, I copy/paste into Ghost, add images, and hit "Publish." In addition, it's really nice to have the email newsletter built in—no complex setups required.
Now the friction exists where it belongs:
- In the creative process of actually writing posts like this
- In articulating my ideas
- In designing cover art that matches the intent of what I write
- In sifting through all my ideas to figure out what's most important to write next
Ernie Smith's advice to figure out what features you want in a CMS is solid. All the stuff John O'Nolan mentioned still rings true—it just feels better.

Plus, the page speed just out of the box is incredible. Zero caching strategy or futzing with WP Rocket to eke out speed gains. It just works.
The biggest payoff is that I've published at a much more rapid clip since switching to Ghost than I ever have before. That's always the goal: To have tools that support creative flow and output. I've found that with Ghost, and that makes me happy.