Third Party Scripts Checker
Find every third-party script on your page. Measure bytes, blocking time, and which ones are killing INP.
By Deepak Shukla — Founder & CEO, Pearl Lemon
What This Tool Checks
- Every external script origin (analytics, ads, chat, tag managers)
- Total third-party transfer size
- Scripts blocking the main thread on load
- Long tasks contributing to INP
- Scripts loading synchronously without async/defer
- Cookie-dropping origins (GDPR/CCPA exposure)
Why This Matters
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.
How to Fix Issues
- 1.Add `async` or `defer` to every non-critical `<script>`
- 2.Move analytics to a server-side container (e.g. Stape, Cloudflare Workers)
- 3.Lazy-load chat widgets until the user scrolls past the fold
- 4.Audit Tag Manager — remove tags that fire but nobody reads
- 5.Use Partytown to move third-party scripts to a worker thread
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.
Methodology
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.
Frequently Asked Questions
Related Free Tools
Core Web Vitals
Test LCP, INP, and CLS for any URL. Get the same Lighthouse-grade scores Google uses to rank your pages.
Lazy Loading
Find images and iframes that should be lazy-loaded. See how many requests you can defer below the fold.
Font Loading
Audit how your web fonts load. Find FOIT, missing `font-display: swap`, and oversized font files dragging down LCP and CLS.
HTTP Status Code Reference
Understanding HTTP status codes helps you diagnose issues found by this tool: