AuthonAuthon Blog
comparison6 min read

Privacy-First Analytics: Migrating from Google Analytics to Umami, Plausible, or Fathom

An honest comparison of Umami, Plausible, and Fathom as privacy-focused Google Analytics alternatives, with real migration steps and code.

AW
Alan West
Authon Team
Privacy-First Analytics: Migrating from Google Analytics to Umami, Plausible, or Fathom

I've been running side projects for years, and Google Analytics was always the default. Drop in the snippet, forget about it, occasionally squint at a dashboard nobody asked for. Then GDPR happened, then a client's legal team handed me a 12-page questionnaire about data processors, and I finally started looking at alternatives seriously.

After migrating three projects off GA in the last six months, I've got opinions. Here's an honest comparison of the privacy-focused options I actually tested — Umami, Plausible, and Fathom — and what the migration looked like.

Why migrate off Google Analytics at all

Let me be fair to GA first. It's free, it's powerful, and the new GA4 event model is genuinely flexible once you stop fighting it. If you need funnel analysis with 47 dimensions, you probably want to stay.

But for most of us building product sites, marketing pages, or blogs, GA is wildly over-spec'd. You don't need session-scoped custom dimensions to know which blog post is doing well. And the cookie banner tax is real — every visitor has to click through a consent popup that hurts conversion and looks like junk mail.

The privacy-focused alternatives share a few traits:

  • No cookies (or optional/anonymous cookies only)
  • No personal data collection, so usually no consent banner required under GDPR
  • Dashboards you can actually understand without a certification
  • Lightweight tracking scripts (often under 2KB vs GA's ~45KB)

Side-by-side comparison

I'll skip the marketing chart and just tell you what mattered when I was choosing.

Umami

Umami is the one I ended up using on two of my three projects. It's open source, self-hostable, and the dashboard is genuinely pleasant. You can also use their cloud offering if you don't want to run it yourself.

The tracker is tiny. The setup is just a script tag with a data attribute pointing at your site ID:

Self-hosting is straightforward with Docker. I run mine on a $6 VPS alongside a few other small services:

# docker-compose.yml (simplified)
services:
umami:
image: ghcr.io/umami-software/umami:postgresql-latest
environment:
DATABASE_URL: postgresql://umami:password@db:5432/umami
DATABASE_TYPE: postgresql
# Generate this with: openssl rand -base64 32
APP_SECRET: replace-me-with-a-real-secret
ports:
- "3000:3000"
db:
image: postgres:15-alpine
environment:
POSTGRES_DB: umami
POSTGRES_USER: umami
POSTGRES_PASSWORD: password

Tradeoffs: you're on the hook for backups and updates if you self-host. The cloud version removes that headache for a monthly fee. Event tracking exists but is less polished than Plausible's — fine for basic conversion tracking, less great if you want elaborate funnels.

Plausible

Plausible is the most popular of the bunch and probably the most polished out of the box. It's also open source and self-hostable, though the community edition lags a bit behind the cloud version on features.

The script setup looks nearly identical to Umami:

Where Plausible shines is the dashboard polish and the goal/funnel features. Their docs are genuinely good, and the cloud pricing is fair. The self-hosted version uses ClickHouse though, which is a heavier dependency than Umami's Postgres-only setup. I ran it once on a small server and the ClickHouse memory usage was uncomfortable.

Fathom

Fathom is cloud-only — no self-hosting option, which was a dealbreaker for me on one project but might be a feature for you (no servers to maintain).

The pitch is similar: simple dashboard, privacy-friendly, no cookie banner. Their EU isolation feature for European visitors is genuinely thoughtful from a compliance angle.

Tradeoff: you pay from day one. There's no free tier, and pricing scales with pageviews. For a hobby blog, that's a hard sell. For a business site where you don't want to think about infrastructure, it's reasonable.

Migrating from GA: what actually breaks

The migration itself is shockingly easy on the implementation side. Replace the GA snippet with the new tracker and you're done. The pain is everywhere else.

Here's the before/after for a typical Next.js setup. Before, in _document.tsx:

// Google Analytics — the part you're ripping out
src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXXXX"
strategy="afterInteractive"
/>

After, with Umami:

Privacy-First Analytics: Migrating from Google Analytics to Umami, Plausible, or Fathom | Authon Blog