Cloudflare Web Analytics vs Harvv

Cloudflare grades how the page loaded. Harvv tells your AI what people did on it.

Cloudflare Web Analytics, the product formerly called Browser Insights, is free, cookieless, and probably already on if your site sits behind Cloudflare. It reports page views, visits and Core Web Vitals, and it is good at that. It has no line for a click that did nothing, a section nobody read, or a form nobody finished.

“My vitals are green. Is anything actually broken?”

Cloudflare answers

A grade per metric: Good, Needs improvement, or Poor, at the 75th percentile, with the top five elements hurting each one. Green means the page painted quickly and held still.

Harvv answers

30.0%

of the sessions where someone hit a dead click or a rage click last week had every Core Web Vital the browser reported inside Google’s Good band. A vitals dashboard showed green for three in ten of the people who were visibly stuck.

2,576 sessions with a dead or rage click on 33 sites in the seven days to 9 September 2026, bots, internal and synthetic traffic excluded; 774 of them had LCP at or under 2.5 s, CLS at or under 0.1, and INP at or under 200 ms on every pageview that reported it. INP is only reported when an interaction was measured, so a session with no INP counts as passing the vitals it did report, not as passing INP.

01

What Cloudflare Web Analytics is

Three facts from Cloudflare’s own pages, because two of them change who this comparison is for.

It used to be called Browser Insights. Cloudflare’s analytics documentation describes the product as “Web Analytics (formerly known as Browser Insights)”, and the Core Web Vitals reporting that Browser Insights introduced in 2020 lives inside it now. If you were sent here looking for Browser Insights, this is the page. source

It is on by default. Cloudflare announced that from 15 October 2025 Web Analytics would be enabled by default for Free zones, with EU visitor data excluded unless you switch it on. So a large share of the people reading this already have it and have never opened it, which is the fairest possible starting point for a comparison: this is the analytics you have, not the analytics you chose. source

It measures the load, not the visit. The beacon reads the browser’s Navigation Timing entries and Google’s web-vitals library, and it reports when the page is first hidden after the load event. Everything in the dashboard follows from that: page views, visits (a page view whose referrer is not your own hostname), page load time, and the three Core Web Vitals. Nothing in it is about what a visitor did between load and leave. source

02

What each one measures

Cloudflare Web Analytics measures how the page loaded. Harvv measures what people did on it once it had. The two overlap on Core Web Vitals and on almost nothing else, and every "not measured" below is Cloudflare’s own answer, not our reading of an absence.

WhatCloudflare Web AnalyticsHarvvWhy it matters
Core Web Vitals (LCP, INP, CLS)sourceYes, graded Good / Needs improvement / Poor, with a debug view of the top five elements hurting each metricYes, per pageview, with the LCP element and the CLS sources namedGenuine overlap. Cloudflare does this well.
Page views and visitssourceYes. A visit is a page view whose referrer does not match the hostnameSessions stitched from behaviour, not from the referrerTwo people arriving from the same site are one "visit" pattern, not one person
Clicks, dead clicks, rage clickssourceNot among its metrics or dimensionsEvery click, and the ones that did nothingA button that does nothing loads perfectly
Custom events and conversionssource"Not yet"Conversion goals, add-to-cart, checkout, order valueA vitals score cannot be tied to a sale
UTM parameterssource"Not yet"; query strings are not loggedUTM and ad click IDs captured, query strings scrubbed of sensitive keysAd spend cannot be attributed
Scroll depth and readingsourceNot among its metricsRead, skimmed or skipped, per sectionA page that loaded fast and was never read scores the same
Written findingssourceCharts, grades and an element listA sentence naming the element, the page and the fixSomeone still has to work out what the chart means
03

Getting the data into your own AI

Cloudflare exposes Web Analytics through its GraphQL Analytics API, and it ships an MCP server that can run those queries, so the route to ChatGPT, Claude or Copilot exists. The limits Cloudflare publishes for it are generous. What comes back through it is the part to look at.

WhatCloudflare Web AnalyticsHarvvWhy it matters
A route to your AIsourceGraphQL Analytics API, and an MCP server at mcp.cloudflare.com that can call itHarvv MCP, in ChatGPT, Claude or CopilotBoth exist. Neither side gets a point for existing.
Requests your AI may makesource300 queries per five minutesNo daily ceilingEnough for a workflow. This is a row Cloudflare wins outright against most tools.
How far back it will looksourceThe previous six monthsRaw events approximately 30 days; daily aggregates for the life of your accountSix months of aggregates is a real advantage over our raw window
Whether the numbers are countssourceEvery beacon is recorded; the unsampled data covers the past 7 days, after which it is "aggregated down to around 10%", and the dashboard and API apply dynamic sampling between 0.0001% and 100% depending on the filterEvery event stored; a count is a countA narrow filter on old data returns an estimate that reads as a total
What the answer is made ofsourcePage-load and vitals aggregates, sliced by host, path, referrer, country, device, browser, OS and navigation typeFindings, the sessions behind each one, and the fixAn aggregate tells your AI how fast; it cannot tell it what broke
04

