Put two analytics tools on the same page and they will disagree — typically by ten to forty percent, occasionally by more. This surprises people the first time, and the instinct is to find the broken one.
Neither is broken. They are counting different things, and the differences are systematic and explainable. Here they are, roughly in order of how much they matter.
1. What counts as a unique visitor
This is the largest single cause, and it is a definitional difference rather than an error.
A cookie-based tool assigns a browser an identifier that persists for months. One person visiting on ten days across a month is one unique visitor.
A cookieless tool derives an identifier that expires every day. The same person is ten daily visitors, and a monthly figure is the sum of daily figures.
For a site with loyal repeat readers, this alone can double the cookieless "visitors" number relative to the cookie-based one. Neither is wrong; they are answers to different questions. "How many distinct people visited this month" and "how many visitor-days did we have" are both legitimate, and only one of them can be answered without persistent identity — which is the trade the design makes deliberately.
2. Consent, and the traffic that is never measured at all
If a tool only fires after consent, its numbers describe the consenting subset. Depending on audience and jurisdiction, that can be anywhere from half to nearly all of your traffic.
The volume matters less than the bias. Visitors who accept tracking are not a random sample: they skew toward less technical users, particular geographies, and people in a hurry. Every conclusion drawn from that sample inherits the skew — and the direction of the skew is unknowable from inside the sample.
A tool that runs without consent measures everyone. That is a bigger number and a more representative one.
3. Ad blockers and where the script is served from
Blocklists target known third-party analytics domains. A script served from google-analytics.com is on every list ever published; a script served from your own domain is on none of them, because a blocklist cannot enumerate every website's own paths.
The gap is large. Technical audiences block heavily — twenty to forty percent is common on a developer-focused site — and general audiences less so, but it is never zero. This is why a self-hosted first-party tracker usually reports more pageviews than Google Analytics on the same page.
4. Bots
This is the one that produces the shocking numbers, and the direction is the opposite of what people expect: more filtering means lower numbers, and lower is more correct.
Tools that filter bots by user-agent string only catch the honest ones. Tools that filter at the network edge, using signals like connection fingerprints and ASN reputation, catch a great deal more. On a small site, the difference between the two approaches can be most of the traffic. What is actually being removed is worth understanding before you conclude your site collapsed overnight.
5. Sessions and when they end
Most tools use a thirty-minute inactivity timeout, but the details differ:
- Does a session end at midnight? GA4 historically ended sessions at midnight in the property's timezone; others carry them across.
- Does a change of campaign source start a new session? In GA4, yes. In many others, no.
- Is a session with one pageview and thirty seconds of engaged time a bounce? Definitions vary — GA4 replaced bounce rate with engagement rate precisely because the old definition was so inconsistent.
Two tools can see identical pageviews and produce session counts that differ by fifteen percent from these rules alone.
6. When the pageview is sent
A tag that fires on DOMContentLoaded counts visitors who leave during loading. A tag that fires after full page load does not. A tag loaded through a tag manager fires after the manager, which fires after consent, which fires after the visitor has clicked something — by which point some of them are gone.
On a slow page or a slow connection, this is a measurable share of the traffic.
7. Timezones and day boundaries
If one tool reports in UTC and another in your local timezone, every daily figure is shifted by the offset. The monthly totals agree; every daily comparison is wrong. This is the easiest discrepancy to find and the most embarrassing to find late.
Which number should you use?
For a decision, use the tool that measures the whole population consistently, and use it for comparisons rather than absolutes:
- Is this month better than last month? Any consistent tool answers this correctly. Consistency matters far more than accuracy.
- Which page is the most read? Any tool, since relative ranking survives all of the above.
- Did this campaign work? The tool with the fewest measurement gaps — a consent-gated tool is answering about the consenting subset.
- How many actual human beings visited? No tool knows. Every one of them is estimating, and any tool that presents this figure without qualification is overstating what it can see.
The rule that matters
Pick one tool and stick to it. An analytics figure is nearly always used as a comparison against another figure from the same source. A consistent method with a known bias supports every comparison you will actually make. Switching tools to chase a more flattering number resets your entire history, and the new number will be wrong in a different direction.
If you do switch, run both in parallel for a fortnight and write down the ratio. That single documented number answers every question anyone will ask for the next year.
Common questions
Why does Google Analytics show fewer visitors than my server logs?
Server logs count every request including bots, crawlers and prefetches, while analytics scripts only count browsers that executed JavaScript and were not blocked. Ad blockers, consent banners and visitors who leave during page load all create gaps in the script's view that the logs do not have.
Which analytics tool is the most accurate?
None of them is accurate in absolute terms, because every method has systematic gaps. What matters is consistency: a tool that measures the same way every day supports the period-to-period comparisons that analytics is actually used for, which is why switching tools to chase a better-looking number is usually counterproductive.
Why did my traffic drop after switching analytics tools?
Usually bot filtering. Tools that identify bots at the network edge remove traffic that user-agent-based filtering counted as human, and on smaller sites that can be a large share of the total. Unique visitor definitions also differ: a tool that expires its identifier daily counts a returning visitor once per day rather than once per month.