Observer
Request access

Self-hosted · cookie-less · k-anonymized · your hardware

Analytics your visitorsnever have to consent to.

Observer is behavior analytics without the trade-off: Hotjar-depth sessions, heatmaps and frustration detection plus the GA4 reporting core — on your own server, with zero cookies and zero browser storage. Identity is a daily-rotated hash that is mathematically impossible to join across days. There is nothing to consent to — so there is no banner.

v0.1.0 · 53/53 capabilities shipped · 95 automated tests passing · zero npm packages in the serving path

Live proof — on this page, right now

Check us the way we check ourselves.

These three numbers are read from your browser as you read this. Observer's marketing site ships no tracker, sets no cookie and talks to no third party — the same posture the product enforces by default.

measured live 0 Cookies set on this page — document.cookie is empty.
measured live 0 Trackers or beacons loaded. View source: there is no analytics script here at all.
measured live 0 Third-party requests — even the fonts are served from this domain.

The Observer platform

Privacy, depth, and reporting.
One architecture. No trade-off.

Every competitor asks you to give something up. Observer's architecture is designed so that identity cannot persist — and every feature is built on top of that constraint, not despite it.

Privacy architecture

Daily-rotated HMAC identity derived server-side, per-site namespaces, k‑anonymity n ≥ 5 on every row, append-only audit log. Long-term tracking is impossible by construction — that is why the default mode needs no consent.

Read the privacy architecture
Behavior depth

Session timelines with tab-split lanes, click/scroll heatmaps, rage and dead-click detection, frustration leaderboard, form drop-off, sandboxed replay. The Hotjar layer — derived from server-side identity, not device-stored IDs.

Explore the behavior layer
Analytics core

Views, sources, countries, devices, goals, funnels, engaged time, Core Web Vitals at p50–p95, anomaly cards and deploy diffs — the GA4 core, without the identity model, on data you own.

See the reporting core

Signature capability

Visitors open second tabs.
Observer shows it.

When a visitor opens a second tab mid-session, a new lane branches off at that exact moment. Page views, clicks with element and page position, scrolls, errors, goals and Web Vitals stay on one shared time axis — concurrent browsing shown side by side, never flattened. No other analytics tool models concurrent tabs.

And because a session is an anonymized device-day — derived server-side, never tied to a persistent ID — this whole depth ships with zero consent burden.

Heatmaps & frustration

Where people click, rage,
and give up.

Click heatmaps on a 1%-grid, scroll depth by band, rage clicks (≥3 clicks in 500 ms within 48 px) and dead clicks on non-interactive elements — rendered over the live page or a stored snapshot, with 375/768/1280 device presets and per-element ranking from stable data-obs-id attributes.

The frustration leaderboard ranks every page by (rage×3 + dead×1.5 + errors×2) ÷ views with root-cause counts, and form analytics exposes per-field drop-off with a "leak" badge past 25% — field values are never read, labels are hashed, only counts leave the browser.

Ask Observer

Ask in plain text.
Deterministic answers, no fake AI.

A natural-language bar in the topbar parses 13 intents plus natural date ranges through a unit-tested grammar — deterministic parsing, live dashboards, zero hallucination.

top pages 7d|⌘K
sessions with rage vitals /pricing deploy diff anomalies heatmap rage /pricing acquisition 28d multitab sessions

The refusals are features

What Observer will never do.

These are not roadmap items. They are architectural refusals — enforced by a static audit that fails the build on any violation. They are exactly why the banner-free posture is defensible.

No fingerprinting

No canvas, WebGL, audio or font probes. Ever. The static privacy audit fails the build if any probe appears in the SDK.

No cross-site identity stitching

Every site gets its own identity namespace. Your blog cannot correlate with your shop — enforced by construction, not policy.

No ad-platform integrations

Visitor data never flows to ad networks. Observer is analytics, not surveillance — there is no audience to sell.

No keystroke capture

The recorder masks all inputs at source — values never leave the browser. Form analytics counts fields, never reads content.

No raw IP storage

The IP lives for milliseconds — geo lookup and HMAC input — then it is gone. Never logged, never serialized, CI-checked.

Pricing

Your server. Not a meter.

No per-traffic, per-site, per-seat or per-feature charges. The only cost is the infrastructure you already own — at 60 million events a month, that is roughly a €60–90 VPS.

Platform~60M events / monthHeatmaps + behaviorConsent bannerData on your servers
Observer (self-host)~€60–90 infraYes — incl. tab-split lanesNot neededYes
PostHog cloud≈ $2,950 / moYesRequiredNo
Matomo On-Premise Business€1,450 / moPremium pluginConfigurablePartial
Vercel Web Analytics Pro≈ $1,820 / moNoNot neededNo
Umami Cloud Business≈ $1,200 / moBusiness tierNot neededNo
Microsoft Clarity$0 — no self-host, no APIReplay onlyEEA consentNo

Competitor figures verified from vendor pricing pages during the 2026 competitive research waves (docs/COMPARISON.md carries the fetch trail).

Full cost of ownership    The complete comparison matrix

53/53

capabilities shipped — coverage index 100%

20

capabilities unique in the entire field of 15 competitors

95

automated tests + a 6-spec browser privacy suite

0

npm packages in the serving path — collector, API, SDK, dashboard, MCP

Straight answers

The three questions everyone asks.

Do I need a consent banner?

No — in the default mode (tier T0), Observer stores nothing on the visitor's device and reads nothing from it. Based on our self-assessment, it meets the criteria established by the CNIL and can be implemented without requiring user consent when correctly configured. If you enable T1 or T2, you need a documented legal basis or explicit opt-in.

How does it count visitors without cookies?

Observer derives an anonymous identity server-side from what the browser already sends (IP + user agent), hashed with a key that rotates at midnight UTC. Each day gets a fresh key, so yesterday's identity cannot be linked to today's. It is not a cookie, not fingerprinting, and not persistent.

How is this different from Plausible or Umami?

Those are traffic counters. Observer adds the entire behavior layer — session timelines with tab-split lanes, heatmaps, frustration detection, form drop-off, CWV RUM — plus the privacy architecture none of them ship: k-anonymity ≥ 5, an append-only audit log, a live privacy-posture page and rotating identity namespaces.

All frequently asked questions

Point your server at it.
Five minutes.

ClickHouse, collector and API in Docker, one line of HTML on your site — and the deepest legal analytics you can run starts filling with honest data.

Illustrations by GetIllustrations.com (Loomies pack).