Cookieless web analytics

Know who is on your site. Track nobody.

One 1270-byte script. Realtime visitors, click heatmaps and masked session replay, with no cookies, no banner and no IP address stored anywhere.

  • 0IPs stored
  • 1270BScript size
  • 30dTrial, cancel any time

Live now 61 on the site

Visitors / minute Peak 152

Arriving last 60 minutes

  1. /pricing from Germany, Hacker News · Desktop 2s
  2. /docs/install from United States, Google · Desktop 6s
  3. / from United Kingdom, Direct · Mobile 11s
  4. /migrate-from-google-analytics from Netherlands, Google · Desktop 14s
  5. /session-replay from Japan, X · Mobile 19s
  6. /heatmaps from Brazil, Reddit · Mobile 23s
  7. /pricing from Canada, Direct · Desktop 27s
  8. /heatmaps from France, Google · Desktop 31s
  9. /docs/install from Sweden, GitHub · Desktop 36s
  10. / from India, Google · Mobile 40s
  11. /pricing from Australia, Direct · Tablet 44s
  12. /heatmaps from Spain, X · Mobile 49s
No cookie was set to count any of this 218,263 pageviews today
Visitors per minute over the last 60 minutes
Minutes agoVisitors
59 92
58 107
57 105
56 124
55 131
54 123
53 128
52 129
51 125
50 119
49 124
48 130
47 141
46 145
45 145
44 152
43 150
42 140
41 142
40 137
39 125
38 122
37 127
36 142
35 128
34 141
33 131
32 139
31 130
30 126
29 109
28 104
27 109
26 98
25 102
24 102
23 110
22 104
21 87
20 96
19 78
18 74
17 52
16 81
15 44
14 52
13 46
12 58
11 55
10 41
9 44
8 35
7 35
6 24
5 37
4 33
3 28
2 49
1 51
0 61
Click heatmap — /pricing 13,140 clicks · 7 days
Cold Hot
Most clicked elements on the pricing page over seven days
Element Clicks Share
button.plan-cta[data-plan="growth"] 4,128 31.4%
button#billing-toggle 2,610 19.9%
a.plan-cta[data-plan="starter"] 1,944 14.8%
h2.pricing-headline Dead 1,187 9.0%
a.nav-cta 903 6.9%
Session 8f2a·41c9 — 4 pages, 2m 18s Masked
shop.example.com/checkout ••••••••••••••••• MASKED •••• •••• •••• •••• ••/•• ••• Complete order
2:18
  • Masked by default. Every input, textarea and [contenteditable] is redacted in the browser. Opt individual fields back in with data-aa-unmask.
  • Never recorded: keystrokes, clipboard, file pickers, or anything inside an element you mark data-aa-block.

The dashboard

Three numbers that actually matter

Not 147 reports you will never open. Who came, what they read, and whether they stayed — on one screen, in one second.

Unique visitors

48,912

up 12.4 percent vs prev 30d vs prev 30d
  1. 210
  2. 244
  3. 231
  4. 288
  5. 302
  6. 279
  7. 341
  8. 366
  9. 352
  10. 408
  11. 441
  12. 470

Counted with a daily-rotating hash, never a cookie.

Pageviews

131,408

up 9.1 percent vs prev 30d vs prev 30d
  1. 540
  2. 602
  3. 588
  4. 671
  5. 704
  6. 690
  7. 782
  8. 812
  9. 796
  10. 901
  11. 962
  12. 1,014

Bots and AI crawlers already removed, and never billed.

Time on page

2:41

down 3.2 percent vs prev 30d vs prev 30d
  1. 178
  2. 172
  3. 181
  4. 169
  5. 174
  6. 166
  7. 171
  8. 163
  9. 168
  10. 159
  11. 162
  12. 161

Measured from real engagement events, not a session guess.

Top sources Visitors
  • Google organic 12,640
  • Hacker News referral 8,915
  • Direct / none 7,402
  • X social 3,118
  • GitHub referral 2,204
  • Reddit social 1,690
Top pages Pageviews
  • /pricing 18,402
  • / 14,918
  • /docs/install 9,734
  • /session-replay 4,881
  • /heatmaps 3,902

Setup

The whole install is one line of HTML

No npm package, no build step, no tag manager, no consent flow to wire up. Paste it in your <head> and the first pageview lands before you switch tabs.

01 Paste this once
<script defer  src="https://cdn.absolutelyanalytics.com/aa.js"  data-domain="example.com"></script>
1270 bytes gzipped No build step · no npm · no cookie banner
02 Verified Listening…
  • Served from 330+ edge locations 18ms p50
  • First pageview received no cookie set
  • Bot and AI-crawler filter armed 2,431 rules
  • IP seen in memory, never written token rotates daily
03 Data, immediately Today

1,284

Pageviews since you pasted it

How it works

We cannot identify your visitors, by construction

Most "privacy-friendly" analytics ask you to trust a policy. This is not a policy — it is what the code can and cannot do.

