Why the same page, and not two groups of sites

When a slow site carries a tracking tag, the tag gets the blame. Comparing sites that have it with sites that don’t cannot settle the question. A site running the Meta pixel and a Tag Manager container usually also has a marketing team behind it, more pages and more images, and any gap between the two groups is the tag plus all of that.

So we held the page fixed and took one thing away. Lighthouse can refuse network requests that match a pattern, which turns any page into its own control: the same HTML from the same server in the same hour, with one component that never arrives. The difference between the two arms is the price of that component on that page.

We picked three components. Two are services found on a large share of sites, and the third is ElementsKit Lite, the WordPress plugin with the heaviest front-end files in our base when we scanned it on 1 October. Each got 20 pages.

The control: a block that matches nothing

Before any price, we checked what the method reports when there is nothing to find. On the same 20 pixel pages we ran the same ten loads, with a blocked pattern that matched no request at all. If alternating the runs, cache warm-up or drift on the site’s server produced effects of their own, they would show up here.

Median Total Blocking Time moved by +36 ms. Across 20 pages and five metrics, none of the 100 page-metric pairs came out changed under our strict rule, which calls a page changed only when its five runs with the component and its five runs without do not overlap at all. In a first, smaller run on 1 October, 2 of 40 pairs had.

The Meta pixel takes a quarter of the blocking time

Without connect.facebook.netMedianMiddle half of pages95% intervalPages
Total Blocking Time−404 ms−526 to −213−524 to −217lower on 16 of 16
Total Blocking Time, share−25%−33% to −21%
Score+3+2 to +5+2 to +5higher on 14 of 16
Speed Index−228 ms−1,100 to −66lower on 14 of 16

Every page that passed the checks blocked less without the pixel. The smallest saving was 160 ms and the largest 931 ms, in lab milliseconds. A sign test puts the chance of a 16-to-0 split arising from noise at about 3 in 100,000. The files we blocked weighed a median of about 200 KB per page.

The pixel did not move the first paint or the main image. Largest Contentful Paint was lower on 10 pages and higher on 6, a split that noise produces easily, and First Contentful Paint moved by 53 ms. That fits what the pixel is: script work once the page is under way, which costs main-thread time and leaves painting alone.

A first run on 1 October, on a mostly different set of pages, came out the same way: blocking time fell on 7 of the 7 that passed, by a median of 17%.

The Google tag and its tags take a third

Without googletagmanager.comMedianMiddle half of pages95% intervalPages
Total Blocking Time−202 ms−590 to −146−578 to −147lower on 17 of 18
Total Blocking Time, share−35%−65% to −21%
Score+6+2 to +10+2 to +9higher on 14 of 18
Speed Index−412 ms−1,270 to −37lower on 14 of 18

In milliseconds the saving is half the pixel’s, and as a share it is larger. These pages had less blocking time to begin with: a median of 859 ms in our lab, against 1,476 ms on the pixel pages. The score gained twice as much.

This is the price of a stack, and the container alone is only part of it. Blocking googletagmanager.com stops the container and every tag configured inside it: analytics, ad conversion tracking, and on some sites the pixel itself. Which tags those were differs from page to page, so the figure says what the Google tag costs as sites actually run it, and nothing about an empty container.

We do not report Largest Contentful Paint for this group. The median was −0.9 s, but single pages swung by up to a minute in both directions between runs, which makes the median meaningless. The 1 October run gave −48% blocking time and +7 points.

ElementsKit Lite costs paint time, not blocking time

Without ElementsKit LiteMedianMiddle half of pages95% intervalPages
Total Blocking Time0 ms−52 to +14lower on 9, higher on 9
Largest Contentful Paint−821 ms−1,420 to −153−1,373 to −156lower on 14 of 18
Speed Index−566 ms−816 to −256−801 to −307lower on 16 of 18
First Contentful Paint−199 ms−613 to −24lower on 15 of 18
Score+10 to +3higher on 10 of 18

The plugin’s front-end files weighed a median of about 490 KB on these pages, and nearly all of that is one icon font, elementskit-icon-pack. Our scan on 1 October found the same picture across the base: a median of 454 KB on 45 sites. A font is a download that competes with the first screen for bandwidth, and it gives the processor almost nothing to do. So blocking time stayed where it was while every paint metric improved.

The score hardly moved, and the reason is in the lab numbers. Median Largest Contentful Paint on these pages was 11.9 s in our runs, far past the point where the LCP part of the score has anything left to award, and taking 0.8 s off it there changes nothing. On the 1 October run the same plugin cost 1.8 s of LCP and 0.83 s of Speed Index.

Blocking the plugin also removes its stylesheet, so elements it styles lose their look. The number is the price of the plugin’s files. It says nothing about what the same features would cost if they were built lighter.

A note on interest: since 2 October our proxy cuts this font down to the glyphs a page uses, and on the four pages we checked it went from about 460 KB to 1–2 KB. The measurement above was taken on the original pages, without the proxy.

What could not be priced

