Back to Blog
Why Is My WordPress Site Slow? 10 Fixes That Work
speedperformancecachingimageshosting

Why Is My WordPress Site Slow? 10 Fixes That Work

H
Hemicode
Nov 3, 2026 11 min read

If your WordPress site is slow, the cause is almost always on a short list: overloaded hosting, no page caching, a heavy theme or page builder, one or two badly built plugins, oversized images or an old PHP version. Fix the biggest one first and most sites get noticeably faster in an afternoon.

The trick is to measure before you change anything. A speed test tells you whether the server is slow to answer, the page is too heavy, or outside scripts are holding it up. Each problem has a different fix, and guessing wastes time.

This guide shows you how to measure, then walks through 10 fixes in the order that usually gives the biggest gain. Try every change on a staging copy, with a fresh backup, before you touch the live site.

How to find out why your WordPress site is slow

PageSpeed Insights

PageSpeed Insights is Google's free tester. Paste a URL and you get two sets of results. The top part, when your site has enough traffic, is field data from real Chrome visitors over the past 28 days. The lower part is a lab test run on the spot on a simulated mid-range phone.

Focus on the Core Web Vitals: Largest Contentful Paint (how fast the main content appears), Interaction to Next Paint (how quickly the page reacts to taps and clicks) and Cumulative Layout Shift (how much things jump around while loading). The score out of 100 is only a summary. The individual numbers and the suggestions under them are what you act on.

GTmetrix

GTmetrix shows a waterfall chart: every file the page loads, in order, with how long each one took. It is the quickest way to spot a 3 MB hero image, a slow font service or a chat widget that holds everything else up. If your account lets you choose a test location, pick one close to your visitors.

Query Monitor

Outside tests can't see inside WordPress. Query Monitor is a free developer plugin that lists database queries, slow queries, PHP errors and which plugin or theme caused each one. Install it on staging, load a slow page while logged in and open the queries by component view. A single plugin running hundreds of queries usually stands out straight away.

How to read the results

What you seeWhat it usually meansStart with fix
Slow server response (time to first byte above about 0.8 seconds)Hosting, no caching, old PHP or a heavy database1, 2, 7, 8
Fast response but slow Largest Contentful PaintBig images, render-blocking CSS and JavaScript, web fonts3, 5, 9
Page weight of several MB or 100+ requestsHeavy builder layout, too many add-ons, unoptimised images3, 4, 5
Poor Interaction to Next PaintToo much JavaScript, third-party scripts3, 9
Slow only for visitors in some countriesNo CDN, server far from your audience6
Slow at random times, host warns about CPU limitsBots, background jobs, traffic spikes10, 1

Test fairly. Run each test three times and use the middle result. Test the home page and your heaviest page (often a shop, blog archive or landing page). Logged-in visits skip most caching, so test in a private browser window.

10 fixes for a slow WordPress site

1. Move to hosting that fits your site

Hosting sets the floor for speed. No plugin can fix a crowded server that takes two seconds to answer. Signs you have outgrown your plan: a high time to first byte even with caching on, resource limit errors, and slowdowns at busy times of day.

Look for servers close to your audience, a current PHP version, server-level caching and enough CPU and memory for your traffic. If most of your visitors are in India, our guide to the best WordPress hosting in India covers what to compare.

2. Turn on page caching

Without caching, WordPress builds every page from scratch for every visitor: it runs PHP, queries the database and assembles the HTML. Page caching saves the finished HTML and serves that copy instead, which can cut server response from over a second to a small fraction of that.

Check your hosting panel for built-in caching first; otherwise a caching plugin does the job. Use only one, and make sure cart, checkout and account pages on a WooCommerce store are excluded (good caching plugins do this by default). Busy sites and sites with many logged-in users also gain from object caching, such as Redis, if your host offers it.

3. Lighten a heavy theme or page builder

Multipurpose themes and page builders load CSS and JavaScript for features you may never use. One page with nested sections, a slider, entrance animations and five font weights can send megabytes before the visitor sees anything.

  • Turn on the builder's own performance options, which load CSS and scripts only where used. Their names and location change between versions.
  • Flatten layouts: fewer nested sections, containers and columns.
  • Replace sliders and animations at the top of the page with one static image.
  • Limit fonts to two families and only the weights you use.
  • If the theme itself is the bottleneck, try a lightweight theme on staging and compare.

4. Audit your plugins (quality matters more than count)

Plugin count alone doesn't make a site slow. One badly coded plugin can do more harm than twenty well-built ones. The usual suspects load scripts on every page, run heavy database queries or call outside services on each request: some related-posts tools, statistics dashboards, social feeds, broken-link checkers and security suites that scan in real time.

Use Query Monitor to see what each one costs. Delete plugins you don't use (deactivated plugins still sit on the server and can still be a security risk), swap heavy ones for lighter options and avoid two plugins doing the same job. When you add a replacement, follow the steps in how to install a WordPress plugin from a ZIP file, on staging first.

5. Resize and compress images

Images are often the heaviest part of a page. A 4000-pixel photo from a phone, shown 800 pixels wide, wastes most of its bytes.

  • Resize before you upload. Around 1600 to 2000 pixels wide is plenty for a full-width image.
  • Compress, and use a modern format such as WebP where you can.
  • WordPress adds lazy loading to most images by default. Don't lazy-load the main image at the top of the page, because that delays the content visitors see first.
  • Keep width and height on images so the layout doesn't jump while they load.

6. Use a CDN

A content delivery network keeps copies of your images, CSS and JavaScript (and sometimes whole pages) on servers around the world, so visitors download them from somewhere nearby. If your server is in one country and your visitors are spread across several, a CDN often makes the single biggest difference. Many CDNs also include a firewall and bot filtering, which helps with fix 10.

