What it sends
- A simple ping
- Often ICMP echo, or one HTTP request
- Watch
- An HTTP GET — not a rendered page
Website analytics · no cookie
Website analytics without a cookie. Pageviews, the source, the campaign, and a named goal. One script, under 1 KB. Free with a link on your site, or €4 a month to take the link off. Run it next to Google Analytics for a week.
No card. Two minutes.
Sample data, last 30 days
2,578 pageviews · sample data, same script you install
Unique visitors reset at midnight UTC. A visit is the same person within 30 minutes.
Over time
Click a tile to add its line · vs previous 30 days
Notes on the chart
11 OctGo live
12 OctCampaign: launch
9 NovHacker News
Top pages
Referrers
Same tiles and chart. Filters, live, and the rest of the board are in the full demo.
View sample dashboard01
Sign in and add your site. Two minutes. No credit card.
02
One file, before the page closes. Hobby shows a Cookie Free Analytics link. Starter takes it off from €4. Serving it from your own hostname is optional — that recipe is on /docs.
03
Pageviews show up as they happen. Watch, first byte, Search Console, and Stripe charges sit on the same board when you connect them. No tag manager.
Around the clock we check that your site still answers. More than a ping: Frankfurt every window; Dublin confirms a fail or a slow response; London only after a fail. Down means both Frankfurt and Dublin failed. A status page they can open without a login. On Starter and Growth.
A Frankfurt GET we run, then Google lab scores 0–100. We only show the LCP Google measured.
Period briefing from the tiles you already see. Weekly mail is the same numbers. No extra tracking.
Watch is more than a ping. Each check is an HTTP GET from Europe — not a real browser. It is included on Starter and Growth, on a hostname you already added.
Three European cities
Frankfurt checks every window. Dublin runs when Frankfurt failed, or when Frankfurt answered but first byte was slow. London is a third sample only after a fail — not for slowness.
DNS
Each check resolves the hostname (IPv4, then IPv6 when needed) before it requests the URL. If the address set moves, we mail you.
HTTP status
The response must match the status you expect. The default is 200–399. You can require a single code.
Redirects
A redirect that leaves your hostname fails the check.
Page content
You can require a short phrase in the body, or forbid one. A keyword check is its own row — the page can be up while the phrase is missing.
Speed
We record first byte (TTFB) and total load time. Slow is based on first byte. The default threshold is 3 seconds; 0 turns Slow off.
Daily sitemap
Once a day we fetch /sitemap.xml (or the path you set) and visit the first 40 URLs on the same hostname. Off-host URLs are skipped. A bad result is checked again after 30 minutes before we alert. Not an HTML crawl.
Certificate
On a successful HTTPS check we read the leaf certificate visitors see. Mail at 14 days left, an incident at 3. We do not walk the full chain or grade ciphers.
Domain expiry
Once a day we look up the registry (RDAP). Mail at 30 days left, an incident at 7.
Visitor 404s and 500s
Watch counts cfa('404') and cfa('500') events from real visitors in the last hour. Over the threshold (default 10; 0 is off) we mail you. The hostname can still be Up.
Heartbeat
On Starter and Growth you can POST a heartbeat for a cron or a job. If no beat arrives within the grace you set (minimum 60 seconds, maximum 24 hours), Watch opens a heartbeat incident. Empty grace is off.
TCP port
You can add a TCP check for one port on a hostname you already added. That is a connect, not a port scan.
What Watch is not
Watch is not a real browser and not a transaction test. It does not run JavaScript or click through a checkout.
A single slow sample never sends mail. Slow mail goes out only after Dublin confirms slowness in two consecutive windows. A real outage — two windows where Frankfurt and Dublin both failed — alerts promptly. One city down and one up stays Up.
Starter checks every 3 minutes (10 pages). Growth checks every minute (25 pages). Hobby shows the Watch tab; checks start on Starter.
What it sends
Where from
What counts as up
Speed
Certificate and domain
Sitemap and visitor errors
Cron jobs
When it alerts
Browser checkout test
A European product, written here. Not a US analytics company with a GDPR checkbox on the pricing page.
Beacons hit Frankfurt. Pageviews sit in Ireland, not Virginia plus a DPA. Vercel is a US company. The split is on /europe.
We do not sell, enrich, or ship your traffic to a US advertising warehouse. The dashboard is the product.
Measured against 1 KB
930 B
gzipped · 1,515 B raw · budget 1,024 B · measured from /cf.js on this build.
94 B left in the default file. Clicks are a second script.
Five fields from the browser. Same-day visitors, no cookies, no fingerprint, no replay. How we count a person is on the method page if you want it.
How a visitor is countedThe consent gap
We count the landing, the source, and the named goal. Ads platforms still do conversion tags. Many sites run both.
Cookie reports go dark. Campaign UTMs never land. Cookie Free Analytics records the load.
Read the argumentGoogle Analytics alternative
GA4 is the ads suite. This is the count the banner threw away. Run both for a week.
Plausible alternative
Same cookieless job. Lower published price, events included. Beacons hit Frankfurt; pageviews sit in Ireland.
Matomo alternative
No PHP to maintain, no cookie mode to leave on. Beacons hit Frankfurt; pageviews sit in Ireland.
Analytics without cookies
No cookie, no localStorage id, no lasting fingerprint. A count, not a profile.
Do I need a cookie banner?
Not for this script’s pageviews. Your counsel still owns the final call.
WordPress analytics without cookies
Paste the 1 KB script in your theme header or any header-scripts plugin. No MonsterInsights cookie.
Not an ads suite, not replay, not open source. Funnels are a straight path on one UTC day, on Growth.
Hobby is free and shows a Cookie Free Analytics link on your site. Starter removes it from €4 / month. No cookies, just insights. Made and hosted in the EU. 🇪🇺
Shipped August 2026. Run it next to GA for a week before you rip anything out.
1% of each paid charge goes to Stripe Climate (Frontier carbon removal). Not a neutrality badge. Hobby has no invoice, so no 1%.