All articles
Performance

How to Speed Up a WordPress Site (Without Breaking It)

A slow WordPress site is almost never slow for exotic reasons. In our experience four causes account for the overwhelming majority: oversized images, cheap hosting, too many plugins, and render-blocking scripts. Fix those and you have usually solved the problem — the remaining tweaks are refinements.

11 min read

First, measure properly

Before changing anything, get a baseline. Run PageSpeed Insights on your three most important pages and note the Core Web Vitals. Check the field data section if it is available — that is real visitor data and matters more than the lab score.

Core Web Vitals at a glance2.1sLCPunder 2.5s140msINPunder 200ms0.04CLSunder 0.1
These three numbers are what Google actually measures. Chasing a perfect score beyond them has diminishing returns.

1. Images — usually the single biggest win

Images are typically 60–70% of page weight on a business site, and the fix is straightforward.

  • Convert to WebP — typically 25–35% smaller than JPEG at equivalent quality
  • Resize before uploading; a 4000px photo displayed at 800px wastes most of its bytes
  • Enable lazy loading for anything below the fold
  • Set explicit width and height so the layout does not shift as images load
  • Never lazy-load your hero image — it is your LCP element and delaying it directly hurts the metric

2. Hosting

The cheapest shared hosting puts hundreds of sites on one server. When a neighbour gets busy, your site slows down, and no amount of plugin tuning fixes that. If your server response time is above 600ms, hosting is your bottleneck and everything else is a distraction.

Hosting typeTypical responseSuits
Budget shared800ms – 2sVery low traffic sites
Quality shared300 – 600msMost small business sites
Managed WordPress150 – 400msBusiness-critical sites
VPS / cloud100 – 300msHigh traffic, stores

3. Caching

Without caching, WordPress rebuilds every page from the database on every request. Page caching stores the finished HTML and serves that instead — frequently the difference between a 1.5s and a 0.4s response.

  • Enable page caching (WP Rocket, LiteSpeed Cache, or your host's built-in option)
  • Turn on browser caching so repeat visitors re-download less
  • Add a CDN if you have visitors outside your host's region
  • Exclude cart, checkout and account pages from caching on eCommerce sites

4. Plugins

Plugin count matters less than plugin quality, but both matter. Each active plugin can add queries, scripts and stylesheets to every page — including pages that never use it.

  1. 1Deactivate and delete anything unused; deactivated plugins are still a security surface
  2. 2Look for plugins doing one small job that your theme or another plugin already covers
  3. 3Watch for plugins loading assets site-wide — a contact form plugin should not load on every page
  4. 4Replace heavy page builders on simple pages with native blocks where practical

5. Fonts

Custom fonts are a common and invisible cause of slow first paint. Each weight is a separate file, and text stays invisible until they load unless you tell the browser otherwise.

  • Self-host rather than pulling from a third-party CDN — one less connection to set up
  • Load only the weights you actually use; three is usually plenty
  • Use font-display: swap so text renders immediately in a fallback
  • Preload the font used for your headline

6. Scripts and stylesheets

Page load waterfallHTMLCSSFontsHero imageJavaScriptAnalyticsLargest Contentful Paint
Anything sitting in front of the dashed line is delaying your largest content paint. That is where to look first.
  • Defer JavaScript that is not needed for the initial render
  • Remove unused CSS, particularly from page builders
  • Load analytics and chat widgets after the page has rendered
  • Audit third-party scripts ruthlessly — each one is a request to somebody else's server

What to do, in what order

FixEffortTypical impact
Compress and resize imagesLowHigh
Enable page cachingLowHigh
Remove unused pluginsLowMedium
Upgrade hostingMediumHigh
Optimise fontsLowMedium
Defer JavaScriptMediumMedium
Add a CDNMediumMedium (high if international)
Do the first three rows before considering anything clever. They cost an afternoon and usually solve the problem.

Frequently asked questions

Why is my WordPress site slow?

In most cases: oversized images, no caching, cheap hosting, or too many plugins — often several at once. Start by checking server response time; if it is above 600ms, hosting is the bottleneck.

What is a good page load time?

Aim for LCP under 2.5 seconds on mobile. Total load time is a less useful measure than the Core Web Vitals, because it counts things visitors never wait for.

Do caching plugins actually help?

Substantially, yes — page caching is usually the single largest server-side improvement available on WordPress. Just exclude cart and checkout pages if you run a store.

Ready to Build Something Amazing?

Tell us about your project and we'll get back to you within 24 hours with a clear plan of action.