Cookieless inflation

By Lucas Brandao · São Paulo · verified 2026-05-04 · edit on GitHub

When you run GA4 and a cookieless tool (Plausible, Fathom, Umami) in parallel for two weeks, the cookieless tool reports 5 % to 12 % more unique visitors and pageviews on the same site, same period. The gap is real, the gap is predictable, and the gap is not a bug. It is two effects stacked on top of each other.

Effect 1: consent-banner decline rate

GA4 needs a consent banner in the EU. The banner asks the user to accept cookies. Some say no. The percentage who say no is your decline rate — typically 8–15 % in Western Europe, lower in North America (3–7 %), higher in Germany and Netherlands (15–25 %).

When a user declines the banner, GA4 either drops the event entirely or runs in degraded "consent mode" with modeled estimates. Cookieless tools do not need a banner — Article 6(1)(f) legitimate interest covers the lawful basis — so they capture every visit.

Result: if your site has a 10 % decline rate, the cookieless tool will report roughly +10 % more pageviews than GA4, all else equal.

Effect 2: daily-salt rotation inflates uniques

This one is smaller and only affects the unique-visitor metric, not pageviews. Cookieless tools (Plausible, Fathom) build the visitor identifier by hashing IP + User-Agent + daily salt + domain. The salt rotates at midnight UTC. The same person visiting Monday and Friday is two distinct hashes — counted as two visitors.

GA4's _ga cookie persists for two years. The same person visiting Monday and Friday is one client_id. One visitor.

On a typical content site with 30 % returning visitors over a 7-day window, the daily-salt method inflates monthly-unique counts by 1.5–3 % above the cookied count. On a heavily-returning site (newsletter audience, daily readers), it can reach 5 %.

Stacked totals from two-week parallel runs

Site typeDecline rateSalt-rotation effectTotal cookieless inflation
US e-commerce4 %+1.2 %+5.2 %
EU SaaS marketing11 %+1.8 %+12.8 %
German publisher18 %+2.5 %+20.5 % (outlier)
Mixed-geo content site8 %+1.5 %+9.5 %

The German publisher row is the one to flag in a stakeholder meeting. Decline rates above 15 % produce a gap large enough to look like a real traffic increase, and someone will eventually misread it.

How to communicate the gap

Three lines in the migration writeup, before the dashboard goes to the team:

  1. "GA4 dropped consented sessions only. Cookieless captures all sessions (Article 6(1)(f) legitimate interest)."
  2. "Expected gap on this site, based on banner decline rate: +X %."
  3. "Compare YoY against the new baseline starting cutover day, not against pre-cutover GA4."

If you skip these three lines, the first month-over-month review will produce a "we grew 10 %" claim that is methodology, not growth.

Gotcha

If the parallel-run gap is smaller than +5 %, your GA4 banner has an unusually high accept rate (or you are not in a consent jurisdiction). If the gap is above +15 %, document it before cutover and flag it to anyone who reads the dashboard. A 15 % gap is large enough to look like a real movement on a noisy week — and once someone has quoted it as growth, the correction is awkward.
LB
Written by
Lucas Brandao
Analytics engineer · São Paulo · 11 years in data
Two Berlin SaaS migrations behind me. I write migrateanalytics.com as a public utility — no product, no affiliate, no consulting. All measurements are reproducible; raw data lives on GitHub.
v1 · 2026-05-04 · first publication. · edit on GitHub →