01 Seen in memory, for one request

  • IP address 203.0.113.42 local variable, one request
  • User agent Mozilla/5.0 (Macintosh… never stored raw

02 One-way function

One‑way hash Not reversible. Not a lookup.

03 All we keep

The day's token 9f3a71c4e0b58d2a6c81d4f7

An opaque token, scoped to one site for one day. Nothing links it to a person, to a device, to the same visitor tomorrow, or to the same person on another site running this product.

04 Discarded before the response

  • 203.0.113.42never written
  • Mozilla/5.0 (Macintosh…parsed, then dropped

No IP address reaches a log, a database, an analytics pipeline or an object store. It exists as one local variable and goes out of scope with the request.

Every day, yesterday becomes unrecoverable

Tokens rotate daily, and the previous day's cannot be recomputed — not by us, not by anyone who obtained the database, not under a court order. So yesterday's visitors cannot be joined to today's. Cross-day tracking here is not switched off by policy; it is arithmetically impossible, which is the only kind of promise worth making.

Diagram: a visitor's IP address and user agent are seen only in memory during a single request and are discarded before the response is sent, never written to storage. What is kept is an opaque one-way token, scoped to one site for one day. The token rotates daily and the previous day's cannot be recomputed, so visitors cannot be linked across days, and it cannot be linked to the same person on any other site.

Reports

Serious analysis, without a certification course

Geography, traffic quality, goals and segments are on every plan we sell. Funnels and the Stats API are on Business.

Signup funnel — last 30 days 14.2% end-to-end
  1. 01 Landed on /pricing 18,402
    100.0%
  2. 02 Opened the install docs 9,734
    52.9%

    8,668 left here −47.1%

  3. 03 Copied the script tag 5,118
    27.8%

    4,616 left here −47.4%

  4. 04 First pageview received 3,402
    18.5%

    1,716 left here −33.5%

  5. 05 Still sending on day 7 2,611
    14.2%

    791 left here −23.3%

Signup funnel — last 30 days
Step Visitors Share of entries Drop-off from previous step
Landed on /pricing 18,402 100.0% 0.0%
Opened the install docs 9,734 52.9% 47.1%
Copied the script tag 5,118 27.8% 47.4%
First pageview received 3,402 18.5% 33.5%
Still sending on day 7 2,611 14.2% 23.3%
Visitors by region 66,910 visitors · 30 days
  • Europe 24,880
  • North America 19,420
  • East & Southeast Asia 6,310
  • South Asia 4,720

The meter

You are billed for people, not for crawlers

Roughly a third of what arrives at a typical site is automated — declared crawlers, headless browsers, scrapers from datacentre ranges, link previews nobody saw. Every one of those is filtered before it is counted, so it never reaches your dashboard and never reaches your bill. Tools that meter raw hits charge you for all of it.

Ingest filter — last 24 hours 30.2% rejected
FILTER 28,760 HUMAN PAGEVIEWS 12,448 DISCARDED, NOT BILLED 41,208 RAW REQUESTS
Automated traffic rejected in the last 24 hours, by rule
Rule Rejected
Declared crawlers GPTBot · ClaudeBot · Googlebot · +2,180 UA signatures 6,912
Headless browsers Puppeteer, Playwright and CDP fingerprints 2,431
Datacentre origins Known cloud and scraping ASNs 1,986
Impossible clients 0×0 viewports, spoofed platforms, replayed requests 743
Prefetch and preview Link previews and speculative loads that no human saw 376
Total discarded 12,448

Filtered requests never reach your plan's pageview count. You are not billed for a crawler that read your site on an AI company's behalf.

Included from Growth

See where people actually click

Click maps, scroll maps and attention maps for every page, from the same script you already pasted. Nothing extra to install.

  • Find dead clicks — the headings and images people think are buttons.
  • See how far down the page anyone ever gets, by device.
  • Segment any map by source, country, device or campaign.
  • Aggregated across visitors — no individual is ever singled out.

$14/mo included from Growth, nothing extra to buy

How heatmaps work
Click density — /pricing 13,140 clicks · 7 days
Cold Hot
Most clicked elements on the pricing page over seven days
Element Clicks Share
button.plan-cta[data-plan="growth"] 4,128 31.4%
button#billing-toggle 2,610 19.9%
a.plan-cta[data-plan="starter"] 1,944 14.8%
h2.pricing-headline Dead 1,187 9.0%
a.nav-cta 903 6.9%

Add-on Session replay

Watch the session. Never read the data.

Every input, textarea and contenteditable element is masked in the browser, before the recording is transmitted. Not redacted on our servers — never sent in the first place.

  • Masked by default; you opt individual fields back in, not out.
  • Keystrokes, clipboard contents and file pickers are never recorded.
  • Jump straight to rage clicks, dead clicks and JavaScript errors.
  • Delete any recording, or all of them, in one click.

+$19/mo on any plan, with an allowance that scales with your rung

How masking works
Session 8f2a·41c9 — 4 pages, 2m 18s Masked
shop.example.com/checkout ••••••••••••••••• MASKED •••• •••• •••• •••• ••/•• ••• Complete order
2:18
  • Masked by default. Every input, textarea and [contenteditable] is redacted in the browser. Opt individual fields back in with data-aa-unmask.
  • Never recorded: keystrokes, clipboard, file pickers, or anything inside an element you mark data-aa-block.

Migrating

What you give up by leaving Google Analytics

Mostly: work. Here is the honest comparison, including the two places GA4 genuinely wins.

Absolutely Analytics compared with Google Analytics 4
  Absolutely Analytics Google Analytics 4
Cookie banner required No Yes
Script size (gzipped) 1270 B ~145 KB
Blocked by ad blockers Rarely — first-party proxy included Commonly, and silently
Data retention 3 years Starter and Growth · 5 years Business 14 months maximum
Time to a useful report Zero — one screen, no setup Explorations, custom dimensions, a course
Data freshness Realtime, no processing lag Up to 48 hours for standard reports
Owns your visitors' data You do An advertising company
Price at 1M pageviews and events $69/mo Free — you pay in data
Google Ads and Search Console integration Not available Native, and genuinely better
Cross-product identity across Google properties Impossible by design Yes, if that is what you want

If you buy Google Ads and optimise on conversion imports, keep GA4 for that. Most sites do not, and are paying a consent-banner tax plus 96 KB of JavaScript for reports they never open.

Pricing

Pick your traffic, then pick your tier

Pageviews and custom events count towards one allowance. Sites and team members are 1 / 3 / 10 by tier. History is kept 3 years starter and growth · 5 years business. And whatever happens, we will never lock your dashboard.

Monthly pageviews and custom events

  • 10M+

Your allowance counts pageviews and custom events together. Bots and AI crawlers are filtered out before counting, so you are never billed for them.

  • Starter

    $9 /mo

    10k pageviews and custom events a month

    One site, one person, every core report.

    • Sites 1 site
    • Team 1 member
    • Retention 3 years
    • Adds
    • Live dashboard with every core report
    • Realtime visitor view
    • Goals and conversions
    • Saved segments
    • Email and Slack reports
    • Traffic spike alerts
    • Annotations on the timeline
    • Google Search Console integration
    • Google Analytics importer
    • CSV export
    Start 30-day trial
  • Business

    $19 /mo

    10k pageviews and custom events a month

    Funnels, custom properties, revenue and the Stats API.

    • Sites 10 sites
    • Team 10 members
    • Retention 5 years
    • Adds
    • Funnels
    • User journeys
    • Custom properties on events
    • Ecommerce revenue attribution
    • Stats API
    Start 30-day trial

Every plan starts with a 30-day trial of that exact tier — not a stripped-down one, and not a bigger one you then lose. A card is taken when you start it and charged when it ends, unless you cancel first. Cancel and your dashboard closes; collection carries on and your history is still there the day you come back.

Questions

The things people ask before switching

Do I need a cookie banner?

No. We set no cookies and write nothing to localStorage except your own opt-out flag. There is no personal data to consent to, so GDPR and the ePrivacy Directive do not require a banner for our script.

How do you count returning visitors without a cookie?

With a one-way token that is scoped to one site and one day. The IP address and raw user agent are seen only in memory during a single request and are discarded before the response is sent — neither is ever written anywhere. The token rotates daily and the previous day’s cannot be recomputed, so yesterday’s visitors cannot be joined to today’s, and the same person on another site running this product is not the same token. Cross-day and cross-site tracking are not switched off by policy here; they are arithmetically impossible.

We publish the guarantee and not the construction. What the guarantee rests on is checkable from your own browser: no cookie is set, nothing identifying is written to storage, and you can read the entire request in a network tab.

Do custom events count towards my plan?

Yes. Your allowance counts pageviews and custom events together, which is what the rest of the category does: Fathom bills custom events as pageviews, Plausible counts pageviews plus outbound clicks, downloads, form submits and 404s, Umami counts each stored event property as an event, and Matomo bills every hit. What we do not bill for is bot and AI-crawler traffic, which is filtered out before anything is counted.

What happens if I go over my plan?

Nothing breaks. We keep collecting and your dashboard keeps working. If you are over for three consecutive months we move you to the plan that fits, pro-rated, with 14 days’ notice and one click to decline. Traffic spikes, launches and AI crawlers are on us.

How big is the script?

1270 bytes gzipped, served from Cloudflare’s edge. Google’s gtag.js is roughly 145 KB — about 117 times larger.

Is my data stored in the EU?

Yes, if you want it to be. Every account picks a jurisdiction at signup and the event store is created inside it — the choice is free and cannot be changed afterwards, because a stored region that can move is not a region.

Can I import my Google Analytics history?

Yes. The importer pulls your GA4 property through the Data API and backfills sessions, pageviews, sources and countries so your charts do not start at zero. It is included on every plan.

Ready

Paste one line. Watch the first visitor arrive.

A 1270-byte script, no cookie banner, and a dashboard that fits on one screen. 30 days on the plan you pick, cancel any time.