Skip to main content
20% off 3 months · code LAUNCH20 · until 31 October

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 _ga cookie, “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

  1. Bots. Edge counts include them; GA4 drops the known ones.
  2. Blocked scripts. Ad blockers stop both Google’s tag and Cloudflare’s beacon, but not the edge.
  3. Consent. A visitor who says no, or ignores your banner, may never reach GA4 at all.
  4. 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.
  5. 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

  1. Compare like with like. Put Cloudflare Web Analytics page views next to GA4 page views (page_view events), not zone requests next to GA4 users.
  2. Use the same days and time zone. Set both to the same range; a shifted midnight moves a day’s traffic.
  3. Turn on Cloudflare’s bot filter. Web Analytics has an “Exclude Bots” option (Cloudflare: Dimensions).
  4. Check that both scripts load on every page. A page missing one of them makes a gap that looks like a counting difference.
  5. 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.

Also asked as
  • 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?
Read next
Start free Free plan, no time limit · No card