← Blog 6 min read

Why Your Google Analytics Numbers Are Lower Than Reality

Ad blockers silently drop GA4 for 25–40% of your audience. Add cookie consent drop-off and you're measuring a fraction of real traffic. Here's what's happening and why it matters.

The gap between your dashboard and reality

If you're running Google Analytics 4, the number you see in your dashboard is not your actual traffic. It's a sample of it — one that gets smaller the more privacy-conscious your audience is.

This isn't a bug in GA4. It's an architectural consequence of how the tool works. Understanding the three main sources of undercounting helps you make better decisions about what your analytics are actually telling you.

1. Ad blockers block GA4 by default

The Google Analytics script (gtag.js) is on every major ad-blocking list. Brave Browser blocks it with Shields on Standard. uBlock Origin blocks it with the default filter list. Firefox's built-in Enhanced Tracking Protection blocks it in Strict mode.

These aren't edge cases. Brave has over 70 million monthly active users. uBlock Origin has over 40 million installs on Chrome alone. According to multiple industry studies, ad blocker adoption ranges from 25% to 45% depending on the audience — higher for developer, tech, and privacy-focused readers, lower for general consumer audiences.

When a visitor has an ad blocker, the GA4 script never loads. The visit is never recorded. You have no idea it happened. There's no error in GA4, no asterisk, no warning. The number in your dashboard simply doesn't include those visitors.

We tested this directly: Logly was validated against Brave Shields (Standard and Aggressive) and uBlock Origin with EasyPrivacy. It recorded visits in all configurations where GA4 was silently blocked.

2. Cookie consent drop-off

If you're running a cookie banner, GA4 only fires after the user accepts. Users who dismiss the banner, close it, or ignore it are not tracked.

Cookie consent acceptance rates vary widely, but industry benchmarks typically land between 40% and 75% depending on banner design, placement, and whether you're using a "reject all" button prominently. If your acceptance rate is 60%, you're starting with 40% of your audience already excluded — before ad blockers enter the picture.

The irony is that the banner itself reduces the data quality it's supposed to protect. Many sites end up with analytics that represent only a compliant, engaged subset of their visitors — the people who actively clicked "accept" — which is a heavily biased sample.

3. Tab switching and wall-clock time

This one doesn't affect visit counts, but it affects session quality metrics. GA4 measures time on page as wall-clock time: the difference between when a session starts and when it ends (or when a new page loads).

Open an article, go to your email for 20 minutes, come back and close the tab. GA4 logs a 20-minute session. Your average session duration looks great. Your content appears highly engaging. None of it reflects actual reading time.

For content-heavy sites — blogs, documentation, long-form landing pages — the difference between wall-clock session duration and actual active reading time is typically 3 to 5× at the median. Most "3-minute average session" sites are actually seeing 45–60 seconds of real attention.

How much does this add up to?

Let's put rough numbers to it for a developer-focused blog:

For a general consumer site the numbers are better, but rarely does GA4 capture 100%. A 20–30% undercount is common even for audiences with low ad-blocker adoption, once consent drop-off is factored in.

This matters when you're making decisions based on the data. If you're evaluating a landing page and GA4 shows 100 visitors with a 3% conversion rate, the real picture might be 180 visitors with a different conversion rate entirely — because the 80 uncounted visitors may have different intent and behavior than those who accepted the banner.

Why Logly numbers are higher — and why that's correct

If you run Logly alongside GA4 during a migration, Logly will show more visitors. This surprises people the first time. It's not Logly overcounting — it's GA4 undercounting.

Logly uses a first-party endpoint that isn't on any block list. There's no cookie, so there's no banner, so there's no consent drop-off. The script fires for everyone who loads the page. The gap between Logly and GA4 numbers is essentially a measure of how much GA4 is missing.

For most sites, Logly shows 20–40% more pageviews than GA4. For developer audiences, it can be higher.

See your real traffic numbers

Install Logly alongside GA4 for two weeks and see the gap for yourself. Free up to 10,000 pageviews/month.

Get started free →