GoatCounter vs Umami: Which Analytics to Self-Host?
Quick Verdict
Both GoatCounter and Umami are lightweight, privacy-focused analytics tools that work without cookies. GoatCounter is the simpler option — a single binary with SQLite, designed by one developer to be as minimal as possible. Umami offers a more polished UI and better multi-site management. For a personal blog or small site, GoatCounter is easier to run. For multiple sites or teams, Umami scales better.
Overview
GoatCounter is a minimalist web analytics platform built in Go. It runs as a single binary with SQLite or PostgreSQL, requires no JavaScript framework, and uses a tiny counting script. Created by Martin Tournoij, it’s opinionated about simplicity — it tracks what matters and ignores everything else. Licensed under the EUPL.
Umami is a modern privacy-first analytics platform built with Next.js. It uses PostgreSQL or MySQL and provides a clean, responsive dashboard with real-time data. Created by Mike Cao, it has a strong community and commercial backing through Umami Cloud. Licensed under MIT.
Feature Comparison
| Feature | GoatCounter | Umami |
|---|---|---|
| Language | Go | Next.js (Node.js) |
| Database | SQLite or PostgreSQL | PostgreSQL or MySQL |
| Tracking script | ~3.5 KB | ~2 KB |
| Cookies | None | None |
| Real-time updates | Yes | Yes |
| Pageviews | Yes | Yes |
| Unique visitors | Yes (privacy-respecting hash) | Yes (daily rotating hash) |
| Referrers | Yes | Yes |
| UTM parameters | Yes | Yes |
| Custom events | Yes (basic) | Yes (full) |
| Goals/conversions | No | Yes (via events) |
| Multi-site | Yes | Yes |
| Team access | Limited | Yes (role-based) |
| API | Yes (REST) | Yes (REST) |
| Bot filtering | Yes | Yes |
| Geographic data | Yes | Yes |
| Browser/OS data | Yes | Yes |
| Screen size tracking | Yes | Yes |
| Export data | Yes (CSV) | No built-in export |
| Email reports | No | No |
| Docker deployment | Community images | Official Docker image |
| Single binary option | Yes | No |
| License | EUPL | MIT |
Installation Complexity
GoatCounter is one of the simplest analytics tools to deploy. Download a single binary, run it, and you’re done. With Docker, it’s a single container with SQLite — no external database needed. Configuration is minimal: set a domain, create an account, add the tracking script.
Umami requires a database (PostgreSQL or MySQL) alongside the application container. The Docker Compose setup has 2 services. Initial setup involves running database migrations and creating an admin account. More moving parts, but still straightforward with Docker Compose.
Performance and Resource Usage
| Metric | GoatCounter | Umami |
|---|---|---|
| RAM (idle) | ~20-40 MB | ~150-250 MB |
| RAM (under load) | ~50-100 MB | ~300-500 MB |
| CPU | Very low | Low |
| Disk (application) | ~15 MB (single binary) | ~200 MB (Node.js) |
| Startup time | <1 second | ~5-10 seconds |
GoatCounter’s Go binary is remarkably efficient. It handles thousands of requests per second on minimal hardware. Umami’s Node.js stack is heavier but still well within reach of any VPS. Both are lightweight compared to Matomo or PostHog.
Community and Support
GoatCounter has a smaller but dedicated community. ~4K GitHub stars. Primarily maintained by a single developer with a clear vision. Documentation is thorough and honest about limitations. Updates are less frequent but focused.
Umami has a large community. ~24K GitHub stars. Backed by a company (Umami Software). Frequent releases, active Discord, extensive documentation. The commercial cloud product funds continued development. More contributors and faster feature development.
Use Cases
Choose GoatCounter If…
- You want the simplest possible self-hosted analytics
- You’re running a single blog or personal site
- You want a single binary with no database dependency (SQLite)
- Minimal resource usage matters (Raspberry Pi, small VPS)
- You prefer straightforward, no-nonsense data presentation
- You value an opinionated, minimalist approach
Choose Umami If…
- You manage multiple websites from one dashboard
- You need team access with different permission levels
- Custom event tracking is important (button clicks, form submissions)
- You want a more visually polished dashboard
- You need stronger API support for integrations
- You want active development with frequent new features
Final Verdict
GoatCounter and Umami sit in the same niche — lightweight, privacy-first analytics — but approach it differently. GoatCounter is the minimalist’s choice: fewer features, less infrastructure, less maintenance. Umami is the pragmatist’s choice: richer features, better multi-site support, more active development.
For a solo operator running one or two sites, GoatCounter is hard to beat. It runs on a Raspberry Pi, needs no database server, and gives you exactly the data you need without the data you don’t. For anything larger — multiple sites, team access, custom event tracking — Umami is the stronger platform with a bigger community behind it.
FAQ
Can GoatCounter run without Docker?
Yes — GoatCounter is distributed as a single Go binary. Download it, run goatcounter serve, and it starts with an embedded SQLite database. No Docker, no database server, no dependencies. This is GoatCounter’s main advantage over every other self-hosted analytics tool.
Does Umami support GoatCounter’s CSV export?
Umami does not have a built-in data export feature in the self-hosted version. You can query data through the REST API and write your own export script. GoatCounter supports native CSV export of all data from the admin panel — simpler for one-off data analysis or migration.
Which is more privacy-friendly?
Both are privacy-first by design — no cookies, no personal data, no IP storage. GoatCounter uses a privacy-respecting hash based on IP + User-Agent (rotated daily). Umami uses a similar daily rotating hash. Neither requires consent banners under GDPR. The practical privacy difference is negligible.
Can I track multiple websites with GoatCounter?
Yes. GoatCounter supports multiple sites through separate “site” configurations. However, each site is managed independently — there is no unified multi-site dashboard like Umami provides. For managing 5+ sites, Umami’s centralized dashboard with site switching is more convenient.
Does GoatCounter have a mobile app?
No — GoatCounter is web-only. The dashboard is responsive and works on mobile browsers, but there is no native app. Umami also has no native app but its dashboard is designed mobile-first and feels better on small screens.
Which is better for high-traffic sites?
GoatCounter handles high traffic efficiently — the Go binary processes thousands of requests per second on minimal hardware. Umami with PostgreSQL also scales well but needs more RAM. For sites receiving millions of pageviews per month, both work, but GoatCounter does it on cheaper hardware. For extremely high traffic (10M+ pageviews/month), consider Plausible with its ClickHouse backend, which is purpose-built for analytical queries at scale.
Related
Get self-hosting tips in your inbox
Get the Docker Compose configs, hardware picks, and setup shortcuts we don't put in articles. Weekly. No spam.
Comments