A paper snail crawling toward a sidewalk sign whose web page is still loading, next to a traffic cone

WordPress site slow? Start by measuring, because the obvious answer isn't always the real one. You can pay for better hosting, turn on caching and still have a site that drags on a phone.

Most owners with a slow site don't know where to start. They know something feels off, visitors leave, and calls or sales aren't where they should be.

I build most new client sites as static sites, not WordPress. But plenty of Louisville businesses already run on WordPress, and I'll diagnose a slow one. This is the checklist, in the order I'd work through it.

Start with the Numbers

Before you change anything, measure how slow the site is. Write the numbers down, so you can tell later if a fix helped.

Open Google PageSpeed Insights and enter your URL. Test both mobile and desktop.

Look at two numbers first. One is the performance score (out of 100). The other is Largest Contentful Paint (LCP), which measures how long the main content takes to show up.

2.5s
An LCP of 2.5 seconds or less is Google's "good" range. Check the real-user field data, not just the lab score. Google's PageSpeed Insights thresholds also set good INP at 200 milliseconds or less and good CLS at 0.1 or less.

Check the real-user field data first, when PageSpeed Insights has enough Chrome data. Then use the lab diagnostics to find the heavy files.

Test your home page, a product or service page, and a blog post. Different pages have different problems. The home page might be fine while product pages drag because of big images.

GTmetrix is another free option. Its waterfall chart shows every file that loads and how long each one takes, so you can see where the page gets stuck.

The Fix Order

Once you have your numbers, work in this order. Each step builds on the one before it.

  1. Check your hosting. If TTFB stays above 0.8 seconds with caching on, fix hosting first.
  2. Set up page caching. One caching plugin or your host's cache, not three fighting each other.
  3. Fix your images. Resize, compress and convert to WebP.
  4. Add or check your CDN. Cloudflare's free plan at minimum.
  5. Clean the database. Revisions, transients and leftover plugin data.
  6. Audit plugins, then minify CSS and JavaScript. Carefully, one change at a time.
  7. Measure again. Compare with the numbers you wrote down.

Most of the gain usually comes from steps 1 to 3. The sections below explain each one.

1. Your Hosting Might Be the Problem

Hosting is the foundation. If the server is slow, you can fix images all day and still have a slow site.

A quick check is Time to First Byte (TTFB), how long the server takes to start responding. Google's guidance is 0.8 seconds or less. If yours is well above that on every page you test, look at hosting before anything else.

There are three kinds of WordPress hosting:

  • Shared hosting (GoDaddy and Bluehost basic plans, for example): your site shares a server with many other sites. It's cheaper, but performance suffers. It's a common cause of slow small business sites.
  • Managed WordPress hosting (WP Engine, Flywheel, Kinsta): servers tuned for WordPress, with better caching, security and support. It usually costs more each month.
  • VPS or dedicated hosting: your own server or a slice of one. More control and more power, and more responsibility.

If you're on shared hosting and the site is slow, that may be your answer. Moving to managed WordPress hosting is one of the biggest speed gains many small businesses can make. It's not the only thing to check, though.

What I look for: Did your shop or restaurant sign up for shared hosting years ago and never look at it again? Check that first, before you start swapping plugins.

2. Caching Layers (There Are Three)

Caching saves work so the site doesn't have to do it again. On a WordPress site, that saved work lives in three places: on the server, in the server's memory and in the visitor's browser. You want all three working together.

Three caching layers for WordPress: page cache on the server, object cache in memory and browser cache on the visitor's device
Three layers in three places. Each one skips work the next visit would repeat.

Page Caching

This is the big one. On each visit, the server normally runs PHP, queries the database, builds the HTML and sends it to the browser. Page caching saves the finished HTML so the server can skip that work for the next visitor.

Managed hosts like WP Engine build page caching in. On shared hosting, you need a plugin like WP Super Cache or W3 Total Cache.

Object Caching

Object caching keeps database results in memory, usually with Redis or Memcached. That way WordPress doesn't have to ask the database for the same data over and over. It matters most on WooCommerce stores and sites with a lot of dynamic content, because product and cart pages hit the database more often.

If your host offers Redis or Memcached, check that it's turned on and working. My WooCommerce speed guide covers it in more detail.

Browser Caching

Browser caching tells the visitor's browser to keep files like your CSS, JavaScript and images, so it doesn't download them again on the next visit. Most caching plugins handle this automatically. Check your response headers to make sure it's working.

3. Unoptimized Images

Images are usually the heaviest files on a page, and WordPress makes it easy to upload huge photos without thinking about it.

Photo sizes drawn to scale: a 4,000 pixel wide upload, the 1,600 pixel file a sharp screen needs and the 800 pixel content area
A 4,000 pixel photo has 6.25 times the pixels of the 1,600 pixel version the page needs.

A common version: the page serves full-size phone photos even though the design shows them much smaller. The browser still downloads the whole file before it shrinks it to fit.

Start here: big image files are often the fastest thing to fix on a slow WordPress site.

What to do about it:

  • Resize before you upload. If your content area is 800 pixels wide, there's no reason to upload a 4,000 pixel image. Resize it to 1,600 pixels (twice the width, for sharp screens) first.
  • Compress everything. A plugin like ShortPixel or Imagify can compress images as you upload them. Compare the quality and file size afterward.
  • Use a modern format. Google puts lossy WebP at 25 to 34% smaller than JPEG at the same quality. Your compression plugin can convert existing images for you.
  • Check lazy loading. WordPress has lazy-loaded images by default since version 5.5, but make sure it's working. Images below the fold shouldn't load until the visitor scrolls to them.

