Skip to content
JS

Web Development

How to speed up a slow WordPress site (without breaking it)

Most slow WordPress sites share the same four causes. Here's how I diagnose them, in the order that finds the problem fastest.

Jose Sebastian3 min read

Almost every "our site is slow" call I take turns out to be one of four things. Not a mysterious combination of all of them — one. The trick is checking them in the right order, because three of the four are cheap to rule out and the expensive one is last.

Here's the order I work in.

Start with a measurement, not a plugin

Before changing anything, get a baseline from PageSpeed Insights. Run it twice and use the second result — the first often catches a cold cache and makes everything look worse than it is.

Write down three numbers:

  • LCP (Largest Contentful Paint) — how long until the main content appears
  • TTFB (Time to First Byte) — how long the server takes to respond at all
  • CLS (Cumulative Layout Shift) — how much the page jumps around while loading

These three tell you which of the four causes you're dealing with.

If TTFB is above ~600ms, stop reading about images. The problem is on the server, and no amount of front-end work will fix it.

Cause 1: The server is slow (high TTFB)

A high TTFB means the page is slow before a single image or script is involved. Usual suspects, in order of how often I find them:

  1. Shared hosting that's oversubscribed. Common on cheap GoDaddy and Bluehost plans. The fix is moving hosts, not optimising code.
  2. No page caching. WordPress rebuilds every page from the database on every request unless you tell it not to.
  3. An old PHP version. PHP 8.3 is roughly twice as fast as 7.4 for typical WordPress workloads and the upgrade is usually a dropdown in your host's control panel.

Install a caching plugin before you do anything else. If TTFB drops below 400ms, you're done — go back and re-measure.

Cause 2: Images nobody resized

This is the most common single cause, and the easiest to fix.

Someone uploaded a 4000×3000 photo straight off a phone, WordPress scaled it in the browser with CSS, and every visitor now downloads 6MB to see a 600px thumbnail.

Check it in about ten seconds:

# Sort a WordPress uploads folder by file size, largest first
find wp-content/uploads -type f -name "*.jpg" -o -name "*.png" \
  | xargs ls -lS 2>/dev/null \
  | head -20

Anything over about 300KB is worth converting. Serve WebP, set explicit width and height attributes so the browser reserves space, and lazy-load everything below the fold.

Setting dimensions is what fixes CLS, incidentally — that's the layout jumping around as images pop in.

Cause 3: Plugin bloat

Every active plugin can enqueue its own CSS and JavaScript on every page, whether the page uses it or not. A contact form plugin loading its scripts on your blog posts is pure waste.

Two questions for each plugin:

QuestionIf the answer is no
Has it been updated in the last year?Remove it — it's also a security risk
Is it doing something you'd notice losing?Remove it

I regularly cut 20 plugins to 8 with no visible change to the site.

Cause 4: The theme itself

This is the expensive one, which is why it's last. Some page-builder themes ship 400KB of CSS and jQuery on every page and there is no configuration that makes them fast.

If you've ruled out the first three and you're still slow, the honest answer is usually a rebuild on a lighter foundation. That's a project, not an afternoon — but it's also the point where a site stops fighting you.

What to do first

If you only do one thing this week: install caching and compress your images. In my experience that combination fixes the majority of slow WordPress sites outright, and it costs nothing but an hour.

Measure before, measure after, and keep the numbers. Otherwise you're guessing.

Related reading

SEO6 min read

A technical SEO audit you can run yourself

Before paying anyone for an SEO audit, run these six checks. They take an afternoon, need no paid tools, and usually find the real problem.

Security6 min read

Your WordPress site got hacked: what to do first

Deleting the malware is the easy part — and the part that gets redone next week if you skip the rest. Here's the order that makes a cleanup stick.

Tips3 min read

Your SSL certificate broke: a 5-minute checklist

Browser shouting about your certificate? Work through these five checks in order — it's almost always one of them, and four take under a minute.

Need a hand with something like this?

I work with businesses in Dubai and remotely worldwide on websites, SEO, hosting and IT. Tell me what you're dealing with.

Get in touch