Tag managers on page

Tag managers present on the page.

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

At a glance the headline numbers for Tag managers on page

Tag managers present on the page.

8
Categories
In the distribution
87.2%
Fleet share
Top: google_tag_manager
100.0%
Sites with any
Of google_tag_manager

87.2% of sites load Google Tag Manager.

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

The tag managers on page mix who uses what, and how fast each group loads

VariantShare of sitesMedian
Google tag manager
87%
Matomo tag manager
9%
Tealium iq
2%
Segment tag manager
1%
Adobe launch
0%
Piwik pro tag manager
0%
Tagcommander
0%
Ensighten
0%

Tag managers on page. On the fleet: 87.2% google tag manager, 8.7% matomo tag manager, 1.6% tealium iq. 100.0% of sites use at least one google_tag_manager.

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

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

A tag manager is remote code execution for the marketing team. It loads first, then injects whatever the container holds: more scripts, more pixels, more vendors. None of it passes through your build or your code review, and all of it runs on your visitor's main thread.

The manager itself is not the cost. The contents are, and containers only ever grow. Audit the container like a dependency list: every tag has an owner, a purpose and an expiry date, or it goes.

Related signals Third-party categories → Optimization plugins → Consent platforms → CMS → Chrome field data from 189,915 sites, representing millions of real page loads · How we measured
Live queries (2) — admin only
Query #1: 30.7 ms
SELECT 1 AS ok FROM site_metric_bags LIMIT 0;
Query #2: 3,563.2 ms
WITH flat AS (
                SELECT CAST(p.key AS VARCHAR) AS cat, 1.0::DOUBLE AS n, NULL::DOUBLE AS size, s.crux."desktop".lcp 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 = 'tag_managers'
                  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 <= 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.03 ms
20260625/types.json 1.12 ms
20260625/loaf-scripts.json 0.47 ms
20260625/menu.json 0.17 ms