On product-heavy sites, images are often the single biggest problem. Product photos get served at full size with little or no compression. Fixing that can make the site feel faster before you touch anything more technical.

4. Too Many Plugins

Plugins add features, and every one adds code. Some are well built and light. Others load a lot of JavaScript on every page whether you need it or not.

Forty, fifty or sixty active plugins is almost always too many. Often a lot of them are doing jobs that one better plugin could handle.

How to audit plugins:

  1. Deactivate plugins one at a time and test your speed after each one. That tells you which plugins cost the most.
  2. Look for overlap. Three SEO plugins? Two security plugins? A caching plugin fighting the host's own cache? Consolidate.
  3. Delete what you don't use. Deactivated plugins don't load code, but they're still a security risk. If you're not using it, delete it.
  4. Replace heavy plugins with lighter ones. If a plugin loads a lot of JavaScript and CSS on every page, look for a leaner option.

Common culprits: Page builders (Elementor, Divi), social sharing plugins, slider plugins and "all-in-one" plugins that do 50 things when you only need 2. I'm not saying these are bad tools. I'm saying you should know the speed cost and decide if it's worth it.

5. Render-Blocking CSS and JavaScript

This one's more technical. Render-blocking files are CSS and JavaScript files the browser has to download and process before it can show anything on screen.

Browser stopping at render-blocking files compared with deferred scripts loading in the background
Blocking files make the browser wait. Deferred files let the page show first.

The browser reads your HTML from top to bottom. When it hits a stylesheet or a regular script in the head, it stops, downloads the file, processes it and then keeps going. Ten of those files means ten stops before the page shows up.

Fixes:

  • Defer non-critical JavaScript. Add the defer attribute to scripts that don't need to run right away. The browser keeps building the page while the script downloads in the background.
  • Inline critical CSS. Put the CSS needed for the top of the page right in the HTML, so the browser doesn't wait on an external file.
  • Combine and minify. Cut down the number of CSS and JavaScript files, and minify them to strip extra spaces and comments. Plugins like Autoptimize or WP Rocket handle this well.

After images and caching, render-blocking files are often the next bottleneck. This is where a careful audit helps, because the wrong change can break layouts, forms, carts or tracking.

Tired of a Slow WordPress Site?

Start with the $250 Website Rescue diagnostic. I'll measure your site, find what's slowing it down and give you a fix plan in plain English.

Call/Text (502) 305-4043 See Website Rescue

6. No CDN (or CDN Not Configured Right)

A CDN, or content delivery network, puts copies of your site's static files on servers in many places. A visitor in Louisville gets files from a server nearby instead of one in Oregon or Virginia.

The same goes for visitors in Lexington or Bowling Green. Files arrive sooner, and your main server does less work.

Map showing a Louisville visitor getting website files from a nearby server instead of a distant one
Files from nearby arrive sooner. Check that your CDN serves your images.

Most managed WordPress hosts include a CDN. But included doesn't mean set up right. Sometimes the CDN is on but isn't serving images, only covers some file types or conflicts with a caching plugin.

If you're not on managed hosting, Cloudflare's free plan is a solid option. It works as both a CDN and a basic security layer.

Check it for yourself. Open the Network tab, reload the page and look at where your images come from. If they still come from your main server, the CDN isn't doing its job, no matter what the dashboard says.

7. Database Bloat

Every WordPress site runs on a MySQL or MariaDB database. Every post, page, comment, plugin setting and WooCommerce order lives there. Over time it collects junk: post revisions, trashed posts, spam comments, expired transients and leftover data from plugins you deleted years ago.

A bloated database means slower queries, and slower queries mean slower pages. You feel it most on dynamic pages like product listings and search results.

What to clean up:

  • Post revisions. WordPress saves a copy every time you update a post or page. A single post can pile up dozens. Cap them with the WP_POST_REVISIONS setting in wp-config.php. Setting it to 3 keeps the last three. WordPress documents the setting here.
  • Expired transients. Transients are temporary data that plugins cache in the database. WordPress clears expired ones with a daily scheduled task, but only if WP-Cron runs. If it doesn't, they pile up.
  • Spam and trashed comments. If you don't clear spam regularly, your comments table can grow to thousands of junk rows.
  • Orphaned tables. Deleted plugins often leave their database tables behind. They take up space and slow down backups.

Use a plugin like WP-Optimize to clean up the database, and set it to run on a sensible schedule. On a WooCommerce store, take a backup first. Orders, customers, coupons and products aren't the place to experiment.

Time It Before and After

Run PageSpeed Insights on the same three pages before you start and after each fix. Keep the numbers in one place: LCP, TTFB and the mobile score.

If a change doesn't move those numbers, undo it. If it breaks a form, a cart or your tracking, undo it. Faster only counts if the site still works.

Lou the mascot holding a stopwatch beside a laptop where a snail crawls over a loading bar only a third full
The before and after only count if you time both.

When to Call for Help

You can handle some of this yourself. Compressing images, deleting unused plugins and cleaning up the database are all doable if you're comfortable in the WordPress admin.

Some of it gets technical fast. Object caching, critical CSS, CDN problems and render-blocking scripts need someone who knows what they're looking at. If you've tried the basics and the site is still slow, it may be time to bring someone in.

If you've tried the basics and the site still drags, the next step is the Website Rescue diagnostic. It's $250. I measure the site, find what's slowing it down and give you a fix plan in plain English. The fee is credited if you book a Rescue Sprint or a rebuild within 30 days.

Sometimes the plan says the site costs more to fix than to replace. If WordPress itself is the problem, here's how WordPress compares with a custom site.

Questions first? Call or text me at (502) 305-4043.