Skip to content
Frank Spin
Menu
All writing

A fast website without plugins: why I no longer build on WordPress

A seesaw: on the left a pile of plugs pins its end to the ground, on the right a light page with a lightning bolt springs up.
A seesaw: on the left a pile of plugs pins its end to the ground, on the right a light page with a lightning bolt springs up.

Most small business websites look the same on the inside. WordPress, a theme that cost a few dozen euros and twenty to forty plugins. One for forms, one for SEO, one for caching, one to make the caching plugin play nice with the security plugin.

That works. Until the site gets slow, an update breaks something or you get a notice that a plugin has a security hole. Then another plugin gets added to fix it.

I’ve built websites for years, plenty of them in WordPress. For companies that take their website seriously, I no longer choose it. In this article I explain why, and what I do instead.

Why the average business website is slow

A WordPress site builds every page again the moment someone asks for it. The server starts PHP, pulls content from a database, loads the theme, lets every plugin do its thing and stitches together an HTML page. For every visitor, every time.

Then come the plugins. Each one brings its own JavaScript, CSS and sometimes fonts, on every page, whether you use that feature there or not. A theme sold to thousands of customers is full of features you’ll never switch on. They get loaded anyway.

The usual fix is yet another plugin: a caching plugin that keeps copies of pages for a while. It helps, but it’s a band-aid. The foundation is still a server that has to think again with every change, and a pile of third-party code you don’t control.

The page is ready before anyone asks for it

The biggest shift is a simple idea: build a page once, not for every visitor.

I build sites with Astro . Astro turns your content into finished HTML pages at the moment you publish. A visitor gets that page straight away. No database runs alongside it and nothing needs to be assembled.

Not every page can be ready in advance. Search results, a price that changes or a page showing stock need to be current. For those, Astro renders the page on the server (SSR) and stores the result in a cache at the edge of the network. The first visitor has the page made, the next thousand get the copy. When the content changes, only that page is refreshed.

The result: the server does almost nothing, even on a busy day or when you’re in the news.

Cloudflare: your site sits next to your visitor

A traditional website lives on one server in one data center. If your visitor is in Amsterdam and your server is in Frankfurt or Virginia, every request travels that whole distance and back.

I host sites on Cloudflare . Your website then doesn’t live in one place but on hundreds of servers worldwide. A visitor gets the page from whichever server is closest.

A few things come along that you’d have to arrange separately with a regular host: an SSL certificate, protection against attacks and compression. Cloudflare compresses everything with Brotli, the successor to gzip, so your HTML, CSS and JavaScript travel a lot smaller.

Managing content without your server having to think

The question I always get next: “But can we still edit it ourselves?” Yes. Better, even.

In WordPress your content, your design and your technology live in one system. Editing a paragraph means working inside the same system that runs your site. One wrong click in a page builder and your layout falls apart.

I work with a headless CMS, such as Sanity . There you manage only the content: copy, images, products, job openings. The CMS knows nothing about your design. Hit publish, and only the page that changed gets rebuilt or refreshed. Your website doesn’t have to ask the CMS what’s on a page every time a visitor comes by.

For your editors, it means an environment that fits exactly what they do. On a recent project, the editorial team assembles pages from fixed blocks, pastes a table from Excel straight into an article and previews it on the real page before anything goes live. Without the design ever being able to break.

Images: upload once, always the right size

Images are the heaviest part of almost every site. On WordPress sites I often see 4 to 8 MB photos straight from the camera, or an optimization plugin doing all the work on your own server.

I put the original images in storage on Cloudflare (R2). A visitor never requests the original. Cloudflare makes the version that’s needed at the edge of the network: 400 pixels wide for a phone, 1600 for a large screen. In a modern format like AVIF or WebP, if the browser supports it. That version is kept, so it’s only made once.

Your editors upload one photo. The rest happens on its own, without a plugin and without your server doing the work.

Small HTML, only the CSS you use

Speed is also about what you don’t send.

  • Small HTML. No page builder wrapping every block in five extra divs. The homepage of this site is 47 kB of HTML, and with Brotli it travels as less than 10 kB.
  • Only the CSS you use. I write CSS with Tailwind, which at build time only keeps the styles that actually appear in your pages. No theme stylesheet with styles for a hundred features you never use.
  • Almost no JavaScript. Astro ships no JavaScript by default. Only parts that really need to do something, like a filter or a form, get it. And only once they scroll into view.
  • No external font services. Fonts live on the same domain as your site. That saves a detour to another server, and spares you the privacy hassle.

Catching errors before your visitor does

On a WordPress site you often find an error only when a visitor sees it: a blank page after an update, a form that quietly stops sending, a PHP warning at the top of your homepage.

The way I build, there’s a step in between: the build. Before a version goes live, the whole site is built in one go and checked. Is the code right, does every page fit the content model, is no required field missing? If anything fails, the new version doesn’t go live and the old one simply stays up.

There are also no plugins to update every week. There’s no database to hack and no login page on your own domain where bots try passwords all day. Most of the maintenance of a WordPress site simply disappears.

Ready for working with AI

There’s one more advantage that wasn’t a factor a few years ago: this setup works well with AI.

Cloudflare and Sanity both have their own MCP server. Through such a server, an AI agent like Claude can work with your systems directly. In Sanity, an agent looks up content, fills in fields or drafts a translation for review. On Cloudflare, it reads logs, settings and deploys.

That works because everything here is structured. Content lives in fields with a fixed shape, not as one block of HTML in a database. The site itself is code in a repository, with a build that checks everything holds up. An agent knows what it’s touching, and an agent’s mistake doesn’t just go live.

In WordPress that’s harder. Content, layout and plugin settings are mixed together, and an agent that changes something changes it straight on your live site.

I work like this every day, with Claude next to Sanity and Cloudflare. The agent does the repetitive work, I review and decide.

What this gets you

  • Speed that lasts. Not just at launch, but after two years of adding content. There’s no pile of plugins slowly growing.
  • Better findability. Google takes loading speed into account through the Core Web Vitals. A fast, clean page is the best foundation for that.
  • Less maintenance and less risk. No weekly updates, no vulnerable plugins, no hosting plan you need to upgrade because your site got too heavy.
  • Editors who work on their own. Your team edits content without a developer and without worrying that the layout breaks.
  • Ready for AI. Agents can safely help with your content and your site, because everything is structured and goes through the build.

When WordPress is perfectly fine

To be fair: not every website needs this. A simple site for a freelancer, a club or a small project on a tight budget can run fine on WordPress with a good theme. It’s online fast and anyone can work with it.

This approach is for companies whose website really has to do something. Where the site brings in leads, holds a catalog or knowledge base, runs in several languages or has an editorial team working in it every week. There, a solid foundation pays for itself, in speed, in findability and in maintenance hours you no longer spend.