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.
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