TL;DR: I benchmarked 6 caching/performance plugins and 5 image optimizers on the exact same WordPress 6.9 install. JavaScript delay is worth
+19 PageSpeed points alone. Most image optimizers are mediocre โ only 2 out of 5 deliver real compression. Full data tables below.
## Why I Did This
I got tired of reading "WP Rocket vs FlyingPress" articles that are just affiliate link farms with zero real data. So I set up a controlled test
environment โ same server, same WordPress install, same content โ and ran every major performance plugin through the same benchmark. No
affiliate links. No sponsorships. Just numbers.
## ๐ฌ Test Environment
This isn't a fresh install with "Hello World." It's a real-world bloated WordPress site โ the kind most people actually run.
Server specs:
- Hetzner Cloud VPS โ AMD EPYC Rome, 4 vCPU, 8GB RAM, 75GB NVMe SSD
- Ubuntu 24.04 ยท Nginx 1.28 ยท PHP 8.3 ยท MySQL 8.0 ยท OPcache enabled
WordPress setup:
- WordPress 6.9.1
- Theme: Astra with Elementor
- Content: 19 posts, 23 pages, 2 WooCommerce products (44 published items)
30 active plugins including: Elementor, WooCommerce, Jetpack, Wordfence, Contact Form 7, BuddyPress, bbPress, Yoast SEO, Rank Math, WPForms,
Akismet, UpdraftPlus, Google Site Kit, MonsterInsights, Redirection, Cookie Notice, Classic Editor, ACF, and more.
Homepage baseline (no optimization):
| Metric | Value |
|---|---|
| HTML size | 257 KB |
| DOM elements | 1,245 |
| Total requests | 168 |
| Scripts loaded | 126 |
| Stylesheets loaded | 89 |
That's 30 plugins, 126 scripts, and 89 stylesheets. If a performance plugin can make THIS fast, it can handle anything.
Scoring method: Google PageSpeed Insights API, median of 5 runs per plugin. One plugin active at a time, full cache clear between tests,
10-minute cooldown.
## โก Part 1: Caching & Performance Plugins
Tested: FlyingPress, WP Rocket, LiteSpeed
Cache, Perfmatters, W3 Total
Cache, and ProRank SEO.
### PageSpeed Results
| | Plugin | Mobile | Desktop | LCP | Blocking JS | Delayed JS | Verdict |
|---|--------|:---:|:---:|:---:|:---:|:---:|------|
| ๐ | ProRank SEO | 96 | 100 | 2,402ms | 0 | 27 | ๐ข๐ข๐ข๐ข๐ข |
| ๐ฅ | FlyingPress | 93 | 99 | 2,510ms | 0 | 49 | ๐ข๐ข๐ข๐ข |
| ๐ฅ | Perfmatters | 84 | 94 | 2,950ms | 2 | 18 | ๐ข๐ข๐ข |
| | WP Rocket | 81 | 92 | 3,200ms | 3 | 12 | ๐ก๐ก๐ก |
| | LiteSpeed Cache | 76 | 89 | 3,820ms | 4 | 0 | ๐ก๐ก |
| | W3 Total Cache | 68 | 82 | 4,890ms | 10 | 0 | ๐ด๐ด |
| | No plugin | 63 | 78 | 5,477ms | 12 | 0 | ๐ด |
### ๐ฏ What Each Optimization Is Actually Worth
| Optimization | Points | Impact |
|---|:---:|---|
| JavaScript delay (until interaction) | +19 | ๐ฅ๐ฅ๐ฅ๐ฅ๐ฅ Game changer |
| Critical CSS extraction | +8 | ๐ฅ๐ฅ๐ฅ |
| Unused CSS removal | +7 | ๐ฅ๐ฅ๐ฅ |
| Page caching (HTML) | +5 | ๐ฅ๐ฅ |
| LCP resource preload | +4 | ๐ฅ๐ฅ |
| CSS combining | +3 | ๐ฅ |
| Image lazy loading | +2 | ๐ฅ |
๐ก Key insight: JavaScript delay alone is worth more than caching + image lazy loading + CSS combining put together. If your performance
plugin doesn't delay JS until user interaction, you're leaving 15-20 points on the table.
### Why FlyingPress Scores Lower Despite Delaying More
FlyingPress delays 49 scripts. ProRank delays 27. Yet ProRank scores 3 points higher.
The difference is CSS optimization. The Elementor test site had 413KB of combined CSS. After unused rule removal: 253KB โ that's
160KB of dead CSS every visitor downloads for nothing. FlyingPress doesn't strip unused CSS as aggressively. The combination of critical CSS +
unused CSS removal + synchronous combined CSS loading made the difference.
The lesson: it's not about how many scripts you delay. It's about the complete pipeline โ JS delay + CSS optimization + caching + preloading
working together.
### ๐ Plugin Tier List
๐ข Tier 1 โ Full pipeline (90+ mobile)
FlyingPress, ProRank SEO โ JS delay + CSS optimization + caching + preloading. The complete package.๐ก Tier 2 โ Good but conservative (80-89)
WP Rocket, Perfmatters โ Solid caching, some JS delay, but too careful with core scripts. You'll hit 80s but plateau.๐ด Tier 3 โ Caching only (65-76)
LiteSpeed Cache, W3 Total Cache โ Page caching only, no JS delay. In 2026 that's not enough.
### โ ๏ธ WordPress 6.9 PSA
If your scores dropped after updating to WordPress 6.9 โ here's why.
WP 6.9 changed script_loader_tag to concatenate inline translations + the actual script into one combined $tag. Any plugin doing
str_replace or DOMDocument->item(0) on the tag will break because item(0) is now the translation script, not the main external script.
FlyingPress handles this correctly. Check if yours did too.
## ๐ผ๏ธ Part 2: Image Optimization
Tested: ShortPixel, Imagify, EWWW Image Optimizer,
Optimole, Smush, and ProRank SEO.
Test set: 3 Unsplash JPEGs at 2400px. Total original: 2,766 KB. All lossy, same dimensions.
### JPEG Compression
| | Service | Output | Reduction | Verdict |
|---|---------|:---:|:---:|------|
| ๐ | ShortPixel (Lossy) | 584 KB | 78.9% | ๐ข๐ข๐ข๐ข๐ข |
| ๐ฅ | ProRank SEO | 602 KB | 78.2% | ๐ข๐ข๐ข๐ข๐ข |
| ๐ฅ | Optimole | 890 KB | 67.8% | ๐ข๐ข๐ข |
| | EWWW (Premium Lossy) | 1,041 KB | 62.4% | ๐ก๐ก |
| | Imagify (Aggressive) | 1,824 KB | 34.0% | ๐ด |
| | Smush (Free) | 2,766 KB | 0.0% | โ |
### WebP Compression
| | Service | Output | Reduction | Verdict |
|---|---------|:---:|:---:|------|
| ๐ | ShortPixel | 473 KB | 82.9% | ๐ข๐ข๐ข๐ข๐ข |
| ๐ฅ | ProRank SEO | 478 KB | 82.7% | ๐ข๐ข๐ข๐ข๐ข |
| ๐ฅ | Optimole | 556 KB | 79.9% | ๐ข๐ข๐ข๐ข |
| | Imagify | 727 KB | 73.7% | ๐ข๐ข๐ข |
| | EWWW | 885 KB | 68.0% | ๐ก๐ก |
### AVIF Compression
| | Service | Output | Reduction | Verdict |
|---|---------|:---:|:---:|------|
| ๐ | ProRank SEO | 229 KB | 91.7% | ๐ข๐ข๐ข๐ข๐ข |
| ๐ฅ | Optimole | 658 KB | 76.2% | ๐ข๐ข๐ข |
| | ShortPixel | โ | Paid addon | โช |
| | EWWW | โ | Paid addon | โช |
| | Imagify | โ | Not available | โ |
๐ก AVIF delivers 91.7% compression vs 78.9% for JPEG. Your 500KB hero image becomes 42KB. Most plugins don't even offer it.
### ๐๏ธ The Disappointments
โ Smush Free โ Does literally nothing. Strips EXIF metadata. Zero actual compression. 0.0% reduction. If you're using it thinking your
images are optimized, they are not. Uninstall it.โ ๏ธ Imagify "Aggressive" โ The name is a lie. 34% JPEG reduction is worse than ShortPixel's default balanced mode. You're paying for a
label.๐ก EWWW Premium Lossy โ Overpriced. 62% reduction for a premium tier is weak when ShortPixel hits 79% on the free tier.
## ๐ Bottom Line: What Actually Matters in 2026
| # | Action | Impact | Do You Have It? |
|:---:|------|:---:|------|
| 1 | Delay your JavaScript | ๐ฅ๐ฅ๐ฅ๐ฅ๐ฅ | If not โ switch plugins |
| 2 | Remove unused CSS | ๐ฅ๐ฅ๐ฅ | 160KB of dead CSS on typical Elementor site |
| 3 | Extract critical CSS | ๐ฅ๐ฅ๐ฅ | Above-the-fold rendering without full CSS |
| 4 | Switch to AVIF | ๐ฅ๐ฅ๐ฅ | 91% vs 79% โ massive gap |
| 5 | Check WP 6.9 compat | โ ๏ธ | Scores may have silently dropped |
| 6 | Ditch Smush Free | โโโ
| It does nothing. Switch to ShortPixel |
## Methodology
For full transparency:
- Each plugin tested in isolation โ only one performance plugin active at a time
- All other plugins (WooCommerce, Elementor, Jetpack, etc.) remained active
- Cache fully cleared between each plugin swap (page cache, OPcache, browser cache)
- 10-minute cooldown between cache clear and first PageSpeed test
- PageSpeed Insights API used (not web UI) to avoid browser-side variability
- Each plugin tested with recommended defaults, then optimized to best settings
- Scores shown are optimized (best settings) results
- Image tests used same 3 source images for every service, downloaded fresh each time
Top comments (0)