Skip to content
Analytics · head-to-head

GoatCounter vs Umami

Updated Sep 2026prices checked · Jul 2026
We earn commissions when you shop through the links below. Full disclosure →
The verdictOur pick: Umami

Pick Umami for the easiest cookieless Google Analytics swap that still feels like analytics — a clean single-page dashboard with custom events that carry properties, funnels and retention, MIT-licensed, two containers (Next.js + PostgreSQL) on 1 GB. Pick GoatCounter when running as little as possible is the requirement: one Go binary or container writing to a SQLite file, no database server, named events but no properties, a JavaScript-free tracking pixel and log-file import, and a README that says it does not need a GDPR notice — at the cost of a narrower feature set and the less familiar EUPL-1.2 license.

Side by side

GoatCounter
Umamiour pick
Category
GoatCounter: Web analyticsUmami: Web analytics
Stack
GoatCounter: Go · SQLite (PostgreSQL optional)Umami: Next.js · PostgreSQL
License
GoatCounter: EUPL-1.2Umami: MIT
Min RAM
GoatCounter: 256 MB (our estimate — nothing published)Umami: 1 GB
Containers
GoatCounter: 1 (no database server)Umami: 2 (app + PostgreSQL)
Cookies
GoatCounter: NoneUmami: None
Custom events
GoatCounter: Yes — a named event with a title, no propertiesUmami: Yes — with data properties; funnels and retention in the MIT build
Ways to get data in
GoatCounter: Script tag, no-JavaScript tracking pixel, backend API, log-file import (nginx, Apache, Caddy, CloudFront)Umami: Script tag, POST /api/send, tracking links and pixels (v3)
Difficulty
GoatCounter: 1 / 5Umami: 2 / 5
Alternative to (SaaS)
GoatCounter: Google AnalyticsUmami: Google Analytics

GoatCounter and Umami are the two featherweights in this hub — the picks for someone who wants to know how the site is doing and wants nothing else to run. Both are cookieless, both fit in one short compose file, and both sit far below the 2 GB floor of the ClickHouse-backed tools. They differ on how small "small" is, and on how much dashboard you get for it.

How small is small

GoatCounter is a single statically compiled Go binary — or the project's own Docker image — writing to a SQLite file in one named volume. There is no second container. The README says the release binaries "contain everything you need" and that "the only dependency is somewhere to store a SQLite database file or a PostgreSQL connection." It publishes no RAM figure; the 256 MB on our page is our estimate, and it is generous.

Umami is a Next.js application that wants a PostgreSQL container beside it. Two containers, one compose file, 1 GB on our page. Still tiny by the standards of this hub, but it is an application with a database, where GoatCounter is a process with a file.

How much dashboard you get

Umami gives you the modern single-page analytics dashboard: pageviews, unique visitors, referrers, top pages, countries, devices — plus custom events that carry data properties, and the funnels, retention and heatmaps its MIT build includes. That is the layer that separates "a counter" from "analytics" for most small projects. One script tag on the site and you are done; a backend can also POST events to /api/send.

GoatCounter is candid about its scope. Its README positions it for people "confused by the myriad of options and flexibility of Google Analytics and Matomo that you don't need", and what it tracks is: unique visits (via a non-identifying hash, no cookies), referring sites and campaigns, browser, location and screen size, and named events — a count() call with event: true, a path and a title, but no arbitrary properties. What it adds that Umami does not is log-file import from nginx, Apache, Caddy or CloudFront; its JavaScript-free tracking pixel counts pages on your own site, while Umami v3's pixels are separate stats pages meant for emails and third-party sites. Both also accept events from your backend. For a documentation site, a blog, or anything whose readers run script blockers, that flexibility is the point.

Privacy

Both avoid cookies. GoatCounter goes further in what it claims: the README says it "doesn't need a GDPR notice", and the project's GDPR page explains why — "no personally identifiable information is collected" — while adding the word probably and a reminder that the author is not a lawyer. Umami is cookieless and privacy-focused, and leaves the legal conclusion to you.

Licenses

Umami is MIT. GoatCounter is EUPL-1.2 — the European Union Public Licence, with a modified "Compatible Licenses" appendix that the LICENSE file says is otherwise identical to the standard text. Both are free-software licenses; MIT is the one nobody has to look up.

Pick Umami if…

  • You want events with properties, funnels and retention and a modern dashboard your teammates will read without a tutorial.
  • You are fine running PostgreSQL beside the app.
  • You want the license nobody questions (MIT).

Pick GoatCounter if…

  • You want the smallest possible thing: one binary or one container, SQLite, no database server.
  • Your readers block JavaScript and you want the tracking pixel, or you would rather import server logs than add a script tag at all.
  • You want the tool whose author has already written the GDPR reasoning down for you.

The honest trade-off

Umami wins this comparison for most self-hosters because events with properties, funnels, retention and a dashboard people actually read are worth one extra container, and 1 GB is the smallest VPS tier anyway. GoatCounter is the better pick when minimalism is the requirement rather than a preference: it is the only tool in this hub that runs as a single process on a SQLite file, counts visitors with no JavaScript at all, and says in plain words what it does not do.

Common questions

GoatCounter vs Umami — which should I self-host?

Pick Umami if you want events with properties, funnels, retention and a modern dashboard your teammates will read without a tutorial, and you are fine running PostgreSQL beside it — it is MIT-licensed and runs on 1 GB. Pick GoatCounter if you want the smallest possible thing: a single Go binary or container on a SQLite file, named events, a JavaScript-free tracking pixel, and log-file import, with a narrower feature set by design.

Does GoatCounter really need no cookie banner?

Its README says it "doesn't need a GDPR notice", and the project's GDPR page explains the reasoning — no personally identifiable information is collected, and unique visits are counted with a non-identifying hash rather than a cookie — while adding the word probably and noting the author is not a lawyer. Umami is cookieless too; it leaves the legal conclusion to you.

Which is lighter to run?

GoatCounter. It is one statically compiled binary (or one container) writing to a SQLite file, with PostgreSQL optional for large sites; the project publishes no RAM minimum, and the 256 MB on our page is our estimate. Umami is a Next.js app plus a PostgreSQL container; it publishes no figure either, and the 1 GB on our page is ours. Both fit on the smallest VPS tier.

Where to host itaffiliate disclosure
Kamateratrial either on
The entry tier is a free trial — fine for a first look. Size it up (or run the 2 vCPU / 4 GB box the cost figures above assume) once you're keeping it.1 vCPU · 1 GB RAM · 20 GB SSD · $4.00/mo
Start free on Kamatera → (opens in new tab)
DigitalOceanalso works on
From $6/mo · 1 vCPU / 1 GB / 25 GB · US + EU + Asia
Deploy on DigitalOcean → (opens in new tab)

Paid link — we earn a commission if you shop through it.

Other comparisons with these apps

We use analytics cookies (Google Analytics, PostHog) to see which guides are useful. No ad networks, no cross-site tracking. See our privacy policy.