How I Got a 97–99 PageSpeed Score on WordPress (Without a Page Builder)

After publishing my post “Stop Building Websites with Page Builders: A Developer’s Manifesto”, a few people asked the obvious follow-up question:

“Cool theory — but does it actually work?”

So here’s the proof.

This site currently scores:

  • 97 Performance on Mobile
  • 99 Performance on Desktop
  • 96+ Accessibility
  • 96+ Best Practices
  • 92 SEO

And no — this isn’t the result of stacking 15 optimisation plugins and praying nothing breaks.

Most of the performance was achieved during development, not after launch.


Performance Starts With Architecture (Not Plugins)

The biggest difference between a fast WordPress site and a slow one isn’t hosting or caching.

It’s how the theme is built.

This site uses a bespoke WordPress theme, built specifically for its content and layout needs. No page builder. No generic theme framework trying to be everything to everyone.

That means:

  • No unnecessary CSS or JavaScript
  • No deeply nested markup
  • No hidden layout logic running on every page

When you control the markup, you control performance.


The Problem With Page Builders (In Practice)

Page builders promise speed and flexibility, but the cost shows up later.

A simple section becomes:

div > div > div > div > heading > span

Each block pulls in:

  • Global CSS
  • Block-specific CSS
  • JavaScript for editing controls (even on the frontend)

Multiply that across a full page and suddenly you’re shipping hundreds of KBs of unused code just to render text and images.

That bloat directly impacts:

  • Largest Contentful Paint (LCP)
  • Time to Interactive (TTI)
  • Core Web Vitals overall

No cache plugin can fully fix that.


Bespoke Themes = Predictable Performance

With a custom theme:

  • Every section is intentional
  • Every stylesheet is written once, locally
  • JavaScript is added only when needed
  • Layout logic lives in code, not the database

I use ACF-based blocks so clients can safely update content without breaking layout or brand consistency.

Clients still get flexibility — just guardrails instead of chaos.


Plugins I Use (And Why Only These)

This site runs with very few plugins, because plugins should enhance, not compensate for poor architecture.

LiteSpeed Cache

Used for:

  • Page caching
  • Asset optimisation
  • Server-level performance improvements

Configured conservatively — not blindly enabling every option.

WebP Express

Used to:

  • Serve WebP images where supported
  • Reduce image payload sizes without sacrificing quality

That’s it.

No animation plugins.
No “mega optimisation” plugins.
No builders hiding performance issues.


Most Optimisation Happened Before Launch

Key performance decisions made during development:

  • Semantic HTML (less DOM complexity)
  • Component-based CSS (no global overrides fighting each other)
  • Minimal JavaScript (no frameworks where vanilla JS works)
  • Image sizing handled at template level
  • Fonts loaded intentionally (no unnecessary weights)

By the time caching was added, the site was already fast.

Caching didn’t save the site — it enhanced an already solid foundation.


The Real Takeaway

If you care about:

  • Performance
  • Maintainability
  • Security
  • Long-term scalability

Then performance can’t be an afterthought.

Page builders make it easy to launch fast —
but bespoke themes make it possible to stay fast.

A bit harder upfront.
Much cheaper long term.


If you’re a developer, agency, or business owner who wants performance without constant firefighting — build less, but build it properly.

Categories:Development

Leave a Reply

Your email address will not be published. Required fields are marked *