We tested three WordPress cache plugins on the same server and the same page: our own Velox Cache, W3 Total Cache and WP Super Cache, plus WordPress with no cache plugin at all. Velox Cache was the only setup to score 100 in Google PageSpeed on both mobile and desktop, and it answered about 3 times as many requests per second as W3 Total Cache and about 10 times as many as WP Super Cache.
We make Velox Cache, so read this as a vendor benchmark. To keep it fair, we used each plugin's recommended or default settings, publish the PageSpeed reports, and list below what this test does not show.
The results at a glance
| Setup | PageSpeed mobile | PageSpeed desktop | Requests per second | First byte, home page |
|---|---|---|---|---|
| Velox Cache | 100 | 100 | 5,621 | 0.6 ms |
| W3 Total Cache 2.10.7 | 98 | 94 | 2,015 | 1.3 ms |
| WP Super Cache 3.1.4 | 98 | 95 | 573 | 4.6 ms |
| No cache plugin | 98 | 95 | 17 | 104.9 ms |
The server figures were measured with Velox Cache 1.9.1 and the PageSpeed figures with 1.9.4, both on 20 October 2026.
Server speed: who answers without starting PHP
Without a cache plugin, WordPress builds every page with PHP and the database. On our test server that took about 100 ms per page and limited the site to 17 requests per second. A page cache stores the finished HTML so that the next visitor gets a copy instead.
How the copy is delivered makes the difference:
| Setup | First byte, home page | First byte, post | Requests per second (20 concurrent) | Page, compressed |
|---|---|---|---|---|
| Velox Cache 1.9.1 | 0.6 ms | 0.6 ms | 5,621 | 23.4 KB |
| W3 Total Cache 2.10.7 | 1.3 ms | 1.3 ms | 2,015 | 20.4 KB |
| WP Super Cache 3.1.4 | 4.6 ms | 99.3 ms | 573 | 20.3 KB |
| No cache plugin | 104.9 ms | 86.7 ms | 17 | 20.2 KB |
Velox writes rules that let Apache send cached pages straight from disk, so PHP does not start at all for a cached visit. That is why it had the shortest time to first byte and the highest capacity.
Two details matter for a fair reading. WP Super Cache did not cache the post page with its default settings, which is why its post figure is close to WordPress without a cache. And the Velox page is about 3 KB larger, because its critical CSS sits inside the page so the browser can draw it without waiting for the stylesheets.
The first visit after the cache is cleared costs a little more with Velox: it adds 13–14 ms to the roughly 100 ms WordPress needs, because it optimises the page while storing it. Every later visit takes 0.6 ms.
Google PageSpeed on mobile
| Setup | Score | FCP | LCP | Speed Index | CLS |
|---|---|---|---|---|---|
| Velox Cache 1.9.4 | 100 | 0.8 s | 1.2–1.8 s | 0.8–1.9 s | 0 |
| W3 Total Cache 2.10.7 | 98 | 1.4 s | 2.3 s | 2.5 s | 0 |
| WP Super Cache 3.1.4 | 98 | 1.4 s | 2.3 s | 1.4 s | 0 |
| No cache plugin | 98 | 1.4 s | 2.3 s | 1.4 s | 0 |
FCP (First Contentful Paint) is when the first text or image appears, LCP (Largest Contentful Paint) is when the main content appears, and Speed Index shows how quickly the visible part of the page fills in. On mobile, Velox showed the first content 0.6 s earlier and the main content 0.5–1.1 s earlier. The other two plugins did not change the mobile result compared with no plugin.
For Velox we give the range of two runs, for the others one run. The test emulates a Moto G Power on slow 4G with Lighthouse 13.5.0.
A note on how this works: Velox's Balanced profile delays JavaScript until the visitor first interacts with the page and puts the critical CSS in the page. PageSpeed does not click or scroll, so delayed scripts do not run during the test, while real visitors still load them after their first interaction. That is why Velox also measures Core Web Vitals from real visitors and shows them on its dashboard.
Google PageSpeed on desktop
| Setup | Score | FCP | LCP | Speed Index | CLS |
|---|---|---|---|---|---|
| Velox Cache 1.9.4 | 100 | 0.2 s | 0.8 s | 0.3 s | 0 |
| WP Super Cache 3.1.4 | 95 | 0.3 s | 0.7 s | 2.3 s | 0 |
| No cache plugin | 95 | 0.3 s | 0.7 s | 2.3 s | 0 |
| W3 Total Cache 2.10.7 | 94 | 0.3 s | 0.6 s | 2.5 s | 0 |
Velox scored 100 on desktop as well. Its page looked complete about 2 seconds before the others (Speed Index 0.3 s against 2.3–2.5 s).
How we measured
- Server: Hetzner Cloud, 4 GB RAM, Ubuntu 26.04, Apache 2.4.66 with mod_php, PHP 8.5.4, MariaDB 11.8.
- Site: WordPress 7.1.3, Astra 4.14.1, Elementor and Contact Form 7; 8 posts, each with a 1920 px cover image and a YouTube video.
- Settings: Velox Cache Balanced profile (JavaScript delayed until the first interaction, critical CSS, lazy load); WP Super Cache in its recommended simple mode; W3 Total Cache with the page cache set to Disk: Enhanced. In each setup every other cache plugin was switched off.
- Server figures: measured from inside the server, as the average of 20 curl requests for the first byte and with ApacheBench (400 requests, 20 concurrent connections) for requests per second, after warming the cache.
- PageSpeed: pagespeed.web.dev on the home page; the cache was cleared and warmed again between setups.
What this test does not show
- The test site is light, so every setup scored high. On heavy themes with many plugins we expect the gap to grow, but we did not measure that.
- PageSpeed lab results vary from run to run, and each setup was run once or twice.
- WP Rocket was not tested because it needs a licence.
- The server figures were measured on the same machine. A real visitor also waits for the network.
Repeat it on your own site
You do not need to trust our numbers. Two commands give you the same server figures for your own site. Run them against a site you manage, outside busy hours, and once before and once after you change your cache plugin.
Time to first byte, averaged over 20 requests:
for i in $(seq 20); do curl -s -o /dev/null -w '%{time_starttransfer}\n' https://example.com/; done | awk '{s+=$1} END {printf "%.1f ms\n", s/NR*1000}'
Requests per second with 20 concurrent connections (ApacheBench, from the apache2-utils package on Debian and Ubuntu):
ab -n 400 -c 20 https://example.com/
Run the first command twice and use the second result, so that the cache is warm. For PageSpeed, test the same page several times and compare ranges rather than single scores.
Other WordPress cache plugins
People who compare cache plugins usually look at a few more names. We measured only the first two on this list; the notes on the others describe what they are, not how they would perform.
- W3 Total Cache: free, with page, object, database and browser caching and CDN settings in one plugin. Measured above.
- WP Super Cache: a free plugin from Automattic that serves static HTML copies of pages. Measured above.
- WP Rocket: a paid all-in-one plugin; page caching is on as soon as it is activated. Not tested here because it needs a licence.
- LiteSpeed Cache: free; its page cache needs a LiteSpeed web server (or the QUIC.cloud CDN), while its optimisation features also work on other servers.
- WP Fastest Cache: a free page cache with a paid premium version for extra features.
- Autoptimize: optimises CSS, JavaScript and HTML but has no page cache of its own, so it is usually combined with one.
Velox Cache puts both halves in one free plugin: a page cache that Apache or LiteSpeed serves without starting PHP, and the front-end work (critical CSS, delayed JavaScript, WebP and AVIF) that otherwise often needs a second plugin. Its AI assistant is optional and uses your own key.
Which one should you use?
If your site runs on Apache or LiteSpeed, a cache that serves pages without starting PHP gives you the biggest gain in capacity, and that is the case Velox was built for. On Nginx the PHP features of Velox work, but the server rules have to be added by hand. Whatever you choose, measure before and after on your own site, and keep only one page cache plugin active at a time.
Velox Cache is free and coming soon to the WordPress.org plugin directory. The product page has the full results and the PageSpeed reports, and you can ask us for early access there.
