How to Speed Up a WordPress Website (What Actually Worked After I Nearly Gave Up)

How to Speed Up a WordPress Website

Written by Shahzaib Ali

How to Speed Up a WordPress Website
My WordPress blog used to take 11 seconds to load.

I know that because I finally ran it through Google PageSpeed Insights one afternoon and felt my stomach drop. Eleven seconds. That’s enough time to make a cup of tea, forget you opened a website, and move on with your life. No wonder my bounce rate looked like a cliff edge.

The frustrating part is I had no idea it was that bad. On my own laptop, cached in my browser, the site felt fine. It was only when I tested it properly, or heard from a reader who said “your site is really slow,” that I realized I had a problem.

What followed was about three weeks of trial, error, accidental breakage, and eventually, a site that now loads in under two seconds. Here’s everything I did, what actually moved the needle, and a few things I wasted time on that honestly didn’t help much.

Table of Contents

Why WordPress Gets Slow in the First Place

Before fixing anything, I had to understand why the site was crawling. Turns out there are a few usual suspects.

WordPress by default does a lot of database calls every time someone loads a page. On top of that, themes load stylesheets and scripts you might not even need. Plugins pile on. Images get uploaded at full resolution because nobody told you not to. And if your hosting is cheap shared hosting, you’re also competing with dozens of other sites on the same server.

My site had all of these problems at once. I was using a heavy multipurpose theme, had 24 active plugins, and my largest image was 4.8MB. That last one still makes me cringe.

Step One: Find Out What’s Actually Slowing You Down

Don’t start fixing things randomly. That’s what I did at first, and I wasted days on changes that made almost zero difference.

Run your site through these three tools first:

Google PageSpeed Insights — free, gives you a mobile and desktop score, and highlights your biggest issues with plain-English explanations. Start here.

GTmetrix — shows you a waterfall chart of everything loading on your page and how long each element takes. This is where I found out one plugin was loading a 600KB JavaScript file on every single page, including ones where that plugin wasn’t even doing anything.

Pingdom Tools — useful for testing from different geographic locations. I discovered my site loaded reasonably fast in the US but took forever from Europe, which is where a chunk of my readers were.

Write down the specific issues each tool flags before touching anything. You want to be fixing real problems, not guessing.

Step Two: Sort Out Your Hosting

This one’s uncomfortable to talk about because switching hosts costs money, but it made the single biggest difference on my site.

I was on a shared hosting plan that cost about $3 a month. I’m not going to name the host, but if you recognize yourself here, you know who you’re with. Shared hosting isn’t inherently evil, but the really cheap plans cram too many sites onto one server, and when someone else on that server gets a traffic spike, your site suffers for it.

I moved to a managed WordPress host, specifically Cloudways running on a DigitalOcean server, and my time-to-first-byte (that’s how quickly the server starts responding) dropped from about 800ms to under 200ms. Just from changing hosts, without touching a single plugin.

If budget is a concern, even moving to a slightly better shared host or a basic VPS can help. But if your hosting plan costs less than a coffee per month, that’s probably part of your problem.

Step Three: Install a Caching Plugin

WordPress generates your pages dynamically, meaning every visitor triggers a fresh database query to build what they see. Caching saves a ready-to-go version of your pages so the server doesn’t have to rebuild them from scratch every single time.

I use WP Rocket. It’s paid (around $59 a year), but it’s the simplest and most effective caching plugin I’ve tried. You install it, turn on the basic settings, and immediately see a score improvement. I tested three free alternatives before caving and buying it, and none of them were as set-it-and-forget-it as WP Rocket.

If you want free, W3 Total Cache and PageSpeed Cache (if your host supports LiteSpeed servers) are both solid. They just require more configuration to get right.

One thing I got wrong: I had two caching plugins active at the same time for about a week, thinking more was better. It actually caused weird display glitches and didn’t improve speed at all. One caching plugin, configured properly, is all you need.

Step Four: Compress and Resize Your Images

