Skip to main content
Blog/Core Web Vitals
Performance Guide

How GTM Tags Affect Core Web Vitals - and What to Do About It

Third-party tags loaded via GTM can add hundreds of milliseconds to your LCP, trigger layout shifts, and block the main thread long enough to push your INP into Poor territory. Here is how to measure the impact and fix it without killing your tracking.

By GetInlytics·8 min read·May 2026

Why GTM tags affect Core Web Vitals

GTM fires its tags synchronously or asynchronously depending on the tag type and trigger configuration. Tags that fire on DOM Ready or Page Load can execute before the browser has finished rendering the Largest Contentful Paint element - blocking the LCP resource, triggering layout shifts, or blocking the main thread during key interaction windows.

The problem is compounded by tag accumulation. A GTM container that started with 5 tags and grew to 40 over three years often has no performance review. Each new tag adds a small amount of overhead - and collectively they can push a Good LCP into Poor territory.

Which tags cause the most performance damage

Tag CategoryLCP ImpactINP ImpactWhy
A/B testing (VWO, Optimizely)HighMediumBlocks rendering until variant is selected - adds 200-700ms to LCP
Heatmap tools (Hotjar, MS Clarity)MediumHighRecords DOM mutations, adding processing overhead on scroll/click
Live chat (Intercom, Drift)MediumMediumLoads full chat UI - large JS bundle evaluated on page load
Marketing pixels (Meta, TikTok)LowLowSmall scripts, async loading - minimal impact when configured correctly
Tag managers within tag managersHighMediumNested TMS adds full container load overhead on top of GTM
Custom HTML tags with document.writeCriticalHighSynchronous - blocks parser and LCP resource discovery

How to fix tag performance issues

Move A/B testing tags to fire on scroll or interaction

If your A/B testing tag fires on DOM Ready, move the trigger to Element Visibility (0% visibility, 0ms delay on the fold). This defers variant selection until after LCP while still applying the test before users see the component.

Defer heatmap tools to after page interactive

Hotjar and MS Clarity record DOM mutations. Configure them to fire on a Custom Event trigger like "gtm.load" (window.onload equivalent) rather than DOM Ready - this pushes the recording initialisation past LCP.

Remove document.write from Custom HTML tags

document.write blocks the HTML parser. Replace any Custom HTML tags using document.write with equivalent code using DOM manipulation (createElement, appendChild) and mark the script as async.

Audit zombie tags

Tags added for campaigns or A/B tests that ended often stay active. In GTM, filter by last modified date and review any tag not modified in 6+ months. Pausing unused tags removes their load overhead entirely.

Find which tag is hurting your LCP score

TagSense Tag Performance Budget shows per-vendor LCP impact in real user sessions - not synthetic tests. See the exact milliseconds added by each vendor.