Open-source, privacy-first web and product analytics.
One Go binary + PostgreSQL. No cookies.
Supermetry is an open-source, self-hosted web analytics platform and a privacy-friendly alternative to Google Analytics. It counts visitors, pageviews, traffic sources, goals and conversions without cookies, and keeps every number in your own PostgreSQL database. Funnels, retention, user journeys, Web Vitals, heatmaps and session replay are included in the open-source release.
Most analytics tools make you pick two: privacy, depth, or easy hosting. Supermetry gives you all three.
| 🪶 Simple to run | One Go binary and a PostgreSQL database. Redis is not needed. Installers for Linux, macOS and Windows, plus backup and restore commands. |
| 🔒 Private by design | No cookies, no fingerprinting, no raw IP addresses stored. Visitors are counted with a random daily salt that is deleted after about 48 hours. Do Not Track and Global Privacy Control are honoured. |
| ⚡ Light on servers and pages | The tracker is about 1.2 KB gzipped. In a 4-hour test one process ingested 200 events per second, 2.88 million events in all, with no loss, no errors, a worst-case p99 latency of 23 ms and under 190 MiB of memory (details). |
| ✅ Numbers you can check | Side by side with Plausible Community Edition on identical real-browser traffic, every metric and breakdown matched, in both products and against hand-computed truth (details). |
| 🧭 More than pageviews | Goals, funnels, revenue, retention, user journeys, Web Vitals, heatmaps and session replay, all in the open-source release. No feature locks. |
| 🔓 Yours to leave | Apache-2.0, a REST API, an MCP endpoint for AI assistants, CSV export and imports from Google Analytics 4, Plausible, Umami, Mixpanel and Amplitude. |
Screenshots show the built-in demo project. Every report works the same on your own data.
Analytics
- Visitors, visits, pageviews, bounce rate, visit duration and time on page, with a realtime view and comparison with the previous period or year.
- Breakdowns by page, entry and exit page, source, channel, UTM parameters, country, region, city, language, browser, operating system and device. Filters on any dimension, and saved segments.
- Custom events and properties, goals, funnels, revenue, retention cohorts, user journeys and annotations on the chart.
Product analytics
- Web Vitals (LCP, CLS, INP, FCP, TTFB), heatmaps with click and scroll maps, and session replay, each opt-in per project.
- A sessions explorer, an events explorer and user profiles with
identify(opt-in per project).
Teams and integrations
- Organizations and projects, roles, two-factor sign-in, shareable links and API keys.
- Alerts with email, webhook, Slack, Discord and Telegram delivery, and scheduled email reports.
- A REST API and an MCP endpoint, CSV export, and imports from Google Analytics 4, Plausible, Umami, Mixpanel and Amplitude.
Operations
- PostgreSQL only, with time partitions that are dropped for retention instead of bulk deletes.
- Backup and restore commands, a protected metrics endpoint and a data health page.
- Country lookups from a bundled DB-IP database, with optional region and city detail from MaxMind GeoLite.
Linux and macOS:
curl -fsSL https://github.com/velixio/supermetry/releases/latest/download/install.sh | shWindows PowerShell:
irm https://github.com/velixio/supermetry/releases/latest/download/install.ps1 | iexTo see what the installer would do first, add --dry-run, for example curl -fsSL https://github.com/velixio/supermetry/releases/latest/download/install.sh | sh -s -- --dry-run. Docker Compose, with a bundled PostgreSQL:
git clone https://github.com/velixio/supermetry.git && cd supermetry
cp .env.example .env # set SUPERMETRY_SECRET_KEY and POSTGRES_PASSWORD
docker compose -f deploy/docker-compose.yml --profile bundled-db up -d --buildDocker serves the dashboard on http://localhost:8787/app; see Docker Compose for an external database.
Open <your URL>/app and create your admin account. Then add the tracking script to your site. Copy the exact snippet from Settings, Installation in the dashboard. It looks like this:
<script defer src="https://analytics.example.com/js/YOUR_SITE_ID.js"></script>Just want to look around? After you sign up, choose Explore with demo data. Supermetry creates a project with 90 days of realistic sample traffic and keeps it moving while you explore. It deletes itself after 24 hours, and you can remove it earlier.
See deploy/README.md for unattended installs, manual deployment, service management, upgrades, backups and reverse proxies, and docs/guide/configuration.md for every setting.
- PostgreSQL (18 is what CI runs). Redis is not needed; a single instance runs without it.
- Release binaries for Linux, macOS and Windows on amd64 and arm64, plus 32-bit Linux armv6/armv7 for Raspberry Pi.
| Supermetry | Plausible CE (self-hosted) | Umami | Google Analytics | |
|---|---|---|---|---|
| Self-hosted | Yes | Yes | Yes | No |
| License | Apache-2.0 | AGPL-3.0 | MIT | Proprietary |
| What you run | One Go binary + PostgreSQL | Elixir app + PostgreSQL + ClickHouse | Node.js app + PostgreSQL | Nothing; Google hosts it |
| Cookies | None | None | None | Yes |
| Funnels, journeys and revenue | Yes | No (Plausible Cloud only) | Yes | Yes |
| Session replay and heatmaps | Yes | No | Yes | No |
Checked against the Plausible Community Edition and Umami 3.4 source code in October 2026. Corrections are welcome in an issue.
Supermetry collects page paths, referrers and campaigns by default, and never uses cookies or stores raw IP addresses. For the strictest setup, switch the whole server to anonymous mode.
anonymous |
identified (default) |
|
|---|---|---|
| Visitors, visits, pageviews and charts over time | yes | yes |
| Country, device, browser, operating system and channel | yes | yes |
| Page paths | replaced by a placeholder unless you list public paths | yes (query strings are always dropped) |
| Sessions and events explorers, imports | no | yes |
| Referrers, UTM campaigns, event properties, user profiles | no | yes, in projects with profiles on (the default for new projects) |
Set SUPERMETRY_TRACKING_MODE=anonymous on the server to choose the strictest mode, and turn profiles off in a project's settings to stop keeping referrers, campaigns and event properties for that project. Session replay and heatmaps are separate opt-ins. See Tracking and privacy for exactly what each setting records.
Is Supermetry a Google Analytics alternative?
Yes. It measures visitors, pageviews, sources, goals and conversions without cookies, and the data stays in your own PostgreSQL database.
How is it different from Plausible or Umami?
Plausible's self-hosted edition needs ClickHouse next to PostgreSQL, and Umami runs on Node.js. Supermetry is a single Go binary and PostgreSQL only, and it includes funnels, revenue, retention, session replay and heatmaps in the open-source release.
Does it use cookies or store IP addresses?
It sets no cookies. IP addresses are used to look up the country (and city, if you add MaxMind data) and to derive a daily-salted visitor ID, and are not stored. See Tracking and privacy.
Do I need a cookie banner?
That depends on the laws that apply to you and on what else your site runs, so ask your own counsel. Supermetry is designed to need as little consent as possible: no cookies, no raw IPs and no cross-site tracking, and it honours Do Not Track and Global Privacy Control.
Can I move my existing data in?
Yes. Import from Google Analytics 4, Plausible, Umami, Mixpanel or Amplitude in the project settings, then export to CSV whenever you like.
What does it need to run?
A small server and PostgreSQL. In the 4-hour test above, a single process used under 190 MiB of memory at a sustained 200 events per second.
Is there a hosted version?
An EU-hosted Cloud is on the way. Join early access. Self-hosting stays free and complete.
- Configuration
- Tracking and privacy
- API and API authentication
- Authorization
- Notifications
- Full docs at supermetry.com/docs
You need Go and Bun.
make build # builds the dashboard, then the binary in bin/
export SUPERMETRY_DATABASE_URL=postgres://user:pass@127.0.0.1:5432/supermetry
export SUPERMETRY_SECRET_KEY=$(openssl rand -base64 32)
export SUPERMETRY_BASE_URL=http://localhost:8787
./bin/supermetryMigrations run at startup. bin/supermetry --help lists the other commands (backup, restore, migrate, close-days, geoip).
You need Go, Bun and Docker. No database settings are needed: unless .env sets
SUPERMETRY_DATABASE_URL (or SUPERMETRY_TEST_DSN for tests), make starts PostgreSQL in Docker on
port 5433 and uses it. make dev-db-down stops it; its data is kept.
make dev # watch mode: open http://localhost:8787 (UI hot reload, Go restarts on change; listens on 127.0.0.1 only)
make run # embedded build served on :8787
make dev-embedded # one-shot embedded UI build and run, no watching
make test # Go tests
make lint # go vet and gofmtDashboard code is in web/ and uses Bun (bun install --frozen-lockfile, bun run test).
Issues and pull requests are welcome. See CONTRIBUTING.md. Report vulnerabilities privately as described in SECURITY.md.
If Supermetry is useful to you, a ⭐ helps other people find it.
Apache-2.0. Third-party notices are in NOTICE and THIRD_PARTY.md. Wallpapers behind the screenshots are credited in docs/assets/readme/CREDITS.md.




