No cookies · No fingerprinting · No profiles

Analytics without
the surveillance.

Rational Metrics shows you what's actually working on your site: pageviews, sources, top pages, countries. No cookies, no consent banner, no profile that follows anyone around.

Free forever up to 10,000 views/mo · No credit card

metrics · acme.com · last 7 dayslive
Pageviews
48,210
+12.4%
MONTUEWEDTHUFRISATSUN
< 2 KB
tracker script, gzipped
0
cookies set, ever
0 bytes
of PII stored
No banner
GDPR / CCPA-friendly

How it works

Three steps. No tag manager required.

01

Drop in one line

Add a single 2KB script tag. No npm package, no build step, no configuration. SPA route changes and custom events work out of the box.

02

We count, we don't track

Each request becomes a salted, daily-rotating hash. No cookies, no profiles, no cross-site identifiers. Nothing that outlives the day.

03

Read the room

A clean dashboard with the numbers that matter: traffic over time, where it came from, your top pages, and country-level geography.

<!-- one tag, every page --> <script defer data-site="YOUR_SITE_ID" src="https://metrics.app/script.js"></script>

Privacy by construction

Privacy you can
actually verify.

Most “privacy-friendly” analytics still quietly build a profile of your visitors. We don't. Here is exactly how a visitor is counted, in full:

  • The raw IP is used only to compute the hash and look up a country. It is never written to disk.
  • The salt rotates every day, so yesterday's visitors can't be re-identified today.
  • No cookies, no localStorage, no fingerprinting. Query strings are stripped from every path.
The entire visitor model
visitor_id = sha256(
  daily_salt
  + site_id
  + ip_address   // hashed, not stored
  + user_agent
)
Stored: visitor_id, path, referrer, country, timestamp.
Not stored: IP, name, email, cookie, device ID.

What you get

Small script. Serious analytics.

One script, every page

SPA route changes are tracked automatically, with no manual pageview calls in your router.

Custom events

Call window.rm('signup') to track conversions and goals. No tag manager, no bloat.

Multi-site & teams

Organizations, roles, and site groups. Manage every property your team owns in one place.

Country-level geo

Region derived from request headers. Accurate enough to be useful, never precise enough to track.

Known bots filtered

Self-identifying crawlers, spiders, and uptime monitors are dropped before they count. Bots that pose as real browsers can still slip through, and we won't fingerprint to chase them.

Soft limits

Hit a plan cap and we still count every event. Ingest is never blocked, so you never lose data.

You own retention

Keep your data from six months to five years depending on plan, then it's pruned automatically.

Insights

AI that isn't allowed to guess.

Most analytics tools now bolt a chatbot onto the dashboard and let it improvise. Ours works the other way round: the numbers are settled before a model sees them.

  • It stays quiet unless something real happened

    Every finding clears a volume floor and a 99% significance test before it is reported. A slow week reads as a slow week instead of a manufactured trend.

  • The model explains, it doesn't calculate

    Every figure is computed from your own data first. Generated prose is then checked number by number against it. Anything we didn't measure is thrown away rather than printed.

Findings go to OpenAI to be written up: site names, counts, referring domains. Never anything about a person, because we don't hold anything about a person. Switch it off in settings and the analysis keeps working.

On every plan, including Free.

Worth acting onacme.com

Engagement fell to 31% on acme.com

Down from 46% in the previous period.

↑ Measured · 412 pageviews vs 388 prior

What to do

Compare the pages that previously held attention against this period, and roll back any recent layout or content change on the ones that slipped.

↑ Written by the model · from the figures above

Client reports

Something to send, not another login.

Your client doesn't want a tour of a dashboard. They want to know how the month went. Publish a report at its own address and send them the link.

One site, one month, one page. No account to create and nothing to install. It reads properly on a phone, and printing it gives you the PDF if that is what the relationship runs on.

The figures are frozen the moment you publish, so the document can't quietly change after you've sent it. Regenerate and the same link updates. Revoke and it stops resolving.

Every report ends by explaining how the numbers were collected, to someone who has never heard of us. Your privacy argument arrives with the work, already made.

On Growth and Scale.

Traffic report

acme.com

June 2026 · prepared by Northsound Studio

Pageviews

12,480

+18.2% vs May

Visitors

8,301

+12.4% vs May

Engagement

46.1%

−2.1% vs May

In short

Traffic grew steadily through the month, with most of the gain arriving from search rather than referrals. Engagement slipped slightly against a larger audience, which is normal at this rate of growth.

Collected without cookies, without local storage, without fingerprinting. No personal data is stored.

Pricing

Honest pricing. No surprises.

Start free, upgrade when you outgrow it. Every plan includes the full dashboard and AI insights. Growth adds client reports and the read API.

Most popular

Starter

$9/mo

or $90/yr, two months free

Pageviews / mo
100K
Sites
10
Data retention
1 year
Client reports
No
Read API + MCP
No
Choose Starter

Growth

$29/mo

or $290/yr, two months free

Pageviews / mo
1M
Sites
10
Data retention
3 years
Client reports
Included
Read API + MCP
Included
Choose Growth

Scale

$59/mo

or $590/yr, two months free

Pageviews / mo
5M
Sites
50
Data retention
5 years
Client reports
Included
Read API + MCP
Included
Choose Scale

Free

$0/mo

free forever

Pageviews / mo
10K
Sites
1
Data retention
6 months
Client reports
No
Read API + MCP
No
Start free

Stop asking permission
to count.

Set up your first site in under five minutes. No credit card, no consent banner, no profiles.