Skip to main content
WordPress vs Static Site Generator - cluttered PHP code on the left compared to clean modern frontend JavaScript code on the right
  1. Posts/

Why I Moved from WordPress to a Static Site Generator

·2564 words·13 mins

Here’s something I see all the time. Someone needs a new website, whether they’re a complete beginner or a seasoned pro, and the first thing they reach for is WordPress. It’s almost automatic.

And look, I get it. I used to do the same thing. But after migrating 15+ sites away from WordPress, I can tell you straight up, most of those sites had no business being on WordPress in the first place. Let me tell you what I learned.

Why Does Everyone Default to WordPress?
#

WordPress has been around forever. It feels safe. Your hosting provider has a one-click install for it, there are plugins for everything, and developers who know it are literally everywhere. You don’t have to worry about finding someone to fix things because the talent pool is massive.

And honestly, that’s the appeal. It’s familiar, it’s available, and it lowers the barrier to just getting started. I’m not here to say WordPress is bad. I’m here to say the difference between “familiar” and “right for the job” is quietly costing a lot of people real money every single month.

Is WordPress Really the Right Tool for Most Sites?
#

Now here’s the thing. Most sites don’t need to be on WordPress. There are business sites, landing pages, that got created, went live, and are rarely ever touched again. But the maintenance is still there. The hosting cost is still there. Every single month, whether the site is doing anything for the business or not.

And it gets worse if you’re just ignoring it. An unmaintained WordPress site isn’t saving you money. It’s an unpatched codebase quietly becoming a liability. When something breaks or gets hacked, you’re paying more to fix it than you ever would have paid to just switch. That’s the trap. And a lot of sites are sitting right in it.

What Happened When a Client’s Sites Got Hacked
#

This one still stings to think about. A client of mine had 30+ WordPress sites all running on a single DigitalOcean droplet. The logic made sense at the time, he had a lot of sites, most of them rarely updated, and consolidating everything on one server kept costs low. Most of those sites were basically just sitting there.

Then one site got hacked. And because everything was on the same server, the attacker got into all of them. Every single site on that droplet was affected. Some sites got completely deleted. Others got redirected to other sites. Some just went down entirely. Thirty-plus sites, different levels of damage, all at once.

The restoration process was brutal. For most sites we only had the database export to work from. That means reinstalling WordPress from scratch, reinstalling every theme, reinstalling every plugin, then pulling the content back in from the database. Site by site. We did that across almost the entire 30+.

After that we migrated everything to ChemiCloud, which keeps each site instance properly separated. One site getting compromised can’t touch the others. Their security is solid out of the box and it’s not expensive at all. That fixed the shared-server problem.

But here’s what that whole experience made me realize. Better hosting fixed the immediate crisis. It didn’t fix the real problem, which was that most of those 30+ sites were running a full WordPress installation when they barely needed a website at all. If even half of those sites had been static from the start, the damage would have been a fraction of what it was.

So what does that actually mean? To understand why the architecture matters more than the hosting, you need to understand how a static site works differently from WordPress at a fundamental level.

So What Is a Static Site Generator, Actually?
#

A static site generator takes your content and outputs plain HTML, CSS, and JavaScript files. No database. No PHP running on every page request. Just files, sitting there, ready to be served.

WordPress works the opposite way. Every single time someone visits your site, PHP runs, the database gets queried, and the page gets assembled on the fly. There are a lot of moving parts. And like any machine with a lot of moving parts, things can and do break, even when you haven’t touched anything, even when users haven’t done anything obviously wrong.

With a static site, there are no moving parts. Hackers have almost no way in because there’s no running code to exploit. It’s just files. That’s the whole point.

And there’s another specific thing worth calling out. WordPress has a login page. By default it sits at /wp-admin or /wp-login.php, and if you haven’t changed that URL, attackers already know exactly where to aim their bots.

WordPress allows unlimited login attempts out of the box, and because that login URL is predictable, automated brute force attacks hammer it constantly, trying thousands of username and password combinations, sometimes up to a thousand attempts per minute.

In 2017, Wordfence documented a campaign that peaked at 14.1 million attacks per hour across WordPress sites. That’s not ancient history either, this is still happening at scale every single day.

