Help & Documentation
Browse the full documentation index · Press Esc to close
PageSpeed

Third-party Impact

Third-party Impact ranks every external vendor script loaded on your tracked URLs — analytics platforms, tag managers, chat widgets, social embeds, consent banners, fonts — by how much main-thread time and bandwidth they cost your visitors. While third-party scripts serve legitimate purposes, they are often the single biggest contributor to TBT (Total Blocking Time) and slow INP (Interaction to Next Paint). This report tells you exactly which vendors are costing the most, so you can make an informed trade-off between functionality and performance.

What it contains

For each third-party entity (identified by URL origin) Lighthouse tracks across your latest PSI runs, we aggregate:

  • Main-thread time (ms) — total time the vendor’s script occupied the browser’s main thread, blocking user interaction. This is the primary metric to sort by: it drives TBT and INP.
  • Transfer size (KiB) — total bytes downloaded for the vendor’s resources. Relevant for bandwidth-constrained mobile users.
  • Blocking time (ms) — the portion of main-thread time that counts directly toward TBT (tasks >50 ms, minus the 50 ms grace period).
  • URLs affected — how many of your tracked URLs load this vendor.

How to read it

  • Sort by Main-thread time to find vendors that block interactivity the most. The colour bands (good / needs improvement / poor) use thresholds consistent with Lighthouse’s own scoring.
  • Sort by Transfer size to find the heaviest downloaders — most critical on mobile connections.
  • Sort by URLs affected to find platform-wide vendors. A tag manager that loads on every page and takes 300 ms of main-thread time is a far bigger problem than a 1-second widget on a single page.
  • The poor tier (red) contains vendors costing more in performance than they are likely returning in value. Defer, facade, or remove them.

Common actions by vendor type

Tag managers

Audit the tag container — most tag managers are loaded synchronously but contain dozens of dormant tags. Pause or delete tags not used in the last 90 days. Consider loading the container async.

Chat widgets

Replace with a “chat facade” — a lightweight placeholder that looks like the widget but only loads the full script on user interaction. Common with Intercom, Drift, Zendesk.

Analytics

GA4’s gtag.js is usually low-impact if loaded via GTM with an async trigger. If it appears high in this list, check for synchronous load patterns or duplicate tag instances.

Social embeds

Twitter/X, YouTube and LinkedIn embeds each pull their own heavy JS. Use the lite-youtube-embed pattern or equivalent for video; defer social buttons until user interaction.

What to do with it

  1. Sort by main-thread time and identify the top vendor in the poor tier. Establish the business value it provides and weigh that against the performance cost.
  2. For the highest-cost vendors, implement a facade or defer pattern and test the change in a staging environment before pushing to production.
  3. Log every vendor change in Change Events so PSI History can attribute subsequent score improvements to the right release.
  4. Re-run PSI after changes. The vendor should either move from poor to needs improvement, or disappear from the table entirely if removed.

Related reports