The Google PageSpeed Insights score glared at me: 23 out of 100.
Load time: 8.3 seconds on mobile.
I knew my blog felt slow, but seeing the number made it real. Nearly half of visitors were probably abandoning the site before it even loaded. Google was penalizing me in rankings. Every slow second was costing traffic and revenue.
Over the following month, I systematically optimized everything. The result: 1.4-second load time, 94 PageSpeed score.
Why Speed Matters Beyond SEO
Every additional second of load time increases bounce rate by approximately 7%. A blog that loads in 5 seconds versus 2 seconds loses roughly 20% of visitors to impatience alone. Speed isn’t just about Google rankings—it’s about every reader who will or won’t stick around to read your content.
Here’s every optimization I made, organized from quick wins to advanced techniques.
Measuring Your Starting Point
Before optimizing, establish baseline measurements.
Tools for Speed Testing
Google PageSpeed Insights (pagespeed.web.dev)
- Tests both mobile and desktop
- Shows Core Web Vitals
- Provides specific recommendations
- Free
GTmetrix (gtmetrix.com)
- Detailed performance breakdown
- Waterfall analysis (see what loads when)
- Historical tracking
- Free tier sufficient
WebPageTest (webpagetest.org)
- Multiple test locations
- Real browser testing
- Filmstrip view of loading
- Free
My Baseline Numbers
| Metric | Before Optimization | Target | After |
|---|---|---|---|
| PageSpeed Score | 23 | 80+ | 94 |
| Load Time | 8.3s | Under 2.5s | 1.4s |
| LCP | 7.2s | Under 2.5s | 1.8s |
| Total Page Size | 4.2MB | Under 1.5MB | 0.8MB |
| Requests | 87 | Under 40 | 28 |
Test your site now. Note your starting numbers. You’ll want to see the improvement.
Quick Wins: 80% Impact With Minimal Effort
These optimizations take minutes but dramatically improve speed.
1. Compress and Optimize Images
Images typically consume 50-80% of page weight. Optimizing them is the highest-impact single change.
For existing images:
Use ShortPixel, TinyPNG, or Imagify to compress existing images. Most images compress 60-80% without visible quality loss.
WordPress plugins:
- ShortPixel (free tier: 100 images/month)
- Imagify (free tier: 20MB/month)
- Smush (free, slower)
For new images:
Before uploading, resize images to maximum display size. If your content width is 800px, don’t upload 3000px images.
Format choice:
- WebP: Best compression, supported everywhere now
- JPEG: Photos, complex images
- PNG: Graphics with transparency
My result: Image optimization alone reduced page size from 4.2MB to 1.1MB.
“I spent two hours compressing my blog’s 400 images using ShortPixel’s bulk optimization. Page load time dropped from 8.3 seconds to 4.1 seconds—just from images. It was the single biggest speed improvement I made.”
2. Install a Caching Plugin
Caching serves pre-built pages instead of generating them fresh for each visitor.
For WordPress:
WP Rocket ($59/year) - Best overall, easiest setup LiteSpeed Cache (free) - Best for LiteSpeed hosting W3 Total Cache (free) - Powerful but complex
Basic caching settings:
- Enable page caching
- Enable browser caching
- Enable GZIP compression
- Set cache expiration (24 hours minimum)
My result: Caching reduced server response time from 1.2 seconds to 0.2 seconds.
3. Use a CDN
Content Delivery Networks serve your site from locations near your visitors, reducing latency.
Free options:
- Cloudflare (free tier excellent for most blogs)
- BunnyCDN ($1/month for small blogs)
Setup for Cloudflare:
- Sign up at cloudflare.com
- Add your domain
- Update nameservers at your registrar
- Enable “Auto Minify” and “Brotli” compression
- Set SSL to “Full” or “Full (Strict)”
My result: CDN reduced load time for international visitors by 40-60%.
4. Choose Quality Hosting
Bad hosting can’t be fixed by optimization. If you’re on cheap shared hosting, you have a ceiling on possible speed.
Recommended hosts for speed:
- SiteGround (excellent speed, $3.99/mo)
- Cloudways (VPS performance, $14/mo)
- Kinsta (premium WordPress, $35/mo)
Hosting red flags:
- Load times over 3 seconds with minimal content
- Frequent downtime
- No server-side caching
- No CDN integration
My result: Switching from cheap shared hosting to SiteGround cut baseline server response from 800ms to 180ms.
Medium Effort: Deeper Optimizations
These take more time but yield significant additional improvements.
5. Clean Up Plugins
Every plugin adds weight. Most blogs have plugins they’ve forgotten about or don’t need.
Audit process:
- List all active plugins
- For each: “Do I actively use this?”
- Deactivate unused plugins
- Delete deactivated plugins
Plugin alternatives:
- Replace multiple small plugins with one comprehensive solution
- Use code snippets instead of plugins for simple functions
- Remove “visual builder” plugins if not using them
My result: Removing 8 unused plugins reduced page requests by 15 and load time by 0.4 seconds.
Plugin Quality Matters
Two blogs can both have 15 plugins—one loads in 1.5 seconds, the other in 5 seconds. Plugin quality varies enormously. Before installing, check recent reviews mentioning performance. Avoid plugins last updated over a year ago.
6. Optimize Your Theme
Bloated themes are performance killers. “Feature-rich” often means “slow-loading.”
Lightweight theme options:
- GeneratePress (fast, flexible)
- Astra (good balance of speed and features)
- Kadence (modern, performant)
- Blocksy (fast, free version available)
Theme optimization:
- Disable unused theme features
- Remove unused Google Fonts (or host locally)
- Minimize slider and animation usage
- Avoid mega-menus unless necessary
My result: Switching from a bloated theme to GeneratePress reduced page size by 300KB.
7. Lazy Load Images and Videos
Lazy loading delays loading below-the-fold images until users scroll to them.
Implementation:
Most caching plugins include lazy loading. Or use:
- Native browser lazy loading (add
loading="lazy"to images) - Plugin: Lazy Load by WP Rocket (free)
Settings to check:
- Don’t lazy load above-the-fold images (hurts LCP)
- Lazy load iframes (especially YouTube embeds)
- Consider fade-in animations for visual polish
My result: Lazy loading reduced initial page weight by 60% on image-heavy posts.
8. Minify CSS, JavaScript, and HTML
Minification removes unnecessary characters (spaces, comments) from code files.
Tools:
- WP Rocket includes minification
- Autoptimize (free plugin)
- Asset CleanUp (free, removes unused CSS/JS)
Caution: Aggressive minification can break functionality. Enable one option at a time and test thoroughly.
My result: Minification reduced combined CSS/JS file sizes by 35%.
Advanced Optimizations
These require more technical knowledge but squeeze out remaining performance gains.
9. Eliminate Render-Blocking Resources
Render-blocking resources prevent the page from displaying until they load. Google flags these specifically.
What to do:
Defer JavaScript:
Add defer attribute to non-critical scripts, or use a plugin that handles this automatically.
Inline critical CSS: Extract the CSS needed for above-the-fold content and inline it. WP Rocket and some caching plugins automate this.
Preload key resources: Add preload hints for crucial fonts and scripts.
My result: Eliminating render-blocking reduced LCP by 0.8 seconds.
10. Optimize Database
WordPress databases accumulate bloat: post revisions, spam comments, transients, orphaned metadata.
Cleanup tools:
- WP-Optimize (free)
- Advanced Database Cleaner (free)
- WP Rocket includes database optimization
Regular maintenance:
- Delete post revisions (or limit to 5)
- Remove spam and trashed comments
- Clear transients monthly
- Optimize database tables
My result: Database cleanup improved Time to First Byte by 100ms.
11. Use Efficient Hosting Features
Modern hosting provides server-level optimizations:
Server-side caching:
- Redis or Memcached object caching
- Faster than plugin-based caching
PHP version:
- Use PHP 8.0+ (significant speed improvement over PHP 7.x)
- Check hosting panel for PHP version settings
HTTP/2 or HTTP/3:
- Enables multiplexing (parallel resource loading)
- Most quality hosts support this automatically
My result: Enabling Redis object caching reduced database query time by 50%.
Core Web Vitals: What Google Actually Measures
Google’s Core Web Vitals are specific metrics that affect rankings:
Largest Contentful Paint (LCP)
What it measures: Time until the largest visible element loads Target: Under 2.5 seconds Main causes of slow LCP:
- Slow server response
- Unoptimized hero images
- Render-blocking resources
First Input Delay (FID)
What it measures: Time until the page responds to user interaction Target: Under 100 milliseconds Main causes of slow FID:
- Heavy JavaScript execution
- Too many third-party scripts
- Unoptimized event handlers
Cumulative Layout Shift (CLS)
What it measures: Visual stability (elements shifting as page loads) Target: Under 0.1 Main causes of high CLS:
- Images without dimensions
- Ads or embeds loading late
- Fonts swapping in
My Complete Optimization Checklist
Here’s the order I recommend:
Week 1: Quick Wins
- Compress all existing images
- Install caching plugin with basic settings
- Enable CDN (Cloudflare free)
- Test and measure improvement
Week 2: Theme and Plugins
- Audit and remove unused plugins
- Switch to lightweight theme (if feasible)
- Lazy load images and iframes
- Minify CSS/JS/HTML
Week 3: Advanced
- Defer render-blocking JavaScript
- Optimize database
- Enable server-side caching
- Address Core Web Vitals specifically
Week 4: Fine-Tuning
- Preload critical resources
- Test on multiple devices
- Monitor for regressions
- Document your configuration
Measuring Your Results
After optimization, run the same tests you ran initially:
| Metric | Before | After | Target |
|---|---|---|---|
| PageSpeed Score | 23 | 94 | 80+ |
| Load Time | 8.3s | 1.4s | Under 2.5s |
| LCP | 7.2s | 1.8s | Under 2.5s |
| Page Size | 4.2MB | 0.8MB | Under 1.5MB |
| Requests | 87 | 28 | Under 40 |
Set up ongoing monitoring:
- PageSpeed Insights monthly check
- Google Search Console Core Web Vitals report
- Real user monitoring if available
Common Speed Optimization Mistakes
Mistake 1: Optimizing before measuring You can’t improve what you don’t measure. Test first, optimize second, measure again.
Mistake 2: Installing too many optimization plugins Multiple caching/optimization plugins conflict. Choose one comprehensive solution.
Mistake 3: Ignoring mobile Google uses mobile-first indexing. Your mobile speed matters more than desktop.
Mistake 4: Breaking functionality for speed Aggressive optimization can break features. Test thoroughly after changes.
Mistake 5: One-time optimization Speed requires ongoing maintenance. New plugins, themes, and content can introduce slowness.
Related Resources
Once your blog is fast, make sure it’s optimized for search. Check out optimize blog posts for SEO.
For the hosting foundation that makes speed possible, see my cheapest web hosting plans review.
And if you’re growing traffic, my VPS hosting guide covers when to upgrade.
Final Thoughts
Speed optimization isn’t glamorous work. Nobody reads your blog because pages load in 1.4 seconds instead of 8 seconds.
But they don’t read it if it loads in 8 seconds either—because they left before it finished loading.
Every optimization you make removes friction between your content and your readers. Faster pages mean more readers, better rankings, higher engagement, and more revenue.
The work I described took about 20 hours spread across a month. The result: permanent improvements that benefit every visitor forever.
Start with images and caching—the two highest-impact changes. Then work through the checklist methodically. You don’t need to do everything at once.
Your readers—and Google—will notice the difference.