Why Is My WordPress Site So Slow? 9 Causes and How to Fix Them

Find out why your WordPress site is slow, from hosting and caching to plugins, page builders, images and the database, plus a 30-minute fix checklist.

Why is my WordPress site so slow? Causes and fixes
Contents

WordPress isn’t slow. A fresh install on decent hosting loads in well under a second. Sites get slow over time, as plugins pile up, page builders add layers of code, images go in uncompressed, and the database fills with years of leftovers.

This guide covers how to work out why your WordPress site is slow, the most common causes, and how to fix each one. It also covers the separate problem of a slow WordPress admin dashboard.

Step 1: find where the time goes#

“Slow” can mean different things, and each has a different fix. Run your homepage and one important inner page through PageSpeed Insights on mobile and look at three things:

  • Time to First Byte (TTFB): how long the server takes to start sending the page. Over about 0.8 seconds usually points to hosting, missing page caching, or slow PHP and database work.
  • Largest Contentful Paint (LCP): when the main content appears. Good is 2.5 seconds or less. A poor LCP with a good TTFB usually means heavy images, render-blocking CSS and JavaScript, or fonts.
  • Interaction to Next Paint (INP): how fast the page reacts to clicks and taps. Good is 200 ms or less. Poor INP is nearly always too much JavaScript: sliders, page-builder scripts, chat widgets, trackers.

Use the field data (“what your real users are experiencing”) as the truth, and the lab report’s diagnostics to find causes.

The most common causes, and how to fix them#

1. Cheap or overloaded hosting#

If your TTFB is slow even on a simple page, the server is the bottleneck. Crowded shared hosting, old PHP versions and no server-level caching all show up here.

Fix: make sure you’re on a supported PHP version (8.x), ask your host whether they offer server caching (LiteSpeed, Nginx FastCGI or Varnish), and use a host with servers near your visitors. For a business site, decent hosting is the cheapest speed upgrade there is.

2. No page caching#

Without caching, WordPress rebuilds every page from PHP and the database on every visit. With it, most visitors get a ready-made HTML file.

Fix: use your host’s built-in cache or one well-configured caching plugin, such as LiteSpeed Cache on LiteSpeed servers, WP Rocket or W3 Total Cache. Use only one; two caching plugins fight each other.

3. Plugin overload#

The number of plugins matters less than what they load. One badly built plugin can add more JavaScript to every page than ten well-built ones. Sliders, social feeds, popup builders, all-in-one “toolkit” plugins and anything loading its scripts site-wide are the usual suspects.

Fix: deactivate plugins one at a time on a staging copy and re-test. Replace heavy plugins with lighter alternatives, or a few lines of code where that’s enough. Use a script manager such as Perfmatters or Asset CleanUp to stop plugins loading on pages that don’t need them, for example contact-form scripts outside the contact page.

4. Page builders and heavy themes#

Elementor, Divi, WPBakery and multipurpose themes make design easy, but they often produce deeply nested HTML and large CSS and JavaScript bundles. That hurts LCP and INP, especially on mobile.

Fix: turn on the builder’s own performance options (optimised DOM output, improved asset loading, inline font icons) and remove unused widgets and add-ons. For new builds, a lightweight theme with the block editor, or a custom theme, is much faster to begin with.

5. Unoptimised images#

Uploading full-size photos is still the most common cause of a slow LCP.

Fix: resize images before upload (a full-width hero rarely needs more than 1,920 px wide) and serve WebP or AVIF. WordPress lazy-loads images by default, but it shouldn’t lazy-load your main hero image. Exclude it and give it high fetch priority. Always set image dimensions to avoid layout shift.

6. Render-blocking CSS, JavaScript and fonts#

Stylesheets and scripts in the page head have to download before anything shows.

Fix: defer non-critical JavaScript, remove unused CSS (most caching and optimisation plugins can do this), limit fonts to one or two families with the weights you use, and host fonts locally with font-display: swap. Test carefully after each change: aggressive “delay JavaScript” settings can break menus, forms and checkout.

7. A bloated database#

Years of post revisions, spam comments, expired transients, and leftovers from deleted plugins slow down every database query. A large set of autoloaded options is a frequent hidden cause, because WordPress loads it on every single request.

Fix: back up first. Then clean revisions, spam and expired transients with a tool like WP-Optimize, and limit future revisions in wp-config.php. Check the size of autoloaded options (WordPress’s Site Health screen flags it when it’s too large) and remove entries left by plugins you no longer use.

8. Third-party scripts#

Analytics, ad pixels, chat widgets, embedded YouTube videos, maps and social feeds all load code from other servers that you don’t control.

Fix: remove what you don’t use, load chat and video embeds only when clicked (a “facade”), and add tags through one tag manager rather than several plugins.

9. WooCommerce extras#

WooCommerce stores have their own speed traps: cart fragments refreshing on every page, large product catalogues, and dozens of extension scripts.

Fix: exclude cart, checkout and account pages from caching but cache everything else. Limit cart-fragment requests to pages that need them, and keep product images properly sized.

Why is my WordPress admin so slow?#

A slow dashboard with a fast front end is a different problem. Admin pages aren’t cached, so they show raw server and plugin performance. Common causes are heavy plugins running background queries, too many dashboard widgets, a bloated database, the Heartbeat API firing too often, and low PHP memory or an old PHP version.

The Query Monitor plugin shows exactly which plugin or query is slow on any admin screen. That’s the fastest way to find the culprit.

A 30-minute speed checklist#

  1. Record PageSpeed Insights results (field data and lab) for your top two pages.
  2. Confirm PHP 8.x and that page caching is actually working: check for a cache header, or test while logged out.
  3. Deactivate plugins you don’t need; stop the rest loading where they aren’t used.
  4. Resize and convert your biggest images, starting with the homepage hero.
  5. Defer non-critical JavaScript and trim fonts.
  6. Clean the database (after a backup).
  7. Re-test, then check field data again in four weeks.

Need a hand?#

Speed work is part of every WordPress build I do, and I fix slow existing sites too, from business websites to WooCommerce stores. Start with a free audit of your site (here’s how to read the audit report) to see what’s holding it back, or get in touch. If you’re weighing up a rebuild, read the future of WordPress and my headless WordPress SEO case study.

Written by
Danish Ishfaq

I build fast Shopify stores and WordPress sites with technical SEO engineered in, and AI automation that takes repetitive work off your team.

LinkedIn ↗
Work with me

Need help with your Shopify store, WordPress site or AI automation?

Tell me what you’re working on, or start with a free audit of your site.