7. Update PHP

WordPress runs on PHP, and newer PHP versions are generally much faster than old ones. Plenty of sites still run an old version simply because nobody changed the default in the hosting panel. Check Tools → Site Health → Info → Server to see yours, then compare it with the WordPress requirements page.

Switch on staging first. Old plugins and themes can throw errors on a newer PHP version, so update them before you switch and keep your backup ready.

8. Clean up the database

Over time the database collects revisions, expired transients, spam comments and tables left by deleted plugins. The bigger hidden cost is often autoloaded options, settings WordPress loads on every page view. Megabytes of leftover autoloaded data slow every request.

  • Empty spam and trash for comments and posts.
  • Limit revisions by adding define( 'WP_POST_REVISIONS', 10 ); to wp-config.php.
  • Check Site Health for warnings about autoloaded options.
  • Remove leftover tables only when you are certain which plugin created them.

Back up the database before any clean-up. Deleted rows can't be brought back without a backup.

9. Cut external scripts

Every third-party script, such as analytics, ads, chat widgets, heatmaps, social embeds and video players, is a request to someone else's server. You can't control how fast it responds, and some scripts stop the page from rendering until they arrive.

  • List every file in the GTmetrix waterfall that comes from another domain.
  • Remove what you don't use or can't justify. One analytics tool is usually enough.
  • Delay non-essential scripts, such as chat, until the visitor scrolls or clicks. Many optimisation plugins offer this.
  • Replace video embeds with a preview image that loads the player only on click.

10. Block bad bots and heavy background jobs

Sometimes the server is busy with traffic that isn't people. Scrapers, login attacks and bots hammering xmlrpc.php or WooCommerce filter URLs can use up CPU and hit your host's limits.

  • Check your host's access logs or visitor stats for unusual user agents and IP addresses.
  • Add a firewall and rate limiting at the CDN or host level.
  • Block xmlrpc.php if nothing on your site needs it. Some apps and plugins still use it, so check first.
  • On busy sites, replace the built-in WP-Cron with a real server cron job. Add define( 'DISABLE_WP_CRON', true ); to wp-config.php only after the server job is set up.

Worked example: a slow small-business site

Here is a typical case, with illustrative numbers, to show how the order of fixes works. A small interior design studio runs an Elementor site on a budget shared plan. The home page feels sluggish on phones and the owner has 38 plugins installed.

  1. Measure. Mobile Largest Contentful Paint is 6.8 seconds. GTmetrix shows a 1.9-second time to first byte and a slider with three 1.5 MB images. Query Monitor shows a related-posts plugin running about 120 queries.
  2. Back up and copy to staging. Every change is tried there first.
  3. Update PHP. After updating all plugins, the PHP version is switched to a current one in the hosting panel. Time to first byte drops to about 1.3 seconds.
  4. Turn on page caching. The host's built-in cache is enabled. Cached pages now answer in about 0.3 seconds.
  5. Fix images. The slider is replaced with one static hero image, resized to 1920 pixels and saved as WebP.
  6. Trim plugins. Nine unused plugins are deleted and the related-posts plugin is replaced with a lighter one.
  7. Delay scripts. The chat widget is delayed until interaction and a second analytics script is removed.
  8. Retest and push live. The same changes are repeated on the live site, then tested again.
MeasureBeforeAfter
Time to first byte (cached)1.9 s0.3 s
Largest Contentful Paint (mobile)6.8 s2.3 s
Page weight7.4 MB1.6 MB
Plugins3829

The hosting plan stayed the same. If the server had stayed slow after caching and the PHP update, moving to better hosting would have been the next step.

WordPress speed checklist

  • Take a full backup and set up a staging copy

  • Record PageSpeed Insights and GTmetrix results for your two most important pages

  • Turn on one page caching solution

  • Update PHP to a version WordPress currently recommends

  • Run Query Monitor and remove or replace heavy plugins

  • Resize, compress and convert large images

  • Remove or delay third-party scripts you don't need

  • Clean the database after a fresh backup

  • Add a CDN and basic bot protection

  • Retest and compare with your first results

Frequently asked questions

Why is my WordPress site slow only when I'm logged in?

Logged-in users usually bypass page caching, and the admin bar, editor scripts and background requests add extra work. Some slowness in the dashboard is normal. Judge front-end speed in a private window, logged out.

How many plugins is too many?

There's no magic number. A site with 40 lightweight plugins can be faster than one with 10 heavy ones. Measure the cost of each plugin with Query Monitor and remove the ones you don't need.

Will a caching plugin fix everything?

No. Caching speeds up server response, but it can't shrink a 5 MB page, fix slow third-party scripts or make an overloaded server fast for uncached pages such as the cart.

Does a page builder make WordPress slow?

Page builders add some weight, but a well-built builder page with sensible layouts, optimised images and the builder's performance options turned on can load quickly. Deeply nested layouts, many add-on packs and heavy animations are what usually cause trouble.

Why is my site fast on desktop but slow on mobile?

PageSpeed Insights tests mobile on a simulated mid-range phone with a slower network and CPU. Large images and heavy JavaScript hurt much more there, just as they do for real visitors on budget phones.

Does a slow WordPress site hurt SEO?

Page experience, including Core Web Vitals, is one of many signals Google uses. Speed alone rarely decides rankings, but a slow site loses visitors before they read anything, which hurts sales and sign-ups.

Swapping a heavy theme or plugin? Browse lightweight themes and performance plugins on HemiCode, download straight away and use them on as many sites as you like, including staging and localhost. Browse performance plugins →

H

Written by

Hemicode

Share this article