Web Development

Why Is My WordPress Site So Slow?

Eleven causes ordered by how much difference they actually make, with the fix for each.

Website performance speed gauge illustration

Most WordPress speed advice is a list of thirty tips with no indication of which ones matter. In practice, three or four issues cause the overwhelming majority of slow sites, and the rest is rounding error.

Here they are, ordered by how much difference they actually make.

First, measure properly

Before changing anything, get a baseline from PageSpeed Insights. Test the mobile score, not desktop — mobile is what Google uses for ranking, and it is always the worse number.

Write down your Largest Contentful Paint (LCP), Interaction to Next Paint (INP), and Cumulative Layout Shift (CLS). Those three are the Core Web Vitals, and they are what actually matter. A green "performance score" with a failing LCP is not a pass.

The three that cause most slow sites

1. Cheap shared hosting

This is the number one cause and the one people are most reluctant to accept, because they are paying $3 a month and it feels like a bargain.

On oversold shared hosting your site competes for CPU with hundreds of others. Server response time (TTFB) goes above 800ms before your site has done anything at all. No plugin fixes this.

Fix: move to decent managed hosting. Expect $15–$30 a month. Target a TTFB under 300ms. This single change often improves LCP by a full second or more.

2. Unoptimised images

The second biggest cause, and the easiest to fix. A 4MB camera photo displayed at 800px wide is downloading roughly forty times more data than needed.

Fix, in order of impact:

  • Resize images to the largest size they actually display at, before uploading.
  • Serve WebP or AVIF instead of JPEG or PNG. Typically 25–50% smaller at the same quality.
  • Compress everything. TinyPNG, ShortPixel, or Imagify.
  • Add loading="lazy" to below-the-fold images — but never to your hero image, which will hurt LCP.
  • Set explicit width and height attributes. This alone often fixes CLS.

3. Too many plugins, or the wrong ones

Plugin *count* matters less than what they do. Five lightweight plugins are fine. One badly built slider or page builder can add 900KB.

The usual offenders: heavy page builders, sliders, "all-in-one" security suites, social feed widgets, chat widgets, related-post plugins that run uncached queries.

Fix: deactivate plugins one at a time, retest, and note the difference. Anything that costs more than 100ms and is not essential should go.

If you only do three things: move off cheap hosting, compress your images, and remove your slider. That covers most of the gap for most sites.

The next tier

4. No caching

Without caching, WordPress rebuilds every page from the database on every visit. Page caching turns that into serving a static file.

Fix: WP Rocket if you will pay, LiteSpeed Cache if your host supports it, or the free FlyingPress alternatives. Most managed hosts include server-level caching that is better than any plugin.

5. Render-blocking CSS and JavaScript

The browser stops rendering until it has loaded and processed these files.

Fix: defer non-critical JS, inline critical CSS, and remove CSS and JS that is loading on pages that do not use it. Most caching plugins do this reasonably well.

6. No CDN

If your server is in Germany and your visitors are in Australia, every request crosses the planet.

Fix: Cloudflare's free tier handles this for most small sites.

7. Google Fonts loaded badly

Each font file is a separate request to an external domain. Four weights of two families is eight files.

Fix: self-host the fonts, use font-display: swap, and load only the weights you actually use. Two weights of one family is usually enough.

8. A bloated theme

Multipurpose themes ship with code for hundreds of features you do not use.

Fix: this is a rebuild decision, not a tweak. If the theme is the bottleneck, a lightweight custom build pays for itself.

9. Bloated database

Post revisions, expired transients, spam comments, and orphaned data from deleted plugins accumulate over years.

Fix: WP-Optimize or similar. Back up first. Limit revisions in wp-config.php:

define( 'WP_POST_REVISIONS', 5 );

10. Third-party scripts

Analytics, chat widgets, ad pixels, heatmaps, review embeds. Each one is a request to someone else's server, and you cannot control how fast it responds. This is one of the most common causes of poor INP.

Fix: audit them. Every one you cannot tie to a business decision should go.

11. Old PHP

PHP 8.2 is significantly faster than PHP 7.4, and 7.4 has been unsupported since 2022.

Fix: upgrade in your host's control panel. Test on staging first — very old plugins occasionally break.

A realistic order of work

  1. Test on mobile, record LCP, INP and CLS.
  2. Check TTFB. Above 600ms, fix hosting before anything else.
  3. Compress and resize every image, convert to WebP.
  4. Add explicit width and height to images.
  5. Install caching.
  6. Audit plugins, remove what is not earning its weight.
  7. Turn on Cloudflare.
  8. Self-host fonts, cut unused weights.
  9. Retest and compare against your baseline.

Steps 2–4 alone typically move a site from a failing LCP to a passing one.

If you would rather not do this yourself, performance work is part of every build we do — see web development services — and our Core Web Vitals guide explains what the three metrics actually measure.

Frequently asked questions

Aim for 90+ on mobile, but the score matters less than the underlying metrics. LCP under 2.5 seconds, INP under 200ms, and CLS under 0.1 are the thresholds Google actually uses.

It helps, but it will not rescue a site on oversold hosting with 4MB images. Caching reduces server work; it does not reduce how much the browser has to download.

Yes, though less than content relevance. Core Web Vitals are a confirmed ranking signal, and speed strongly affects conversion regardless of ranking — bounce rates climb sharply past three seconds.

Next step

Want this handled for you?

We build fast websites, do the search work and design the brand around it — for clients worldwide.