Why do Cloudflare Analytics and Google Analytics show different numbers?
23 September 2026 · by Nordva, who make Nordva Launch
The short answer
Because they count different things in different places. Cloudflare's zone analytics counts every request that passes its network, bots and all. Its Web Analytics beacon and Google Analytics both run in the browser, so ad blockers, consent choices and visitors who leave early remove visits from them. Each tool also defines a visit and a visitor its own way.
Cloudflare has two counters, not one
People usually compare Google Analytics with whichever Cloudflare screen they opened first, and the two Cloudflare screens work differently.
- Zone traffic analytics (the Analytics tab of a domain proxied through Cloudflare) is built from the requests that reach Cloudflare’s network. A request is any file, and “a typical page view requires many requests” (Cloudflare: Zone Analytics). Cloudflare says its own visitor count “is probably higher than what other analytics services may report”, because JavaScript tools do not see threats, bots and crawlers, visitors with JavaScript off, or people who leave before the page loads (Cloudflare: About Cloudflare Analytics).
- Web Analytics is a JavaScript beacon, much like Google’s tag. It counts a page view as an HTML page loaded, and a visit as a page view whose referrer is not your own hostname (Cloudflare: High-level metrics). Cloudflare says ad blockers block the beacon, while edge analytics “cannot be blocked” (Cloudflare: Web Analytics FAQ). Older data is sampled: unsampled beacon data is kept 7 days, then aggregated down to around 10% (same FAQ).
How Google Analytics counts
GA4 counts sessions and users, not requests.
- A session is a period of activity that ends, by default, after 30 minutes without any, and GA4 estimates session counts rather than counting each one exactly (Google: About Analytics sessions).
- A user is recognised by the
_gacookie, “used to distinguish users” (Google: GA4 cookie usage). Clear the cookie or switch device, and the same person counts again. - Known bots are removed automatically, and you cannot switch that off or see how many were removed (Google: Known bot-traffic exclusion).
- Consent decides what is sent. In basic consent mode, Google’s tags do not load until the visitor answers the banner; in advanced mode they send pings without cookies when consent is denied, and Google may use modelling to fill the gap (Google: Consent mode).
Why they never match
- Bots. Edge counts include them; GA4 drops the known ones.
- Blocked scripts. Ad blockers stop both Google’s tag and Cloudflare’s beacon, but not the edge.
- Consent. A visitor who says no, or ignores your banner, may never reach GA4 at all.
- Different definitions. Cloudflare’s visit starts on an outside referrer; GA4’s session ends after 30 minutes idle by default; Cloudflare’s edge visitor is an IP address, GA4’s user is a cookie.
- Estimates and sampling. Both tools approximate some numbers.
None of them is “the true number”. Each is accurate for what it counts.
How to compare fairly
- Compare like with like. Put Cloudflare Web Analytics page views next to GA4 page views (
page_viewevents), not zone requests next to GA4 users. - Use the same days and time zone. Set both to the same range; a shifted midnight moves a day’s traffic.
- Turn on Cloudflare’s bot filter. Web Analytics has an “Exclude Bots” option (Cloudflare: Dimensions).
- Check that both scripts load on every page. A page missing one of them makes a gap that looks like a counting difference.
- Watch the trend, not the level. If both lines rise and fall together, both are working. A steady gap between them is expected.
Vercel Analytics against Google Analytics
The same reasons apply. Vercel Web Analytics uses no cookies: it identifies a visitor by a hash of the request that resets every day, so one person on two days counts twice (Vercel: Web Analytics). It drops automated traffic by reading the user agent (same page). GA4’s cookie lasts two years by default (Google: GA4 cookie usage), so “visitors” means different things in each.
With Nordva Launch
Launch’s analytics is a one-line script too, so its numbers sit closer to Cloudflare’s beacon than to edge counts. It leaves out known bots, visits from data-centre networks and requests without a browser language, and counts only the domains you list for the site. Whether a visit carries a visitor id depends on the tracking mode you choose, and it never stores an IP address. It works on the Free plan. Try it in the demo.
When Launch is the wrong tool
If you need Google Ads conversion data or GA4's audiences for remarketing, keep GA4 for that job; a second counter will not replace it.
- Why does Cloudflare show more visitors than Google Analytics?
- Why is Cloudflare Web Analytics different from GA4?
- Why do Vercel Analytics and Google Analytics show different numbers?
- Which is more accurate, Cloudflare or Google Analytics?