Find every third-party script on your page. Measure bytes, blocking time, and which ones are killing INP.
By the time the marketing team has added analytics, ads, chat, A/B testing, session replay, conversion tracking, and a tag manager to coordinate it all, third-party scripts are usually the heaviest thing on the page. This checker inventories every external script and tells you which ones are paying their way.
## Why third-party scripts kill INP
INP measures the worst interaction latency on the page. Most third-party scripts attach global event listeners — Tag Manager fires on every click, analytics tracks every form interaction, chat widgets check session state on every input. Each of these adds milliseconds to every interaction, and the worst single one becomes your INP number. Removing or deferring one bad tag can cut INP in half overnight.
## Async vs defer vs neither
A bare `<script src="...">` blocks HTML parsing while it downloads and executes. `async` lets parsing continue but executes the script the moment it arrives (in any order). `defer` lets parsing continue and runs scripts in document order after parsing. For analytics and almost every third-party script, `defer` is the right answer — it can't make the page slower and it preserves execution order.
## Server-side tagging is the real fix
Google Tag Manager runs in the browser by default — every page load downloads 100KB+ of GTM and runs every tag client-side. Server-side GTM (or Stape, or Cloudflare's server-side container) moves the tag execution to your edge, dropping the client payload to ~30KB and removing the third-party scripts from the user's critical path entirely. It's the highest-ROI infrastructure change for any site with a heavy marketing stack.
## The chat widget pattern
Intercom, Drift, Crisp, and similar chat widgets typically ship 200–500KB of JavaScript and open a WebSocket connection before the user has decided whether they want help. The pattern that works: show a lightweight CSS-only "Chat with us" button immediately, and lazy-load the real widget on first click or after 30 seconds of session time. Same UX, 95% bandwidth saved.
## Partytown — when you can't remove the script
When marketing refuses to give up a tag, Partytown moves it to a web worker so it runs off the main thread. The script keeps working (analytics still fires, ads still load) but its long tasks no longer block your INP. It's a clever compromise for the political stalemate every perf engineer has lived through.
Third-party scripts are the leading cause of poor INP and the most common reason teams fail Core Web Vitals after their own code has been optimised. A single misbehaving tag manager can add 800ms to every interaction.
We render the page in a headless Chromium and record every network request. Anything not on your origin (or on a known subdomain you control) is classified as third-party and grouped by the second-level domain. For each origin we capture transfer size, main-thread blocking time, long-task count, cookies set, and async/defer presence. The INP impact is estimated by attributing each long task to its initiating script using the Performance Observer Long Tasks API. Cookie-dropping origins are flagged for GDPR/CCPA exposure.
There's no hard number — what matters is total blocking time and INP. A single slow analytics script can be worse than 10 well-behaved ones. We rank by impact, not count.
It can if scripts depend on document state that's not ready yet, but almost every modern third-party script handles `defer` correctly. Test in staging, but start with `defer` and only fall back to `async` for scripts that explicitly need it.
Running Google Tag Manager (or an equivalent) on your edge instead of the user's browser. Tags fire server-side from a request your origin proxies, so the client never sees the third-party scripts at all.
Yes — it's used in production by major sites including Builder.io and Astro's own site. It does add complexity, so save it for the third-party scripts you can't remove or defer further.
Because first-party code is in your control. Once you've shipped a well-built site, third-party scripts are the only thing left that's regressing your CWV — usually without anyone on the dev team knowing.