This was embarrassing to fix because the problem was entirely self-inflicted.

I had been uploading photos straight from my camera, sometimes 5–8MB JPEGs, because I thought higher quality images meant a better-looking blog. Technically true, but no human eye can tell the difference between an 8MB image and a 200KB compressed version on a 1080p monitor. The browser doesn’t care about your artistic intent.

Install ShortPixel or Imagify (both have decent free tiers) to automatically compress images as you upload them. I ran ShortPixel’s bulk optimization on my existing library and compressed over 400 images, saving something like 2GB of total file size. It took about 20 minutes to run overnight and I noticed the difference immediately.

Also set your images to the correct display size before uploading. If your blog content area is 800px wide, there’s no reason to upload a 4000px image and let WordPress or the browser scale it down.

Step Five: Deal With Your Plugins

Every plugin adds code that has to load. Some plugins are well-optimized and add barely any weight. Others are tiny in function but heavy on scripts.

Go through your plugin list and ask honestly: do I actually use this? I deleted eight plugins the day I did this audit. Two were deactivated but still installed (still slow — deactivated plugins can still add database overhead depending on how they’re built). Three were for features I’d experimented with once and forgotten.

For the plugins I kept, I used Query Monitor to check which ones were making the most database queries and slowing down page generation. This free plugin gives you a detailed breakdown you can read right in your WordPress dashboard.

One thing nobody told me: some contact form plugins, social sharing plugins, and page builders load their CSS and JavaScript globally, on every page, even if that page has nothing to do with those features. There are plugins like Asset CleanUp that let you selectively disable scripts and styles on pages where they’re not needed. This alone shaved nearly a second off my load time on blog posts.

Step Six: Use a CDN

A CDN (Content Delivery Network) stores copies of your static files — images, CSS, JavaScript — on servers around the world. When someone visits your site, those files load from the server closest to them instead of traveling all the way to wherever your hosting server sits.

Cloudflare has a genuinely useful free tier that handles CDN, basic security, and caching at the DNS level. It took me about 30 minutes to set up and I noticed improved load times for my European readers almost immediately.

If you’re on WP Rocket, it integrates cleanly with Cloudflare, which makes configuration even simpler.

Step Seven: Optimize Your Database

Over time, WordPress accumulates draft posts, spam comments, post revisions, and transient data that just sits in your database doing nothing except making queries slower.

WP-Optimize is a free plugin that cleans all of this up with a few clicks. I ran it for the first time and it cleared out over 3,000 post revisions alone. I’d been saving drafts obsessively for years without realizing WordPress keeps every single version.

Set it to auto-clean weekly and forget about it.

Mistakes That Wasted My Time

Installing a “lite” version of my theme thinking it would be faster. It was marginally lighter but the real issue was my images and plugins. Theme-switching caused two hours of layout headaches for almost no speed gain.

Running PageSpeed tests without clearing my cache first and getting confused why scores varied so much between tests.

Chasing a 100/100 PageSpeed score like it was a trophy. A score in the 80s with a real-world load time under two seconds is completely fine. Perfect scores on synthetic tests don’t always reflect actual user experience, and obsessing over the last few points sends you into diminishing returns territory fast.

Where My Site Ended Up

Starting point: 11.3 second load time, PageSpeed score of 23 on mobile.

After all of the above: 1.8 seconds, PageSpeed score of 81 on mobile, 94 on desktop.

The changes that made the biggest difference, in order, were: switching hosting, installing a caching plugin, and fixing images. Everything else was meaningful but secondary.

If you’re only going to do three things, do those three. The rest is refinement.

Speed isn’t just an SEO checkbox either. I noticed comments pick up, time-on-page improved, and I stopped getting the occasional “is your site down?” message from readers. A fast site just feels more credible, even if visitors can’t articulate why.

Start with PageSpeed Insights, be honest about what it shows you, and work through the list one item at a time. You don’t have to do everything in a weekend.

Any Question? Contact Us

Leave a Reply

Your email address will not be published. Required fields are marked *