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)