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 stable each group is

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: 36.2 ms
SELECT 1 AS ok FROM site_metric_bags LIMIT 0;
Query #2: 2,866.9 ms
WITH flat AS (
                SELECT CAST(p.key AS VARCHAR) AS cat, 1.0::DOUBLE AS n, NULL::DOUBLE AS size, s.crux."phone".cls AS cwv_val
                FROM sites s, UNNEST(s.entities.providers) AS u(p)
                WHERE p.key IS NOT NULL
                  AND CAST(p.key AS VARCHAR) <> ''
                  AND p.category = 'performance'
                  AND regexp_matches(CAST(p.key AS VARCHAR), '^[a-zA-Z0-9_]+$')
            ),
            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
                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 <= 0.1) 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.03 ms
20260625/types.json 2.81 ms
20260625/loaf-scripts.json 0.55 ms
20260625/menu.json 0.20 ms