Vercel Analytics vs Plausible vs Umami: Privacy-First Analytics 2026
Vercel Analytics vs Plausible vs Umami: Privacy-First Analytics 2026
TL;DR
Google Analytics 4's complexity and privacy concerns have accelerated the shift to simpler, privacy-first analytics. Three tools lead the space in 2026. Vercel Analytics is the zero-friction option for Vercel-hosted projects — automatic Web Vitals, pageview tracking, and audience insights built into the Vercel dashboard with @vercel/analytics installed in 5 minutes and no cookie banner required; it's tightly coupled to Vercel infrastructure but unbeatable for DX. Plausible is the privacy-friendly, cookie-free alternative to Google Analytics — GDPR-compliant by default, beautiful dashboard with real-time stats, goals, funnels, properties, 1.8kB script, available as cloud ($9/mo) or self-hosted; it's the best standalone analytics service for production websites. Umami is the open-source, self-hosted analytics platform — deploy on your own Postgres database, no cloud costs beyond your own infrastructure, full feature set with event tracking, custom properties, and team sharing; the go-to for developers who want full data ownership. For Vercel projects needing quick analytics: Vercel Analytics. For a polished privacy-friendly cloud service: Plausible. For self-hosted with full data control: Umami.
Key Takeaways
- Vercel Analytics is zero-config — install
@vercel/analytics, done; no cookie banner - Plausible tracks zero personal data — no cookies, no IP storage, GDPR/CCPA compliant
- Umami is fully self-hosted — your Postgres, your data, your infrastructure
- All three are cookie-free — no consent banner required in most jurisdictions
- Plausible has funnels — multi-step conversion tracking in cloud plan
- Vercel Analytics includes Web Vitals — LCP, CLS, FID per route, percentile breakdown
- Umami is free — cost is only your hosting; Postgres on Railway/Supabase works
Feature Overview
Vercel Analytics Web Vitals + pageviews, Vercel-only, instant setup
Plausible Privacy-first SaaS/self-hosted, full analytics suite
Umami Open-source, self-hosted, full analytics, free
Vercel Analytics: Zero-Friction for Vercel Projects
Vercel Analytics is built directly into the Vercel platform — Web Vitals monitoring, audience analytics, and real-time pageviews with one package install.
Installation
npm install @vercel/analytics
Next.js App Router Setup
// app/layout.tsx
import { Analytics } from "@vercel/analytics/react";
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
<html lang="en">
<body>
{children}
<Analytics />
</body>
</html>
);
}
Pages Router Setup
// pages/_app.tsx
import { Analytics } from "@vercel/analytics/react";
import type { AppProps } from "next/app";
export default function App({ Component, pageProps }: AppProps) {
return (
<>
<Component {...pageProps} />
<Analytics />
</>
);
}
Web Vitals (Speed Insights)
npm install @vercel/speed-insights
// app/layout.tsx
import { Analytics } from "@vercel/analytics/react";
import { SpeedInsights } from "@vercel/speed-insights/next";
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
<html lang="en">
<body>
{children}
<Analytics />
<SpeedInsights /> {/* Automatic LCP, CLS, FID per route */}
</body>
</html>
);
}
Custom Events
// Track custom events beyond pageviews
import { track } from "@vercel/analytics";
// Track a button click
function handleSignUp() {
track("signup_click", {
plan: "pro",
source: "pricing_page",
});
// ... handle signup
}
// Track a purchase
function handlePurchase(amount: number, product: string) {
track("purchase", {
amount,
product,
currency: "USD",
});
}
Vercel Dashboard
After installation, the Vercel dashboard shows:
- Pageviews and unique visitors by day/week/month
- Top pages, referrers, countries, devices, browsers
- Web Vitals per route: LCP/CLS/FID at P50/P75/P90/P99
- Real-time visitor count
- Custom event funnel
- No cookies, no consent required
What Vercel Analytics CANNOT do
❌ Self-host — Vercel infrastructure only
❌ Works with non-Vercel deployments
❌ Custom dashboards or data export (paid plan needed)
❌ Session recording
❌ A/B testing
❌ Heatmaps
Plausible: Privacy-First Cloud Analytics
Plausible is purpose-built for privacy — no cookies, no personal data, GDPR by design, with a clean dashboard that developers actually want to use.
Installation
npm install next-plausible
Next.js Integration
// app/layout.tsx — App Router
import PlausibleProvider from "next-plausible";
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
<html lang="en">
<PlausibleProvider domain="yourdomain.com">
<body>{children}</body>
</PlausibleProvider>
</html>
);
}
Pages Router
// pages/_app.tsx
import PlausibleProvider from "next-plausible";
import type { AppProps } from "next/app";
export default function App({ Component, pageProps }: AppProps) {
return (
<PlausibleProvider domain="yourdomain.com">
<Component {...pageProps} />
</PlausibleProvider>
);
}
Or Via Script Tag (Any Framework)
<!-- Simple embed — no npm package needed -->
<script
defer
data-domain="yourdomain.com"
src="https://plausible.io/js/script.js"
></script>
<!-- With outbound link tracking -->
<script
defer
data-domain="yourdomain.com"
src="https://plausible.io/js/script.outbound-links.js"
></script>
<!-- Combined: outbound links + file downloads -->
<script
defer
data-domain="yourdomain.com"
src="https://plausible.io/js/script.outbound-links.file-downloads.js"
></script>
Custom Events
// Using next-plausible hook
import { usePlausible } from "next-plausible";
export function SignupButton() {
const plausible = usePlausible();
return (
<button
onClick={() => {
plausible("Signup Click", {
props: {
plan: "pro",
source: "pricing_page",
},
});
}}
>
Get Started
</button>
);
}
Revenue Tracking
// Track e-commerce events with revenue
import { usePlausible } from "next-plausible";
export function CheckoutButton({ amount }: { amount: number }) {
const plausible = usePlausible();
return (
<button
onClick={() => {
plausible("Purchase", {
revenue: { currency: "USD", amount },
props: { product: "pro_plan" },
});
}}
>
Complete Purchase
</button>
);
}
Plausible Dashboard Features
✅ Real-time visitors
✅ Pageviews, unique visitors, bounce rate, session duration
✅ Top pages, referrers, UTM sources, countries
✅ Custom goals and events with properties
✅ Funnels (multi-step conversion tracking)
✅ Revenue attribution
✅ Outbound link clicks (automatic)
✅ File download tracking (automatic)
✅ 404 page tracking
✅ Shared dashboards (public or password-protected)
✅ CSV/TSV export
✅ API for programmatic data access
✅ Email digests (weekly/monthly)
❌ Session recording
❌ Heatmaps
❌ A/B testing
Self-Hosting Plausible
# docker-compose.yml — self-hosted Plausible
version: "3.3"
services:
mail:
image: bytemark/smtp
plausible_db:
image: postgres:14-alpine
environment:
- POSTGRES_PASSWORD=postgres
volumes:
- db-data:/var/lib/postgresql/data
plausible_events_db:
image: clickhouse/clickhouse-server:23.3-alpine
volumes:
- event-data:/var/lib/clickhouse
- ./clickhouse/clickhouse-config.xml:/etc/clickhouse-server/config.d/logging.xml:ro
- ./clickhouse/clickhouse-user-config.xml:/etc/clickhouse-server/users.d/logging.xml:ro
plausible:
image: ghcr.io/plausible/community-edition:v2.1
command: sh -c "sleep 10 && /entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh run"
depends_on:
- plausible_db
- plausible_events_db
- mail
ports:
- 8000:8000
environment:
- BASE_URL=https://analytics.yourdomain.com
- SECRET_KEY_BASE=your-secret-key
- DATABASE_URL=postgres://postgres:postgres@plausible_db:5432/plausible_db
- CLICKHOUSE_DATABASE_URL=http://plausible_events_db:8123/plausible_events_db
volumes:
db-data:
event-data:
Umami: Self-Hosted Open Source
Umami is a fully open-source, self-hosted analytics platform — deploy it once to your own infrastructure and get complete data ownership with zero recurring analytics costs.
Self-Hosting Setup
# Clone and deploy
git clone https://github.com/umami-software/umami.git
cd umami
# Environment setup
cp .env.example .env.local
# Edit .env.local:
# DATABASE_URL=postgresql://user:password@localhost:5432/umami
# NEXTAUTH_SECRET=your-random-secret
Deploy on Railway (Fastest)
1. Railway → New Project → Deploy from GitHub → umami-software/umami
2. Add Postgres plugin (auto-generates DATABASE_URL)
3. Set environment variables:
- DATABASE_URL: (auto-filled by Railway plugin)
- NEXTAUTH_SECRET: (generate with: openssl rand -base64 32)
- NEXT_PUBLIC_UMAMI_APP_URL: https://your-railway-app.up.railway.app
4. Deploy — Umami runs on Railway's free tier or $5/mo
Next.js Integration
// app/layout.tsx
import Script from "next/script";
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
<html lang="en">
<head>
<Script
src="https://analytics.yourdomain.com/script.js"
data-website-id="your-website-id" // From Umami dashboard
strategy="afterInteractive"
/>
</head>
<body>{children}</body>
</html>
);
}
Custom Events via umami.track
// Track events from any JavaScript
declare global {
interface Window {
umami: {
track: (event: string, data?: Record<string, string | number>) => void;
};
}
}
// In your components
function handleSignUp() {
window.umami.track("signup", {
plan: "pro",
source: "pricing_page",
});
}
// Or use the npm package
// npm install @umami/node
import { track } from "@umami/node";
await track("https://yourdomain.com", "purchase", {
revenue: 99,
product: "pro_plan",
});
Umami React Hook
// Wrapper hook for Umami tracking
import { useCallback } from "react";
export function useUmami() {
const track = useCallback((event: string, data?: Record<string, string | number>) => {
if (typeof window !== "undefined" && window.umami) {
window.umami.track(event, data);
}
}, []);
return { track };
}
// Usage
export function PricingButton({ plan }: { plan: string }) {
const { track } = useUmami();
return (
<button
onClick={() => {
track("pricing_cta_click", { plan });
window.location.href = `/checkout?plan=${plan}`;
}}
>
Get {plan}
</button>
);
}
Feature Comparison
| Feature | Vercel Analytics | Plausible | Umami |
|---|---|---|---|
| Pricing | Free (100K events), $10/mo (1M) | $9/mo (10K visitors) | Free (self-host) |
| Self-hostable | ❌ Vercel only | ✅ Community Edition | ✅ Open source |
| Cookie-free | ✅ | ✅ | ✅ |
| GDPR compliant | ✅ | ✅ | ✅ |
| Web Vitals | ✅ LCP/CLS/FID | ❌ | ❌ |
| Real-time | ✅ | ✅ | ✅ |
| Custom events | ✅ | ✅ | ✅ |
| Funnels | ❌ | ✅ (paid) | ✅ |
| Revenue tracking | Limited | ✅ | ✅ |
| API access | ✅ | ✅ | ✅ |
| CSV export | ✅ (paid) | ✅ | ✅ |
| Shared dashboards | Limited | ✅ | ✅ |
| Next.js package | @vercel/analytics | next-plausible | Script tag |
| Script size | ~5kB | ~1.8kB | ~2kB |
| Data ownership | Vercel | Plausible/yours | ✅ 100% yours |
| GitHub stars | N/A | 20k | 23k |
| Deployment | Vercel | Cloud or Docker | Self-hosted |
When to Use Each
Choose Vercel Analytics if:
- Already on Vercel and want zero-friction setup
- Web Vitals monitoring per route is important (LCP/CLS/FID)
- Small project — free tier is generous for indie projects
- Want analytics in the same dashboard as deployments
- Don't need funnels, cohorts, or advanced segmentation
Choose Plausible if:
- Want a polished, maintained cloud analytics service
- Privacy-first is a selling point (GDPR countries, privacy-conscious audience)
- Need funnels, revenue attribution, and shared public dashboards
- Not on Vercel (Plausible works anywhere)
- Happy to pay $9-19/mo for a managed service vs self-hosting
Choose Umami if:
- Want $0 analytics costs (just hosting)
- Need complete data ownership (healthcare, legal, privacy-sensitive)
- Multiple websites, multiple team members (Umami supports multi-site)
- Self-hosting experience is already part of your stack
- Want to modify the analytics platform itself (open source)
Methodology
Data sourced from Vercel Analytics documentation (vercel.com/docs/analytics), Plausible documentation (plausible.io/docs), Umami documentation (umami.is/docs), pricing pages as of February 2026, npm weekly download statistics as of February 2026, GitHub star counts as of February 2026, and community discussions from the Vercel Discord, Plausible community forums, and indie hacker communities.
Related: PostHog vs Mixpanel vs Amplitude product analytics for full product analytics with session recording and feature flags, or Hotjar vs FullStory vs Microsoft Clarity session replay for heatmaps and session recording.