Optimization plugins

Performance and optimization plugins detected on the page.

Field data PhoneDesktopAll Scope All sites Q2 2026 edition · Phone field outcomes
Metric LCP INP CLS
1

At a glance the headline numbers for Optimization plugins

Performance and optimization plugins detected on the page.

8
Categories
In the distribution
29.3%
Fleet share
Top: wp_rocket
100.0%
Sites with any
Of wp_rocket

Wp rocket leads the optimization plugins, on 29.3% of sites.

The State of Web Vitals · Q2 2026 · 189,915 sites · phone field datacorewebvitals.io/state-of-cwv
2

The optimization plugins mix who uses what, and how fast each group loads

VariantShare of sitesMedian
Wp rocket
29%
Litespeed cache
26%
Autoptimize
22%
Wp fastest cache
13%
Cloudflare apo
6%
W3 total cache
2%
Flyingpress
1%
Nitropack
1%

Optimization plugins. On the fleet: 29.3% wp rocket, 25.8% litespeed cache, 21.6% autoptimize. 100.0% of sites use at least one wp_rocket.

The State of Web Vitals · Q2 2026 · 189,915 sites · phone field datacorewebvitals.io/state-of-cwv
3

Why this matters for the Core Web Vitals, and where to start fixing it

Optimization plugins exist because platform defaults are slow. They minify, defer, lazy-load, compress and cache what the theme ships, without anyone touching the theme. Their presence says something honest about a site: someone cared enough to install one.

They fix symptoms, and that is fine. A deferred script you could have removed is still a win, just a smaller one. The real risk is blind configuration: the same plugin helps one site and breaks another, usually when something inline depended on a script that is now deferred. Measure before and after, always.

Related signals JS framework → Ad networks on page → Analytics on page → Third-party categories → Chrome field data from 189,915 sites, representing millions of real page loads · How we measured
Live queries (2) — admin only
Query #1: 48.6 ms
SELECT 1 AS ok FROM site_metric_bags LIMIT 0;
Query #2: 108.7 ms
WITH flat AS (
                SELECT b.cat, b.n, b.size, s.crux."phone".lcp AS cwv_val
                FROM site_metric_bags b
                JOIN sites s ON s.origin = b.origin
                WHERE b.path = 'stack.optimization'
                  AND b.cat IS NOT NULL
            ),
            totals AS (
                SELECT cat,
                    SUM(n) AS fleet_n,
                    SUM(size) AS fleet_size,
                    COUNT(*) FILTER (WHERE n IS NOT NULL) AS sample,
                    COUNT(*) FILTER (WHERE n > 0) AS with_any,
                    quantile_disc(n, 0.95) AS p95,
                    COUNT(*) AS n_rows
                FROM flat
                GROUP BY cat
                
            ),
            widths AS (
                SELECT *,
                    GREATEST(1, CAST(round(COALESCE(p95, 0)) AS INTEGER)) AS cap,
                    LEAST(GREATEST(1, CAST(round(COALESCE(p95, 0)) AS INTEGER)), 12 - 1) AS regular_buckets
                FROM totals
            ),
            widths2 AS (
                SELECT *,
                    GREATEST(1, CAST(ceil(cap * 1.0 / regular_buckets) AS INTEGER)) AS width
                FROM widths
            ),
            binned AS (
                SELECT f.cat, f.cwv_val, w.fleet_n, w.fleet_size, w.sample, w.with_any, w.width, w.regular_buckets,
                    CASE WHEN f.n IS NULL THEN NULL
                        ELSE LEAST(CAST(FLOOR(f.n * 1.0 / w.width) AS INTEGER), w.regular_buckets)
                    END AS bucket_idx
                FROM flat f
                JOIN widths2 w ON f.cat = w.cat
            )
            SELECT cat, fleet_n, fleet_size, sample, with_any, width, regular_buckets,
                bucket_idx,
                COUNT(*) AS n,
                quantile_disc(cwv_val, 0.5) AS median,
                COUNT(*) FILTER (WHERE cwv_val IS NOT NULL) AS total_cwv,
                COUNT(*) FILTER (WHERE cwv_val IS NOT NULL AND cwv_val <= 2500) AS good
            FROM binned
            WHERE bucket_idx IS NOT NULL
            GROUP BY cat, fleet_n, fleet_size, sample, with_any, width, regular_buckets, bucket_idx
            ORDER BY cat, bucket_idx;
JSON file lookups (4)
20260625/meta.json 0.05 ms
20260625/types.json 0.69 ms
20260625/loaf-scripts.json 0.67 ms
20260625/menu.json 0.16 ms