With a static site, there’s no login page. None. If you’re using a Git-based headless CMS like Sveltia, your editors authenticate through GitHub or GitLab, not through a URL on your domain that bots can find and hammer. There’s simply no attack surface there to exploit.

WordPress vs Static Site Generator: The Real Comparison
#

Here’s a straight side-by-side so you can see exactly what you’re trading:

FeatureWordPressStatic Site Generator
Hosting cost$10–$50+/monthUsually free
Security riskHigh (DB, PHP, plugins, login page)Very low (no running code, no login URL)
Page speedNeeds optimization pluginsFast out of the box
MaintenanceRegular updates requiredNear zero
Backup & recoveryNeeds plugins or manual setupGit is your backup, switch hosts in minutes
CMS / editingBuilt-in, familiar UX for non-technical usersRequires headless CMS setup, steeper learning curve
E-commerceWooCommerce (adds complexity)Via headless backend (e.g. Shopify)
Best forComplex blogs, e-commerce, complex web appsBusiness sites, landing pages, portfolios, rarely-updated content

If your site belongs in that last column, mostly static content, rarely updated, no complex functionality, you are almost certainly paying for complexity you don’t need.

What I Actually Gained After Moving 15+ Sites
#

The hosting cost dropped to nothing. After moving the ones that made sense to static, that cost went to zero. Platforms like Cloudflare Pages and GitHub Pages host static sites for free, and because your files sit on a CDN edge, they’re fast without you having to do anything.

The speed improvement was real and noticeable. Pages that used to need a caching plugin and image optimization plugins to score decently on Google PageSpeed just… performed well after the move. No tuning needed. PageSpeed scores jumped significantly across the board. That matters for SEO, and it matters for the people actually visiting the site.

And the maintenance time just disappeared. I was spending a few hours a month for each of the WordPress sites, updating plugins, checking for conflicts, fixing things that broke after updates. With static sites there’s nothing to update. Nothing to patch. That time is saved and spent on something better instead.

Backup and recovery is another thing you just stop worrying about. With WordPress you need a plugin or a manual process to back things up, and if your hosting provider goes down you’re stuck waiting. With a static site, your entire site lives in a Git repository.

Every change is tracked, every version is recoverable, and if your hosting provider ever has an issue you just connect your GitHub or GitLab repo to another platform, Vercel, Netlify, Cloudflare Pages, or even just upload the build files directly. You’re never locked in and you’re never starting from scratch.

How to Actually Make the Switch: My Migration Process
#

Every migration was a little different, but the pattern was mostly the same.

First, I figured out whether the site actually needed WordPress. If it had an active blog, WooCommerce, or complex functionality, it stayed on WordPress or moved to something purpose-built. But if it was a business site or landing page that the client barely touched, that was a static candidate.

For those, the process looked like this:

  • Pick a static site generator. Astro is what I reach for most now, especially for content sites. Hugo is great if you want something extremely fast to build and you’re comfortable with Go templating. Both have solid free theme libraries.
  • Find or build a theme. For most business sites, there’s already a theme that gets you 80% of the way there. No need to build from scratch. Most themes also come with SEO already handled, proper meta tags, Open Graph, structured data, the basics are usually baked in. If a theme is missing something, it’s just a handful of meta tags in the head, nothing complicated to add yourself.
  • Handle the content migration. For sites with blog posts, export from WordPress and convert to Markdown. For simple business sites, it’s often faster to just rewrite the pages fresh.
  • Set up the CMS if needed. If the client needs to edit content themselves, I connect a headless CMS. Sveltia CMS is my current go-to, it’s open source, Git-based, fast, and actively maintained as the modern successor to Decap CMS. Sanity if they need something more powerful.
  • Deploy to Cloudflare Pages. Push to GitHub, connect to Cloudflare Pages, done. Free hosting, global CDN, automatic deploys on every push.

The first migration takes the longest because you’re learning the workflow. By the third or fourth one, it’s genuinely fast.

What Are the Downsides?
#

There are some real ones, and I want to be straight about them.

No Drag-and-Drop Builder
#

You need to be comfortable with code, or at least with prompting AI tools the right way, because you’ll need to understand what’s happening at a deeper level than clicking around in Elementor. There’s no drag-and-drop builder. If you want something custom you’re writing code or working with someone who can. AI tools handle a lot of this now, but you still need to know enough to prompt correctly and review what comes out.

