Performance

Why Is My WordPress Site Slow? A Step-by-Step Diagnosis

Find out why your WordPress site is slow. We walk through the order we diagnose it: server response, caching, database, plugins, images and front-end code.

A slow WordPress site is almost always slow for a reason you can measure. The cause is usually one of a few things: the server takes too long to build the page, the page isn’t cached, the database is bloated, a plugin does too much work, or the browser has to download and run too much code. The trick is to check them in the right order, so you fix the real problem instead of guessing.

This is the diagnostic order we use when a client tells us their site is slow.

Step 1: Define “slow”

“The site is slow” can mean very different things. Before you change anything, write down:

  • Which pages? The home page, product pages, checkout, blog posts, or the admin area?
  • For whom? Logged-out visitors, logged-in customers, or editors in the dashboard?
  • On which device? Mobile visitors on a phone network have a very different experience than you on office Wi-Fi.
  • Since when? A site that got slow last Tuesday probably changed last Tuesday: a plugin update, a new tracking script, or a traffic spike.

Then take a baseline. Run the key pages through PageSpeed Insights and note the field data (real visitors) and the lab data (a simulated test). Check the Core Web Vitals report in Google Search Console. If you don’t know what LCP, INP and CLS mean, our Core Web Vitals guide for WordPress explains them in plain terms.

Step 2: Check server response time

The first number to look at is Time to First Byte (TTFB): how long it takes from the request until the first byte of the page arrives. Google suggests 0.8 seconds or less as a rough target in its TTFB guide on web.dev.

You can see TTFB in the Network tab of your browser’s developer tools, or from the command line:

curl -o /dev/null -s -w "TTFB: %{time_starttransfer}s\n" https://example.com/

Run it a few times, because the first request may be slower than later ones.

How to read the result:

  • Fast TTFB, slow page: the problem is in the browser. Skip ahead to Step 5.
  • Slow TTFB on every page: the server, caching or database is the problem. Continue with Steps 3 and 4.
  • Slow TTFB only on some pages: look at what those pages do differently. Search results, filtered product lists and pages with complex queries are common suspects.

Step 3: Check caching

WordPress builds each page with PHP and database queries. Without caching, it does that work for every single visitor. There are three layers of caching to check.

Page cache

A page cache stores the finished HTML so the server can send it without running WordPress at all. It is the single biggest speed gain for most content sites. Check whether it is working by looking at the response headers for a cache status, such as x-cache: HIT or a similar header from your host or plugin. If every request is a “MISS,” something is preventing caching: a cookie set on every page, a query string, or a plugin that marks pages as uncacheable.

Remember that logged-in users, carts and checkout pages are usually not cached. If those are slow, caching won’t help, and you need to look at Steps 4 and 6.

Object cache

A persistent object cache, such as Redis or Memcached, stores the results of database queries in memory between requests. It helps most on pages that can’t be page-cached, like WooCommerce and membership sites. WordPress Site Health (Tools, then Site Health) will tell you if it thinks your site would benefit from one.

OPcache

OPcache is a PHP feature that keeps compiled code in memory so PHP doesn’t recompile every file on every request. It is on by default in most setups, but it can be too small for a large site with many plugins. We explain how to size it in our guide to WordPress server tuning with PHP-FPM, OPcache and Redis.

Step 4: Find slow queries and slow code

If TTFB is slow on uncached pages, find out where the time goes. The free Query Monitor plugin is the best place to start. Load a slow page while logged in and look at:

  • Total database queries and their time. Hundreds of queries on a simple page is a warning sign.
  • Slow queries. Query Monitor highlights them and shows which plugin or theme called them.
  • Duplicate queries. The same query run many times often means a loop that should be cached.
  • External HTTP requests. A plugin calling a remote API on every page load can add seconds, and it gets much worse when that API is down.

Don’t leave Query Monitor active on a production site longer than you need it.

Database bloat

Over the years, WordPress databases collect junk: thousands of post revisions, expired transients, data from deleted plugins, and large amounts of autoloaded options. Autoloaded options are loaded on every single request, so a few megabytes there slows down the whole site. Our guide to cleaning up a bloated WordPress database shows how to measure and fix this safely.

Cron and background jobs