Whose data it is, and where it goes

Both tools are cookieless and neither fingerprints a visitor. The differences are in what happens to a visitor from the EU, how long the data lives, and what "free" is attached to.

WhatCloudflare Web AnalyticsHarvvWhy it matters
Cookies and fingerprintingsourceNone. "does not use any client-side state, such as cookies or localStorage" and does not fingerprint by IP or User AgentNone. Zero PII by design; the IP is discarded after bot checks and only a salted hash is storedBoth tools can honestly say this
Visitors from the EUsourceExcluded by default in the automatic setup; you can switch them onIncluded, because nothing personal is collectedA default-on install is not measuring a European audience at all
How long the data lastssourceSix monthsRaw events approximately 30 days, a compressed archive kept 13 months, aggregates for the life of your accountQuarter-over-quarter is fine on either; year-over-year is not on Cloudflare
What it costssourceFree on every planFree for 1 site, then $19/moCloudflare wins the price row and it is not close
05

What Cloudflare is genuinely good at

On these rows Cloudflare is simply ahead of us. Leaving them out would make the rest of the page harder to believe.

WhatCloudflare Web AnalyticsHarvvWhy it matters
Installing itsourceNothing to install on a proxied site: the beacon is injected at the edge, and since 15 October 2025 it is on by default for Free zonesOne script tagZero work beats one line of work
How many sitessourceNo limit for sites proxied through Cloudflare; a soft limit of ten for sites that are not1 free, 3 on Pro, unlimited on AgencyAn agency on Cloudflare gets every client site for nothing
Weight of the scriptmeasured30,294 bytes raw, 10,139 bytes gzipped, version 2026.9.178,491 bytes raw, 27,023 bytes gzippedTheirs is lighter, because it measures less. Both load async and block nothing.
Which browsers report CLSsourceChromium only; Cloudflare states Firefox and Safari have not implemented itThe same browsers; it is a platform limit, not a tool oneNeither tool can see layout shift on an iPhone
Single-page appssourceNative soft-navigation measurement since August 2026, with a stated warning that pageview counts may changeSoft navigations tracked as their own eventA count that changes should say so, and Cloudflare did

Cloudflare hands you a graded chart

Accurate, free, and about the page

  • A grade per vital. Good, Needs improvement, or Poor, at the 75th percentile.
  • Five elements per metric. The image that was your LCP, the block that shifted.
  • Page views and visits by dimension. Host, path, referrer, country, device, browser, OS, navigation type.

Harvv hands you a sentence about the visitor

A finding you can act on

  • The button that did nothing, on the page it did nothing on, and how many people pressed it anyway.
  • The section nobody read, separated from the section everyone scrolled past.
  • Your AI reads it directly over MCP, in ChatGPT, Claude or Copilot, with the fix written out.
06

What a vitals chart has no line for

Dead clicks and rage clicks are the obvious ones, and Cloudflare’s metrics list neither. These four are subtler: behaviours that leave a perfect page-load record behind them.

Read, skimmed, or skipped

A fast LCP means the words arrived. It cannot say whether anyone read them. We classify each block from scroll kinematics against its word count, so copy that is universally skipped shows up as skipped rather than as loaded.

Taps that never committed

A finger lands on a control and lifts without pressing it. We separate a scroll flick from a target that moved, slipped, or wavered. Movement driven by a transform does not count toward CLS, so the vitals stay green while the button walks away.

Controls in the gesture dead zone

A button sitting in the back-swipe or home-indicator strip gets intercepted by the phone before your page sees the tap. INP never fires, because from the page’s point of view there was no interaction.

Swipes that changed their mind

The shape of every swipe: direction, straightness, and how often a thumb reverses mid-gesture, tracked per element. A reversal is someone who did not find what they expected in that direction, and it leaves no trace in a page-load metric.

Left out, because we could not source it

A comparison page is the easiest place to publish something confidently wrong, so anything we could not tie to a first-party Cloudflare source is not in the tables:

Data controller or processor. Cloudflare’s GDPR page describes it as a processor for customer data in general and says nothing specific about Web Analytics. We make no claim either way, and we note that Microsoft, for Clarity, does say it is the controller.

