Umami
An MIT-licensed, cookieless web analytics app that self-hosts on Node.js with PostgreSQL or MySQL, or runs on Umami Cloud.
INTEGRATES: google-tag-manager
ALTERNATIVES: plausible-analytics · matomo · fathom-analytics · pirsch
Umami is the developer-favorite self-hosted analytics option — a permissively licensed (MIT) Next.js application that deploys in minutes with Docker. It is cookieless with no cross-site tracking, identifies visitors by hash rather than a stored ID, and collects pageviews plus custom events via a tracking script the vendor keeps under 2KB. Multi-website and team support make one instance serviceable across an organization.
One version note matters more than anything else right now: Umami v3 dropped MySQL and standardized
on PostgreSQL. New self-hosted installs need Node.js 18.18+ and PostgreSQL 12.14+ (the docs
recommend running Postgres in UTC), deployed either from source with pnpm, via Docker Compose, or
with the prebuilt image at docker.umami.is pointed at your database through a DATABASE_URL
environment variable. Existing v2 MySQL instances have an official migration path — get the schema
to v2.19.0, move the data into a fresh Postgres database (a dump for smaller datasets, CSV exports
plus psql \COPY for larger ones), then upgrade to v3. Budget real time for this if you are sitting
on a large MySQL install. Also change the default admin/umami login immediately after first boot;
the build step creates it for you.
Event tracking works two ways: declaratively, with data-umami-event attributes on HTML elements,
or programmatically with umami.track(). Know the difference — data attributes store every property
value as a string, so numeric, date, or boolean event data has to go through the JavaScript call.
Event names are capped at 50 characters, and event data cannot be sent without an event name. A
distinct-ID mechanism supports identifying users across sessions if you opt into it.
Reporting has grown well beyond basic traffic: the current docs cover session views, funnels,
retention, heatmaps, and shared boards for team collaboration, plus guides for monitoring Core Web
Vitals, proxying the script to bypass ad blockers, and enabling Redis. The API mirrors the app —
per the docs, any operation you can do through the application is available over JSON, with API-key
auth against api.umami.is on Cloud and a standard authenticated /api on self-hosted instances.
The MIT license is a real differentiator against AGPL-licensed peers for companies with license restrictions, and the hosted Umami Cloud (with a free Hobby tier, billing managed through Stripe) covers teams that want the same product without operations. It remains an aggregate web analytics tool, though — not a product analytics suite.
Use it when an engineering team wants a free, permissively licensed GA replacement it can run on its own Postgres with minimal ceremony. Look past it when you are committed to MySQL, need warehouse-grade raw data or sophisticated segmentation, or want someone else to run the database at high traffic volumes.