Why is my WordPress site so slow?
How to measure what takes the time, and tell whether it's the server, heavy images or too many plugins.
- You need
- Browser
- Updated
A slow WordPress site comes down to one of three things: the server takes a long time to build the page, the browser has to load heavy images and scripts, or a plugin gives PHP and the database a lot of work on every page view. The number of plugins matters little in itself. What counts is what they do.
Measure before you change anything, so you know which of the three it is.
Measure where the time goes
- Open the site in Chrome in an Incognito window, press F12 and choose the Network tab.
- Reload the page and click the top row, which is the HTML document itself. Under Timing, "Waiting for server response" is the TTFB (time to first byte).
- Run the page through PageSpeed Insights. The report shows the heaviest files, and Core Web Vitals from real visitors if the site has enough traffic.
Google considers a TTFB of 0.8 seconds or less good, and anything over 1.8 seconds poor. A high TTFB means PHP and the database take a long time to build the page. If TTFB is low but the page is still slow, images, scripts or fonts are taking the time.
Check Site Health
Go to Tools → Site Health. There WordPress measures the server's response time and checks whether the site has a page cache:
- "Page cache is not detected and the server response time is slow" means PHP builds every page view from scratch. Turn on a cache plugin or your host's cache first.
- "Page cache is detected but the server response time is still slow" means the server is slow even with a cache.
WordPress recommends a response time under 600 milliseconds. If Site Health also shows "Autoloaded options could affect performance" or "You should use a persistent object cache", WordPress loads a lot of data from the database on every request. The article on a slow dashboard shows how to find the largest options, and what Redis or Memcached does.
Find heavy images
PageSpeed Insights shows which images can be made smaller. You can also click an image in Media → Library and check "File size:" and "Dimensions:". When you upload an image wider or taller than 2560 pixels, WordPress scales it down and generates smaller versions for the browser to choose from. If the theme or page builder displays the image at full size, visitors still download the whole file, and an image of several megabytes slows the page down.
- Resize images before you upload them, and use JPEG, WebP or AVIF for photos.
- Replace the largest images first, especially the hero image on the front page and images in sliders.
- An image optimisation plugin can compress the images already in the media library.
Find the plugin that slows the site down
If TTFB is high, you need to find out what the server spends its time on. The Query Monitor plugin shows how long the page took to build, and which database queries ran.
- Install and activate Query Monitor under Plugins.
- Go to a slow page while logged in, and open the Query Monitor menu in the admin toolbar.
- The "Queries by Component" panel shows which plugins run the most queries and which are slowest. The "HTTP API Calls" panel shows whether a plugin waits for an external server.
You can also deactivate plugins one at a time and measure TTFB again. Do it on a staging copy of the site, so visitors notice nothing.
Check the server
Under Tools → Site Health → Info → Server you see "PHP version" and "PHP memory limit". Newer PHP versions perform better, and you change the version in your hosting panel. If the site is only slow at times, it may be hitting your host's limits for CPU or number of processes and getting throttled. Also check whether bots are hammering the login. Those requests bypass the cache, so PHP has to handle every one of them.
When you're stuck
If TTFB is still high with a cache turned on and Query Monitor doesn't point to a single plugin, look further in the theme, the database and the server. For that you need access to the hosting account and an experienced PHP developer who can read the server logs and go through the code and the architecture. If the hosting plan is too small, you have to upgrade to a bigger plan or move the site to another server.