AdSense. On 7 of 8 pages in the 1 October run, the ad script downloaded less than 1 KB in our lab, and PageSpeed’s logs for the same pages showed the same: the ads were never requested. Blocking something that did not load gives zero, and a zero would read as “free”. It is not a price, so we print none. What ads cost a visitor who actually sees them is outside what a lab run can show.

Slider Revolution. Blocking it removes the slider, which on most of these pages is the first screen. One page gained 41 points, because the page without a slider is a different, emptier page. That is the cost of a feature the owner chose to show, and we do not give it a number.

How many pages carry them

From the network logs of 3,855 audited hosts, latest measurement per host, as of 19 October 2026:

ComponentHostsShare
Anything from googletagmanager.com2,01952%
· Tag Manager container (gtm.js)1,06228%
· Google tag only (gtag.js)95625%
Meta pixel host (connect.facebook.net)61116%
AdSense (googlesyndication.com)2968%
ElementsKit Lite824.9% of WordPress hosts
Slider Revolution855.1% of WordPress hosts

“WordPress hosts” here are the 1,667 whose pages load files from /wp-content/.

The shares depend heavily on the platform. The Google tag appears on 75% of Webflow hosts (385 of 515) and on 21% of Tilda (38 of 182) and Bitrix hosts (14 of 68); the pixel host on 23% of Divi sites (15 of 66) and on 4% of Bitrix sites (3 of 68). That is also why a total moves with the mix of sites: our study of the hosts a page talks to found googletagmanager.com on 63% of 457 sites in August, on a smaller and earlier sample.

Method and limits

For each component we took 20 pages from our audit base whose original mobile network log contains its files, spread evenly across the score range. Each page was loaded ten times with Lighthouse 12.8.2 in mobile mode on 2 October 2026: five times as it is and five times with the component's address pattern blocked at the network (`--blocked-url-patterns`), the two arms alternating so that neither always ran second. A page was dropped when Lighthouse failed, when it downloaded less than 30% of the bytes PageSpeed Insights had recorded for it (a bot wall that returns no error), when the component was missing or weighed under 1 KB, when anything matching the pattern still loaded, or when the page lost more requests than the component and the files it fetched itself. 52 of 60 pages passed. For every page we take the difference between the medians of the two arms, then report the median of those differences, its interquartile range, a bootstrap 95% interval, and the number of pages that moved each way. A control run blocked a pattern that matches nothing on the 20 pixel pages. How often each component appears comes from the network logs of 3,855 audited hosts, latest measurement per host, as of 19 October 2026.

Measured on 2 Oct 2026 across 52 sites. These figures are frozen at that date — we don't quietly restate a published study when the audit base grows.

What this doesn't show

  • Our lab is slower than PageSpeed Insights. On the 16 pixel pages, median Total Blocking Time with the pixel was 1,476 ms in our runs and 680 ms in PageSpeed's measurement of the same pages. The milliseconds on this page are lab milliseconds, and on PageSpeed you should expect roughly half. That is why we lead with percentages and page counts; we assume that the share carries over, and we have not measured that it does.
  • Mobile only. Layout shift was not part of the comparison, and the score differences are Lighthouse scores from our lab, not PageSpeed scores.
  • Total Blocking Time is a lab measure of how busy the main thread is while the page loads. It is not Interaction to Next Paint, which is what real visitors experience when they tap.
  • The pages come from our own audit base, and about two thirds of them scored under 60 on mobile. They are slower than a typical site. What the same tag takes from a light page was not measured.
  • "Google tag" means everything served from googletagmanager.com: a Tag Manager container (gtm.js) on 10 of the 18 pages, the Google tag (gtag.js) with no container on 8. Container pages lost more of their blocking time (median −46%) than gtag-only pages (−35%), but ten and eight pages are too few to price the two separately.
  • Blocking a host blocks everything on it. connect.facebook.net also serves the older Facebook SDK for like buttons and embedded posts, so on a page with both the figure covers both. Tags that Tag Manager loads from other hosts never start once the container is blocked, and their cost is counted as the Google tag's.
  • Two pages were dropped because blocking took far more than the component with it (one pixel page, one Google tag page). Both lost several megabytes of other files, so leaving them out probably makes the medians smaller.
  • The prices do not add up. A page that drops both the pixel and the Google tag will not lose 60% of its blocking time: the two compete for the same main thread, and we did not measure them together.
  • Not a random sample of the web: these are sites that were submitted to us or reached us through our own discovery feed.

Sources

  1. Total Blocking Time (TBT) — web.dev, Google
    The blocking time of a given long task is its duration in excess of 50 milliseconds.
  2. Total Blocking Time (TBT) — web.dev, Google
    TBT may be a reasonable proxy metric for INP for the lab but it's not a substitute for INP in and of itself.
  3. Lighthouse command-line options — GoogleChrome/lighthouse on GitHub
    Block any network requests to the specified URL patterns
  4. Lighthouse performance scoring — Chrome for Developers, Google
    The Performance score is a weighted average of the metric scores.

Free to quote and reuse under CC BY 4.0 — credit WebSpeed and link to this page.