I've been on a slow march away from Google Analytics for about two years now. Three client projects, one personal blog, and a small SaaS — all moved over to privacy-focused alternatives. The decision usually starts with a cookie banner complaint and ends with someone asking "wait, why are we sending visitor data to an ad company again?"
If you're thinking about making the switch, this post walks through the three options I've actually shipped to production: Umami, Plausible, and Fathom. I'll cover what each does well, where they stumble, and what the migration actually looks like.
Why bother migrating at all?
The usual reasons, in roughly the order clients bring them up:
- GDPR/ePrivacy compliance without the cookie banner gymnastics
- Page weight — the GA4 script weighs in around 50KB+ gzipped; the alternatives here are all under 3KB
- Dashboard sanity — GA4's UI is, charitably, an acquired taste
- Data ownership — especially relevant if you self-host
None of these are reasons to migrate a high-traffic e-commerce site overnight. But for content sites, marketing pages, and most SaaS dashboards, the tradeoff is usually worth it.
The contenders
Here's the honest side-by-side. I've used all three in production within the last 18 months.
| Feature | Umami | Plausible | Fathom |
|---|---|---|---|
| License | MIT | AGPL-3.0 | Proprietary (Fathom Lite is MIT) |
| Self-host | Yes (free) | Yes (Community Edition) | No (hosted only) |
| Hosted option | Yes (Umami Cloud) | Yes | Yes (only option) |
| Script size | ~2KB | <1KB | ~2KB |
| Cookies | None | None | None |
| Database | MySQL or PostgreSQL | PostgreSQL + ClickHouse | N/A (managed) |
| Built with | Next.js / Node | Elixir / Phoenix | Closed source |
A few clarifications since this stuff changes:
- Fathom Analytics (the paid product) is closed source. There's an older project called Fathom Lite that's MIT licensed, but it hasn't been actively developed in years. Don't confuse them.
- Plausible Community Edition is the self-host option. The hosted version has extra features that aren't in CE — check their docs before assuming parity.
- Umami is the most permissive license-wise, which matters if you want to embed it in a commercial product.
What the tracking code looks like
This is roughly what you replace your GA4 snippet with. All three are a single script tag, which is part of the point.
Umami (self-hosted or cloud):
<!-- Drop this in your <head>, replace with your own website ID -->
<script
defer
src="https://your-umami-instance.com/script.js"
data-website-id="abc123-your-id-here"
></script>
Plausible:
<script
defer
data-domain="yourdomain.com"
src="https://plausible.io/js/script.js"
></script>
Fathom:
<script
src="https://cdn.usefathom.com/script.js"
data-site="ABCDEFGH"
defer
></script>
Notice none of them ask you to configure consent mode, set up data streams, or wire up tag manager. That's mostly the appeal.
Tracking a custom event
This is where the APIs diverge a bit. Here's the same "button clicked" event in each:
// Umami — global function attached to window
window.umami.track('signup-clicked', { plan: 'pro' });
// Plausible — same pattern, slightly different shape
window.plausible('Signup', { props: { plan: 'pro' } });
// Fathom — uses trackEvent
window.fathom.trackEvent('signup clicked');
Fathom's custom event API is the most limited of the three — no arbitrary properties on events in the same way. If you need rich event metadata, Umami and Plausible are better fits.
Self-hosting Umami in about 10 minutes
This is the workflow I've used for the last two client deployments. Assumes Docker is installed.
# Grab the official compose file
curl -o docker-compose.yml \
https://raw.githubusercontent.com/umami-software/umami/master/docker-compose.yml
# Generate a hash salt for sessions
openssl rand -base64 32
# Edit docker-compose.yml: set DATABASE_URL and APP_SECRET
# Then bring it up
docker compose up -d
The default admin login is admin / umami — change that immediately. Then point a reverse proxy at port 3000 and you're done. I've run this on a $6/month VPS handling a few hundred thousand pageviews per month without trouble.
Plausible CE is similar but heavier — it needs ClickHouse, which is a bigger commitment if you're not already running it. For small/medium sites, Umami is the easier self-host story.
Migration steps (the boring but important part)
Here's the rough order I follow when moving a site off GA4:
- Stand up the new analytics tool and verify it's collecting data
- Run both in parallel for 2-4 weeks — you want to see how the numbers compare before you cut over
- Export your historical GA data (BigQuery export if you have GA4; the UI export is rough)
- Document the metric differences for stakeholders — privacy-focused tools count visitors differently, and your numbers WILL drop
- Remove the GA snippet and any GTM containers that only existed to feed it
That last step about numbers dropping — be ready for it. Without cross-site cookies, returning visitors get counted as new more often. Bot filtering is also different. I've seen drops of 15-30% in reported sessions, and it usually has nothing to do with actual traffic.
So which one should you pick?
My actual recommendations after shipping all three:
- Pick Umami if you want to self-host on a budget, value the MIT license, or need richer custom events. It's my default recommendation for technical teams.
- Pick Plausible if you want a polished hosted experience and don't mind paying, or if you're already running ClickHouse and want a more battle-tested backend. The Plausible team also publishes a lot of useful research on web analytics.
- Pick Fathom if you want zero infrastructure and a simple dashboard, and don't need self-hosting. It's the most "set it and forget it" of the three.
One caveat about hedging your bets
I ran Plausible and Umami side-by-side on a client site for a month last year. The visitor numbers were within ~3% of each other, which was reassuring. They're both counting things in roughly the same way — the differences come down to how each handles edge cases like prerendering and ad blockers.
If you want to verify the methodology, both projects publish their counting logic. Umami's docs are at umami.is/docs and Plausible's data policy is at plausible.io/data-policy. Worth reading before you commit to either.
The TL;DR: any of these will be a meaningful upgrade over GA4 for most sites. The migration is genuinely not that hard. The hardest part is convincing whoever owns the marketing dashboard that the numbers are different but not wrong.
Top comments (0)