GA4 is not installed twice
Why this matters
Two GA4 tags on one page double-count every event. Traffic figures look plausible while every conversion number is inflated and every ROAS calculation feeds wrong data to Smart Bidding.
How this tool detects it
The tool counts two loads separately: occurrences of gtag/js?id=G-… (GA4 itself) and occurrences of gtm.js?id=GTM-… (a Tag Manager container). They are judged independently and never summed.
That separation matters. One GTM container plus one GA4 snippet is a normal setup — GTM is what loads GA4, so seeing both is not duplication. Only GA4 loading twice counts as a duplicate install.
The tool also compares how many distinct measurement IDs appear. Two or more different G- IDs means two properties are running at once, even if each is loaded exactly once.
A duplicated GTM container is a related but separate problem, and it is reported under the Tag Manager check rather than here — the damage looks the same but the fix is different.
Where this check can mislead you
Static analysis has limits. These are the cases where this particular check will report a result that does not match reality — worth knowing before you act on it.
- Cannot tell whether two properties point at the same dataset. Two different IDs are always duplication. The same ID loaded twice is caught by load count, but the same property configured separately in two containers is invisible at the static level.
- Event-level duplication is not detected. Even with GA4 loaded once, several GA4 configuration tags in GTM firing on the same event cannot be found statically — that needs GTM Preview, fired one at a time.
- The noscript version may not be counted. This tool reads page source text, so a GA4 reference wrapped in conditional markup inside
<noscript>may go unnoticed.
Examples
<script async src="https://www.googletagmanager.com/gtm.js?id=GTM-ABC123"></script>
<!-- GA4 is already configured inside GTM, and hard-coded here as well -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-ABC123"></script>
<script>
gtag('js', new Date());
gtag('config','G-ABC123');
</script>
The most classic GA4 migration mistake. GA4 was added to the template during the migration, but the original hard-coded copy was never removed. Every pageview now reports twice.
<!-- the theme template already had one, and here is a second -->
<script async src="https://www.googletagmanager.com/gtm.js?id=GTM-XYZ789"></script>
<script async src="https://www.googletagmanager.com/gtm.js?id=GTM-XYZ789"></script>
Common after switching themes without clearing the old template. Every tag and trigger inside the container runs twice.
<script>window.dataLayer=window.dataLayer||[];</script>
<script async src="https://www.googletagmanager.com/gtm.js?id=GTM-ABC123"></script>
<!-- the GA4 configuration lives in the GTM UI, not hard-coded in HTML -->
Only GTM is in the HTML; GA4 is loaded from inside the container. This is the recommended approach.
How to fix it
- Search your source for
gtag/js?id=andgtm.js?id=and count each separately. - If a GTM container exists, check whether GA4 is already configured inside it. If it is, delete the hard-coded GA4 snippet from the HTML.
- Search for all distinct
G-IDs. If more than one exists, decide which is current and remove the rest — and deactivate the retired properties in the GA4 admin so data stops flowing into them. - If the same GTM ID appears several times, check four usual sources: the theme template, the page builder, a footer widget, and plugin injection.
- After cleanup, test a specific URL with Search Console's URL Inspection tool and confirm the rendered HTML contains only one copy.
Verify it worked
After making changes, confirm delivery rather than assuming. These steps require your Google login, which is exactly why this tool stops short of them.
- Test the URL in Search Console URL Inspection, look at the rendered HTML returned by the live test, and confirm it contains one copy of gtag.
- Watch the live event stream in GA4 DebugView and see whether one action produces two records.
- Compare event totals in the GA4 Events report: if a count sits well above a plausible multiple of pageviews, double reporting is confirmed.
- In the Google Ads conversions report, a figure close to double your real business volume is almost certainly double counting.
Related checks
Check whether your site has this problem — no login required.