Whether ad blockers stop the beacon. Only third parties say anything about this. Not claimed.

What the beacon weighs. Cloudflare publishes no size for beacon.min.js, so the figure in section 05 is our own: fetched from static.cloudflareinsights.com on 9 September 2026, version string 2026.9.1 inside the file, 30,294 bytes as served and 10,139 bytes after gzip. The chip on that row says measured rather than source for the same reason. Our figure is measured the same way from our own file at server start.

Accuracy versus other tools. Every published comparison we found was written by a competitor. We used none of them; the sampling behaviour above is quoted from Cloudflare’s FAQ.

The paid analytics. Cloudflare’s Pro, Business and Enterprise plans add HTTP traffic analytics from edge logs. That is a different product measuring requests rather than visitors, and it is not compared here.

Nothing here was run against a live Cloudflare dashboard. harvv.com is not proxied through Cloudflare and does not carry the beacon, so unlike our Clarity comparison there is no head-to-head on the same site. If Cloudflare changes any of the numbers above, the correction goes on this page and is stated as a correction.

Common questions

Is Cloudflare web analytics free?

Yes. Cloudflare’s own documentation says Web Analytics is available on all plans, and since 15 October 2025 it is switched on by default for Free zones, with EU visitors excluded unless you change that in the dashboard. There is a soft limit of ten sites per account for sites not proxied through Cloudflare, and no limit for sites that are.

How accurate is Cloudflare web analytics?

For the last seven days it is a count: Cloudflare says every received beacon is recorded and kept unsampled. After seven days the data is "aggregated down to around 10%", and whenever you view the dashboard or query the API a sampling level between 0.0001% and 100% is chosen dynamically based on your filters and the volume of matching rows. So a broad view of last week is accurate, and a narrow filter on last quarter is an estimate. Cloudflare also changed how it counts single-page-app navigations in August 2026 and warned that pageview volumes may shift.

How does Cloudflare analytics work?

A JavaScript beacon (beacon.min.js) runs in the visitor’s browser, reads the browser’s Navigation Timing entries and Google’s web-vitals library, and posts the result to a /cdn-cgi/rum endpoint when the page is first hidden after loading. On a site proxied through Cloudflare the beacon is injected at the edge automatically; on any other site you paste the snippet before the closing body tag. It stores nothing in the browser, uses no cookies, and Cloudflare says it discards the IP address at the nearest data centre.

Does Cloudflare have analytics like Google Analytics?

Partly. Cloudflare Web Analytics reports page views, visits, referrers, countries, devices, browsers, page load time and Core Web Vitals. It does not have custom events, conversions, UTM parameters or funnels; Cloudflare’s FAQ answers "Not yet" to the first and to UTM tracking, and does not log query strings at all. If you need to know what visitors did rather than how the page loaded, that is a different kind of tool.

Is Cloudflare Browser Insights the same as Cloudflare Web Analytics?

Yes. Cloudflare’s analytics documentation describes Web Analytics as "formerly known as Browser Insights". Browser Insights was the name of the real-user-monitoring feature in the Speed tab; Cloudflare merged it into Web Analytics and the Core Web Vitals reporting came with it. Anything written about Browser Insights applies to Web Analytics today.

Does Cloudflare Web Analytics have an API?

Yes. The RUM datasets are available through Cloudflare’s GraphQL Analytics API, with a documented default quota of 300 queries per five-minute window and six months of history, and Cloudflare publishes an MCP server that can run GraphQL queries so an AI client can ask it questions. What comes back is page-load and vitals aggregates, sliced by dimension; there are no events or sessions to fetch because none are collected.

Does Cloudflare Web Analytics track clicks, scroll depth or rage clicks?

No. Its published metrics are page views, visits, page load time and the three Core Web Vitals, and its FAQ says custom events are "Not yet" supported. Interaction to Next Paint measures how quickly the page painted after an interaction, which is a different thing from whether the interaction did anything: a dead click paints instantly.

Is Harvv a replacement for Cloudflare Web Analytics?

Not exactly. If Cloudflare Web Analytics is already on your zone, leave it on: it is free, it weighs about ten kilobytes, and its Core Web Vitals debug view is good. Harvv measures what Cloudflare structurally cannot, which is behaviour: dead clicks, rage clicks, aborted taps, scroll and reading, form abandonment, conversions, and it writes each problem up as a finding your AI can act on. Plenty of teams run both.

Keep Cloudflare on. See what it cannot.

Point Harvv at your URL and get the findings, each one naming the element, the page and the fix. No card, and nothing to watch.

Start freeRun a free audit →

Free forever for 1 site. No credit card.