Every third-party tag on your page is JavaScript. JavaScript competes for the browser’s main thread. When a tag loads a 150KB script, parses it, executes it, and makes three network requests, that work delays everything else: rendering, user input handling, layout calculation. The browser has one main thread. Tags share it with your own application code.
The three Core Web Vitals measure what the user actually experiences:
Tags affect all three. A heavy analytics script blocks the main thread and delays LCP. A chat widget that injects a button into the page after load causes CLS. A session replay script that intercepts every DOM mutation slows INP.
The TagDrishti Web Vitals panel (available after 24 hours of data collection) shows:
Site-wide CWV scores: LCP, CLS, and INP at the 75th percentile across all pages. Color-coded: green (good), yellow (needs improvement), red (poor). These numbers match what Google measures for your Search Console CWV report.
Per-page breakdown: Click any metric to see the worst-performing pages. The list is sorted by traffic volume multiplied by CWV score, so high-traffic pages with bad scores appear first. Fix these first for maximum impact.
Tag Impact table: This is the core of the performance dashboard. It lists every tag on your site with two columns:
The table is sorted by weighted impact, highest first. The top 3 entries are your priority fixes.
Across thousands of sites monitored by TagDrishti, these tag categories consistently contribute the most to performance degradation:
Live chat scripts (Intercom, Drift, Zendesk Widget, Tawk.to) typically load 200–400KB of JavaScript, inject an iframe, and add persistent event listeners. Impact: +200–500ms LCP, CLS from the chat button injection. The widget loads on every page even though users interact with it on fewer than 2% of sessions.
Full-session recording tools (Hotjar, FullStory, LogRocket) intercept every DOM mutation, mouse movement, and scroll event. Impact: +100–300ms INP due to main thread contention. The overhead increases on pages with complex, dynamic UIs. High-traffic pages with many DOM changes suffer the most.
Client-side experimentation platforms (Optimizely, VWO, Google Optimize legacy) must load before the page renders to avoid a flash of original content. They are render-blocking by design. Impact: +150–400ms LCP because the browser waits for the experiment script to decide which variant to show before painting the page.
Ad platform pixels (Facebook, TikTok, Snapchat, Criteo) individually are small (10–30KB each). The problem is quantity. A typical e-commerce site has 5–8 retargeting pixels. Combined: +100–250ms LCP from network requests and script parsing.
CMP scripts (OneTrust, Cookiebot, Termly) must load before all other tags to gate consent. They are intentionally render-blocking. Impact: +80–200ms LCP. Cannot be deferred because tags depend on the consent decision.
The simplest performance fix is changing when a tag loads. Most tags do not need to fire at page load. They can fire after the page is fully rendered without losing data.
In GTM, the default trigger for many tags is “All Pages” with a Page View event. This fires as soon as GTM loads. Change it:
Tags safe to defer to Window Loaded: chat widgets, session replay, retargeting pixels, survey tools, heatmap scripts. Tags that should NOT be deferred: GA4 page_view (needs to fire early for accurate session tracking), CMP (must load first), A/B testing (must load before render).
For tags loaded directly (not through GTM), use loading attributes:
<!-- Blocking (default, worst for performance) -->
<script src="heavy-tag.js"></script>
<!-- Defer (loads in parallel, executes after HTML parsing) -->
<script src="heavy-tag.js" defer></script>
<!-- Async (loads in parallel, executes as soon as loaded) -->
<script src="heavy-tag.js" async></script>
Use defer for tags that depend on the DOM being ready. Use async for tags that are independent of page content. Never use neither (blocking) for third-party tags.
A performance budget sets limits on what you allow tags to cost. Without a budget, tag count grows until the site is slow and nobody knows which tag pushed it over the edge.
Set these budgets for your site:
Review the budget monthly. When a new tag is proposed, check if it fits within the budget. If it does not, something else must be removed or deferred to make room.
Every 100ms of additional load time reduces conversion rates by 1–2%. A site with 4 seconds LCP is losing 15–30% of potential conversions compared to a site with 2 seconds LCP. Tags are often the largest controllable variable.