Every week I get some version of the same message from a new client: "our WordPress site used to be fine, now it just feels slow." Almost every time, the cause is one (or several) of the same seven issues. Here's the checklist I run through on every audit — in the order I actually check them.

1. Unoptimized images

This is the single most common cause of slow WordPress sites, by a wide margin. A product photo straight off a phone camera can easily be 4–8MB. Multiply that across a homepage with a dozen images and you've got a page that has to download tens of megabytes before it even finishes rendering.

Fix: convert images to WebP, resize them to the actual display size (don't upload a 4000px-wide image into a 600px-wide container), and lazy-load anything below the fold. A plugin like ShortPixel or Imagify can automate this, but for client sites I usually set up a proper image pipeline once so nobody has to think about it again.

2. Too many plugins — or the wrong ones

Plugin count itself isn't the real problem; plugin quality is. One badly coded plugin that runs a database query on every page load will hurt you more than ten well-built ones combined.

Fix: audit what's actually active, remove anything unused, and check Query Monitor for plugins firing excessive database calls. I've seen single plugins responsible for over half a site's total load time.

3. No real caching layer

Without page caching, WordPress rebuilds the entire page from PHP and MySQL on every single visit — even when nothing has changed. That's an enormous amount of unnecessary work happening on every page load.

Fix: a proper caching setup (page cache plus object cache) means most visitors get a pre-built static page instead of triggering the full WordPress stack. This alone is often the biggest single speed win available.

4. Cheap, oversold shared hosting

You can optimize everything else perfectly and still be slow if the server itself is overloaded, sharing resources with hundreds of other sites on the same box.

Fix: for anything beyond a hobby site, managed WordPress hosting or a properly configured VPS pays for itself. It's usually the difference between a 3-second and a 0.8-second server response time.

5. A bloated, unoptimized database

Years of post revisions, expired transients, and spam comments quietly pile up in the database. I've opened client databases where post revisions alone outnumbered actual published content ten to one.

Fix: clean up old revisions, expired transients, and orphaned metadata, then limit how many revisions WordPress keeps going forward.

6. Render-blocking CSS and JavaScript

If the browser has to download and parse a dozen CSS and JS files before it can paint anything, visitors stare at a blank screen even on a fast connection.

Fix: combine and minify assets, defer non-critical JavaScript, and inline the small amount of CSS needed for the initial screen.

7. No CDN

Without a CDN, every visitor — regardless of where they are in the world — pulls assets from a single server location. Someone browsing from Australia hitting a US-based server will always feel slower than they should.

Fix: a CDN like Cloudflare serves static assets from a location physically closer to each visitor, which measurably helps both load time and Core Web Vitals scores.

The bottom line

None of these fixes are exotic — they're the same seven things I check on every performance audit, in roughly this order of impact. Most sites I look at have at least three or four of these problems stacked on top of each other, which is why fixing just one sometimes barely moves the needle. It's usually the combination that gets a site from a 3-second load time down to under a second.