WordPress runs scheduled tasks (WP-Cron) during normal page visits by default. A heavy scheduled job, such as an import or a backup, can make random page loads slow. Moving cron to a real server cron job fixes the randomness.

Step 5: Check the front end

If the server responds quickly but the page still feels slow, the problem is in what the browser has to download and run.

Open Chrome DevTools, reload the page with a mobile throttling profile, and look at:

  • Page weight. How many megabytes does the page transfer? Large images and video are the usual cause.
  • Number of requests. Each plugin can add its own CSS and JavaScript files.
  • Third-party scripts. Chat widgets, ad networks, analytics, heatmaps and tag managers often account for most of the JavaScript on a page.
  • Render-blocking files. Stylesheets and scripts in the page head that the browser must load before it shows anything.

Images

Images are still the most common cause of heavy pages. Check that:

  • Images are resized to the size they are displayed at, not uploaded straight from a camera.
  • You use modern formats such as WebP or AVIF where possible.
  • Images below the fold are lazy-loaded, but the main hero image is not.

Fonts

Many themes load several font families and weights from external services. Each one is another download. Limit fonts to what the design really uses, and self-host them where you can.

Step 6: Look at plugins and the theme

Once you know where the time goes, you can usually trace it to a specific plugin or theme feature. A safe way to confirm a suspect:

  1. Copy the site to a staging environment. Never test this on production.
  2. Measure the slow page on staging.
  3. Deactivate the suspect plugin and measure again.
  4. Repeat for other suspects, one at a time.

Plugins that commonly cause slowdowns include page builders that load large scripts everywhere, related-posts plugins that run expensive queries, security plugins that scan on page load, and plugins that log every visit to the database.

The fix is not always to remove the plugin. Sometimes a setting change, a code patch, or loading the plugin’s assets only on the pages that need them is enough. Removing plugins you no longer use is always a good idea.

Step 7: Check the server itself

If everything above looks reasonable and the site is still slow, look at the server:

  • PHP version. Newer PHP versions are generally faster and still get security fixes. WordPress recommends PHP 8.3 or greater on its requirements page. Our guide to upgrading PHP safely on WordPress covers how to do it without breaking the site.
  • CPU and memory. Is the server running out of memory and swapping to disk, or maxing out the CPU at busy times?
  • PHP workers. If all PHP workers are busy, new requests wait in a queue. This often looks like a site that is fast at night and slow during the day.
  • Database server. An undersized database cache means queries read from disk instead of memory.

On shared or entry-level hosting you may not be able to change any of this. That is a good time to compare your options, which we cover in managed WordPress hosting vs a VPS.

Why order matters

It is tempting to install an optimization plugin and hope for the best. Sometimes that works. Often it hides the real problem, or adds a new one. Following the order above means:

  • You don’t spend a week on image compression when the server takes four seconds to respond.
  • You don’t upgrade hosting when one plugin’s query is the bottleneck.
  • You have before-and-after numbers to prove each change helped.

Speed is one of the six areas we track when we measure WordPress technical debt, because slow sites usually have a history: years of plugins added and never removed, and code that nobody has reviewed.

When to get help

If you have worked through these steps and still can’t find the cause, or you found it but don’t want to touch production code, our WordPress performance review does this diagnosis for you and gives you a ranked list of fixes with measured impact. Get in touch and send us the pages that feel slowest.

Frequently asked questions

What is the most common reason a WordPress site is slow?
In our experience it is usually a mix of a slow server response and too many plugins loading code on every page. Measure first, because the cause differs from site to site.
Is my WordPress site slow because of too many plugins?
Plugin count alone is not the problem. One badly written plugin can do more damage than twenty well-built ones. What matters is how much code and how many database queries each plugin adds to each page.
Why is the WordPress admin slow when the front end is fast?
The front end is often served from a page cache, while the admin never is. A slow admin points to server resources, slow database queries, heavy plugins, or external API calls made on admin page loads.
How fast should a WordPress page load?
Google rates loading as good when the Largest Contentful Paint is 2.5 seconds or less for at least 75% of real visits. As a rough guide, Google suggests a server response time of 0.8 seconds or less.

Is your WordPress site hacked, slow or at legal risk?

Tell us what you're dealing with. We'll reply within one business day.