No Plugin System
#

There’s no plugin system like WordPress either. If you need a specific feature, you build it or find a package. Nothing installs in one click.

What About Contact Forms?
#

Contact forms are probably the most common thing people worry about when moving to static. In WordPress you install a plugin and it’s done. With a static site there’s no backend to process submissions, so you need a form service.

Web3Forms is what I use, clean modern UI, spam protection built in, and 250 submissions a month on the free tier. For more advanced needs like webhooks or multi-recipient routing, Formspree and StaticForms are worth looking at. It’s one extra step compared to a plugin, but it’s not a blocker.

CMS Is Not as Powerful or Familiar
#

There’s no CMS out of the box. If your client needs to edit content themselves, you’ll need to set one up and connect it. It’s not hard, but it is an extra step, and depending on what you pick it can be simple or a bit more involved.

This is actually where WordPress has a real advantage worth acknowledging. WordPress has great UX for content editing, and a lot of non-technical people are already familiar with it.

On top of that, it comes with more advanced content management features out of the box, things like user roles, post scheduling, revision history, and custom fields. And with plugins you can extend the dashboard further without touching any code. Simple settings, simple UI, your client figures it out without calling you.

With a headless CMS on a static site, you get the basics. Anything beyond that, you’re either extending the CMS yourself, editing config files, or writing code. It’s not impossible, but it’s more work. So if you have clients or team members who update the site frequently and aren’t technical at all, putting them on a custom headless CMS is going to create friction.

They’ll need training, they’ll get confused, and you’ll get support requests. In that case, WordPress is probably the right call. The key question is always how often is the site being updated, and by who.

Higher Dev Time Upfront
#

Dev time is higher upfront if you’re not used to the workflow. But once you’re set up there’s genuinely nothing left to maintain. For clients who don’t want to think about their site, that’s actually a good thing to sell them on.

Now most of the sites I migrate are business sites or landing pages, so all of the above is usually all you need to think about. But one question I do get asked a lot is what about e-commerce?

What About E-Commerce?
#

For most business sites, a plain static site is all you need. Pick a theme, deploy to Cloudflare Pages, done.

Now for e-commerce, that’s a different story. Shopify and platforms built for that purpose are the right call there, they’re just better at it. But there’s also a setup that’s becoming more common where you run something like Astro as the frontend and connect it to a headless Shopify backend.

Your storefront gets the speed and security of static. Your cart, checkout, and product management stay in Shopify where they belong. You get the best of both.

The bigger point is just this: there’s almost always a tool built specifically for the job that does it better than WordPress. WordPress became the default because it was there first and does everything passably well. But passable isn’t the same as right.

My Take
#

Most sites should not be on WordPress. Business sites, landing pages, portfolios, informational pages that rarely change. All of those are better off as a static site. Cheaper, faster, safer, and basically zero maintenance once it’s done.

If you’re running one of those on WordPress right now, you’re wasting money you could put somewhere else. And if it gets hacked because you weren’t maintaining it, you’ll end up paying even more depending on how bad it is.

Make the move. Start with one site. Here are the top five static site generators worth looking at:

  • Astro — Best overall for most sites. Great theme library, modern frontend support, and strong built-in image optimization (compression, WebP, responsive sizing) handled automatically at build time.
  • Hugo — Best for speed. Builds thousands of pages in seconds, excellent native image processing, and no plugins needed for most cases. Slightly steeper learning curve but rock solid.
  • Next.js — Best if you’re already in the React world and need some pages to be dynamic. Powerful image optimization built in, though full benefits work best with a server.
  • Eleventy — Best for simplicity and full control. No framework lock-in, works with almost any templating language. Image optimization via the official @11ty/eleventy-img plugin.
  • Jekyll — Best for getting started fast, especially if you’re hosting on GitHub Pages. Been around since 2008, stable, beginner-friendly. No native image optimization, so pre-optimize or use a CDN service like Cloudflare Images.

Deploy any of them to Cloudflare Pages for free, and see how it feels to just not have to think about your site again.

Daniel Sjö
Author
Daniel Sjö
Software Developer with 10+ years of experience. I’m creating safe, ad-free games rooted in Biblical values to bless families and point people toward what is good, true, and eternal.