A client called me last month about their WooCommerce store. They sell products online and were hosted on a managed WordPress platform, which is one of the better hosting options out there. They had built-in caching. They had a CDN. They were paying for premium hosting. And their site was still painfully slow.
That conversation is the reason I'm writing this. Because a slow WordPress site is one of the most common problems I see with small business websites here in Louisville and across Kentucky. And the frustrating part is that most business owners don't know where to start diagnosing it. They just know something feels off, customers are bouncing, and sales aren't where they should be.
So here's the checklist I actually use when a client tells me their WordPress site is slow. Not theory. Not a list of 47 things you'll never get to. Just the items that make the biggest difference, in the order I check them.
Start with the Numbers
Before you touch anything, you need to know how slow your site actually is. "It feels slow" is not a diagnosis. You need data.
Open Google PageSpeed Insights and plug in your URL. Test both mobile and desktop. Pay attention to two numbers: your performance score (out of 100) and your Largest Contentful Paint (LCP), which measures how long it takes for the main content on your page to appear.
Run the test on your homepage, a product page, and a blog post. Different pages have different problems. The homepage might be fine while your product pages are dragging because of unoptimized images.
GTmetrix is another tool I use because it gives you a waterfall chart that shows every single file loading and how long each one takes. That waterfall tells you exactly where the bottleneck is. I have found issues in five minutes with GTmetrix that would have taken an hour to track down otherwise.
1. Your Hosting Might Be the Problem
Hosting is the foundation. If the server your WordPress site lives on is slow, nothing else matters. You can optimize images all day long and still have a slow site if the server response time is garbage.
There are three tiers of WordPress hosting:
- Shared hosting (GoDaddy, Bluehost basic plans) - Your site shares a server with hundreds of other sites. It's cheap, usually $5-15 a month, but performance suffers. This is the number one culprit I see with slow WordPress sites for small businesses.
- Managed WordPress hosting (WP Engine, Flywheel, Kinsta) - Servers optimized specifically for WordPress. Better caching, better security, better support. Usually $25-50 a month.
- VPS or dedicated hosting - Your own server or a slice of one. More control, more power, more cost. Usually $50-200+ a month.
If you're on shared hosting and your site is slow, that's your answer. Upgrading to managed WordPress hosting is the single biggest speed improvement most small business owners can make. I've seen sites go from a 6-second load time to under 2 seconds just by moving hosts.
Real example: The e-commerce client I mentioned was already on managed hosting, so hosting wasn't their bottleneck. But I've worked with Louisville retail shops and restaurants still running on $8/month shared hosting plans they signed up for five years ago. If that's you, this is the first thing to address.
2. Caching Layers (There Are Three)
Caching is one of those words that gets thrown around a lot without people understanding what it actually does. In simple terms, caching saves a copy of your page so the server doesn't have to rebuild it from scratch every time someone visits.
But here's what most people miss: there are three different types of caching, and you need all of them working together.
Page Caching
This is the big one. When someone visits your WordPress site, the server normally has to run PHP code, query the database, assemble the HTML, and send it to the browser. Page caching saves the finished HTML so the server can skip all that work for the next visitor. This alone can cut load times in half.
If you're on managed hosting like WP Engine, page caching is built in. If you're on shared hosting, you need a plugin like WP Super Cache or W3 Total Cache.
Object Caching
Object caching stores database query results in memory (usually Redis or Memcached) so WordPress doesn't have to hit the database for the same data over and over. This matters most for WooCommerce sites and sites with a lot of dynamic content.
The e-commerce site I optimized had page caching running but no object caching. Their product pages were hammering the database on every load. Enabling Redis object caching through the hosting dashboard cut their time-to-first-byte nearly in half on product pages.
Browser Caching
Browser caching tells your visitor's browser to save certain files locally, like your CSS, JavaScript, and images, so they don't have to download them again on the next visit. Most caching plugins handle this automatically, but it's worth checking your headers to make sure it's actually working.
3. Unoptimized Images
This is the issue I find on almost every slow WordPress site. Bar none. Images are usually the heaviest files on any web page, and WordPress makes it incredibly easy to upload massive photos without thinking about it.
Here's what I typically find: a business owner took photos with their phone (12 megapixels, 4MB per image), uploaded them directly to WordPress, and the site is now trying to serve 15 of those on a single page. That's 60MB of images. On a mobile connection, that's a disaster.
What to do about it:
- Resize before uploading. If your content area is 800 pixels wide, there's no reason to upload a 4000-pixel-wide image. Resize it to 1600 pixels (2x for retina) before you upload.
- Compress everything. Use a plugin like ShortPixel or Imagify to automatically compress images on upload. You can usually reduce file size by 60-80% with no visible quality loss.
- Use WebP format. WebP images are 25-35% smaller than JPEG at the same quality. Most modern browsers support it. Your compression plugin can convert existing images to WebP automatically.
- Enable lazy loading. WordPress has built-in lazy loading as of version 5.5, but check that it's actually working. Lazy loading means images below the fold don't load until the visitor scrolls down to them.
On the e-commerce site, images were the biggest single problem. Product photos were being served at full resolution with no compression. After optimizing every image on the site, total page weight dropped from 8MB to under 1.5MB. That alone knocked two seconds off the load time.
4. Too Many Plugins
WordPress plugins are a double-edged sword. They add functionality, but every plugin adds code that has to load on every page. Some plugins are well-built and lightweight. Others are bloated nightmares that add 500KB of JavaScript to your site whether you need it or not.
I've audited WordPress sites with 40, 50, even 60 active plugins. That's almost always too many. And the worst part is that half of them are usually inactive or doing something a single better plugin could handle.
Here's my approach when I audit plugins:
- Deactivate plugins one at a time and test your site speed after each one. This tells you exactly which plugins are the worst offenders.
- Look for overlap. Do you have three different SEO plugins? Two security plugins? A caching plugin and a hosting-level cache fighting each other? Consolidate.
- Delete what you don't use. Deactivated plugins sitting in your WordPress install are not loading code, but they are a security risk. If you're not using it, delete it.
- Replace heavy plugins with lighter alternatives. Some popular plugins are infamous for being resource hogs. If a plugin adds a lot of front-end JavaScript and CSS that loads 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 performance cost and decide if it's worth it.
5. Render-Blocking CSS and JavaScript
This one is more technical, but it's often the difference between a 70 and a 90 on PageSpeed Insights. Render-blocking resources are CSS and JavaScript files that the browser has to download and process before it can show anything on screen.
When your WordPress site loads, the browser reads the HTML from top to bottom. If it hits a CSS or JS file in the head of your document, it stops rendering, downloads that file, processes it, and then continues. If you have 10 of those files, that's 10 stops. Each one adds milliseconds that stack up fast.
Fixes:
- Defer non-critical JavaScript. Add the
deferattribute to scripts that don't need to run immediately. This lets the browser keep rendering while the script downloads in the background. - Inline critical CSS. The CSS needed to render the above-the-fold content should be inlined in the HTML so the browser doesn't have to wait for an external file.
- Combine and minify. Reduce the number of CSS and JS files, and minify them to remove unnecessary whitespace and comments. Plugins like Autoptimize or WP Rocket handle this well.
This was one of the final optimizations I did for the e-commerce client. After fixing images and caching, render-blocking scripts were the last major bottleneck. Deferring non-critical JavaScript and inlining critical CSS pushed their mobile score from 68 to 89.
Tired of a Slow WordPress Site
I'll run a full performance audit and tell you exactly what's slowing your site down. No guesswork.
Call/Text (502) 305-40436. No CDN (or CDN Not Configured Right)
A CDN, or Content Delivery Network, puts copies of your site's static files on servers around the world. When someone in Louisville visits your site, they get files from a server nearby instead of one in Oregon or Virginia. When someone in Lexington or Bowling Green visits, same thing. Faster delivery, less strain on your main server.
Most managed WordPress hosts include a CDN. WP Engine includes one through their partnership with Cloudflare. But "included" doesn't mean "properly configured." I've seen plenty of sites where the CDN was technically enabled but not serving images, or only working for some file types, or conflicting with a caching plugin.
If you're not on managed hosting, Cloudflare's free tier is a solid option. It acts as both a CDN and a basic security layer. Setup takes about 20 minutes if you know what you're doing.
For the e-commerce site, the CDN was enabled but their product images were being served from the origin server because of a misconfigured plugin. Fixing the CDN configuration meant their heaviest assets were finally being served from edge locations instead of the origin. Load times for visitors outside of the server's region improved by over a second.
7. Database Bloat
Every WordPress site runs on a MySQL database. Every post, page, comment, plugin setting, and WooCommerce order lives in that database. Over time, the database collects junk: post revisions, trashed posts, spam comments, expired transients, orphaned metadata from plugins you deleted years ago.
A bloated database means slower queries. Slower queries mean slower page loads, especially on dynamic pages like WooCommerce product listings or search results.
What to clean up:
- Post revisions. WordPress saves a copy every time you hit "save" while editing. A single post can have 50+ revisions. Limit revisions to 5 by adding
define('WP_POST_REVISIONS', 5);to your wp-config.php file. - Expired transients. Transients are temporary data cached in the database by plugins. When they expire, they don't always get cleaned up. These pile up fast.
- Spam and trashed comments. If you're not deleting spam comments regularly, your comments table can grow to thousands of rows of garbage.
- Orphaned tables. When you delete a plugin, it often leaves its database tables behind. These take up space and can slow down backups and queries.
Use a plugin like WP-Optimize to clean up the database and set it to run automatically on a weekly schedule. For the e-commerce site, the database had over 12,000 post revisions and 8,000 expired transients. Cleaning those out reduced database size by 40% and noticeably improved WooCommerce page load times.
The Results: What All of This Looks Like Together
Let me give you the before and after on that e-commerce WooCommerce site. This is what happened when I worked through this entire checklist:
Before optimization: Mobile PageSpeed score of 42. Desktop score of 61. Average page load time of 5.8 seconds. Product pages taking 7+ seconds on mobile.
After optimization: Mobile PageSpeed score of 89. Desktop score of 96. Average page load time of 1.9 seconds. Product pages loading in under 2.5 seconds on mobile.
What changed: Enabled Redis object caching, compressed and converted all images to WebP, removed 14 unused plugins, deferred non-critical JavaScript, inlined critical CSS, fixed CDN configuration, and cleaned up 12,000+ database revisions.
None of those individual fixes were complicated. But together, they transformed the site. The client saw an increase in average session duration within the first week, and their WooCommerce conversion rate improved because people were actually sticking around long enough to buy.
When to Call for Help
Some of these fixes are things you can handle yourself. Compressing images, deleting unused plugins, and cleaning up the database are all doable if you're comfortable in the WordPress admin panel.
But some of this gets technical fast. Configuring object caching, inlining critical CSS, debugging CDN issues, and auditing render-blocking scripts requires someone who knows what they're looking at. If you've tried the basics and your WordPress site is still slow, it might be time to bring in someone who does this regularly.
I work with small businesses across Louisville and Kentucky on exactly this kind of thing. Whether you're running a contracting business with a slow WordPress site, a retail shop with a WooCommerce store that takes forever to load, or a salon whose booking page makes customers give up, the process is the same. Measure, diagnose, fix, verify.
A slow WordPress site is not a death sentence. It's a checklist. And now you have the checklist. Work through it top to bottom, test after every change, and you'll be surprised how much faster your site can be.
If you want someone to handle it for you, or if you've tried these fixes and your site is still dragging, find the right person to help. Don't let a slow site keep costing you customers while you put it off. Every day your site loads in 5+ seconds is a day you're losing money.