I'm seeing major differences between several analytics systems and want to know which number is closest to real human traffic. For one site yesterday, my ad network reported 33,941 pageviews, a local MySQL counter reported 38,604 after trying to filter bots with JavaScript, Google Analytics reported 17,647, and Cloudflare Web Analytics reported 22,190. I also display the locally stored count to visitors and use the data when selling flat-rate advertising to local businesses, so I want to avoid both overstating and understating the site's reach. How should these numbers be interpreted, and is there a better measurement approach?
4 Answers
Before comparing the totals, make sure every tool uses the same date range, timezone, domain, and metric. In the browser tools, confirm you're comparing pageviews or views rather than users or sessions. Consent settings, ad blockers, incomplete tags, JavaScript errors, and visitors leaving before the beacon loads can easily explain a much lower analytics total. Cloudflare's browser beacon can also miss blocked or failed events, so it isn't automatically a complete human-traffic counter.
I'd report a clearly defined, filtered server-side pageview figure for advertising, and keep browser analytics separately for behavior, referrals, and demographics. Document exactly what your published number includes—such as filtered HTML requests, date range, and whether repeat views count—and avoid presenting it as unique people unless you actually measure that. A consistent methodology is more credible to advertisers than switching between whichever platform gives the largest number.
For measuring whether a page was successfully requested, server-side logs or your own request counter are the most complete source because the event doesn't depend on JavaScript, consent, or an analytics domain being allowed by a browser. You still need a serious bot-filtering process, though. Exclude known crawlers, suspicious user agents, data-center traffic, impossible request rates, and repeated automated patterns. Also account for cached pages, single-page applications, and assets that don't represent actual page loads.
There isn't one universally honest number because each system measures a different layer. Your database sees nearly every request that reaches the server, including crawlers, scrapers, scanners, and prefetches. Client-side tools such as Google Analytics lose visitors who block scripts, reject consent, or leave before the tracking beacon fires. Cloudflare may filter known automated traffic and usually lands somewhere between server logs and browser analytics. The ad network is most useful for its own revenue and impression reporting, but it shouldn't automatically be treated as a count of unique human pageviews.

That makes sense. Since I sell local businesses a flat monthly placement rather than charging per click, I mainly want a defensible estimate of genuine audience size without accidentally counting too many bots.