GoatCounter
Solo-developer cookieless analytics — single binary on SQLite, EUPL-1.2 license
- HQ🇮🇪 Ireland
- Founded2019
- LicenseEUPL-1.2 (server) · ISC (count.js)
- ReferenceRead full review
Two privacy-first web analytics tools, compared side-by-side on the same axes. Data is descriptive — no rankings, no editorial winners.
Solo-developer cookieless analytics — single binary on SQLite, EUPL-1.2 license
Privacy-first GA alternative, EU-hosted, simple dashboard
Five facts that most often qualify or disqualify a tool early.
| GoatCounter | Plausible | |
|---|---|---|
| Price floor | Free | $9/mo |
| Free tier | Yes | No |
| Hosting model | SaaS + self-host | SaaS + self-host |
| Data residency | EU | EU |
| Cookieless | Yes | Yes |
Frameworks claimed and sub-processors disclosed under DPA.
| Framework | GoatCounter | Plausible |
|---|---|---|
| GDPR | Held | Held |
| CCPA | Not held | Held |
| UK PECR | Not held | Held |
| SOC 2 Type II | Not held | Not held |
| ISO 27001 | Not held | Not held |
| HIPAA | Not held | Not held |
Cheapest published plan from each vendor that covers the listed pageview volume. Retrieved May 1, 2026.
| Traffic | GoatCounter | Plausible |
|---|---|---|
| 10k pv/mo | $0/moEntry | $9/moStarter |
| 100k pv/mo | $15/mo100k | $19/moStarter |
| 500k pv/mo | Custom — contact sales | $39/moStarter |
| 1M pv/mo | Custom — contact sales | $59/moStarter |
Volumes between tiers follow each vendor's published pricing model. "Custom" indicates the vendor does not publish a price for that volume on their pricing page.
All 38 verified checks across 4 categories.
| Feature | GoatCounter | Plausible |
|---|---|---|
| Pageviews & visitors | Yes Pageviews + visitors |
Yes Pageviews + unique visitors |
| Live visitor count | No Not in dashboard |
Yes Live, ~5s refresh |
| Top pages report | Yes By hits, simple list |
Yes By pageviews/visitors |
| Top referrers | Yes Referrer list |
Yes Source domain breakdown |
| UTM campaign tracking | Yes Campaign tracking via UTM parameters |
Yes Source/medium/campaign breakdown |
| Country & city breakdown | Partial Country-level only; no city tracking |
Yes Country, region, city |
| Device, browser, OS | Yes Browser + OS |
Yes Device, browser, OS |
| Bounce / engagement | No Not measured |
Yes Bounce rate |
| Time on site | No Not measured |
Yes Engagement time approximation |
| Custom events | Partial count({event:true}) or data-goatcounter-click attribute; no custom dimensions |
Yes All paid plans (Starter $9+) |
| Goals / conversions | No Not supported — basic events only, no conversion modeling |
Yes All paid plans |
| Funnels | No Not supported — intentionally minimal scope |
Yes $39 Business plan |
| Outbound link tracking | No Manual via custom hits |
Yes Auto-tagged |
| File download tracking | No Manual via custom hits |
Yes Auto-tagged |
| 404 / error tracking | No Pageview to /404 path |
No Manual events / 404 page hit |
| Feature | GoatCounter | Plausible |
|---|---|---|
| Cookieless by default | Yes Cookieless: no localStorage; salt rotates every 8 hours (more aggressive than daily-rotation peers) |
Yes Daily salt rotates every 24h, then deleted |
| No personal data collected | Yes IPs not stored; in-memory only for geo + 8h salt hash |
Yes IP processed in-memory only, never stored |
| GDPR-compliant out of the box | Yes Vendor explicitly claims no banner needed; legitimate-interest basis |
Yes Vendor legal opinion (CNIL-aligned); DE TTDSG/IT Garante stricter |
| Data hosted in EU | Yes Hetzner Finland + Germany; EU-only processing |
Yes Hetzner Falkenstein (DE) + Bunny CDN Slovenia |
| Data hosted in US | No EU-only — no US data residency |
No EU-only |
| Self-hostable | Yes Single static Go binary or Docker; SQLite default, Postgres optional |
Yes MIT, Docker |
| Open source | Yes Server: EUPL-1.2 (slightly modified); count.js: ISC |
Yes AGPL Community Edition |
| Data retention period | Configurable Indefinite by default on Cloud + self-host; manual deletion via dashboard/API |
Forever Until account deletion (no auto-purge) |
| Bot & spam filtering | No Founder explicitly does not implement DNT (see arp242.net/dnt.html essay) |
Yes IAB bot list + heuristics |
| Feature | GoatCounter | Plausible |
|---|---|---|
| Script weight (KB) | 3 ~3.2 KB gzipped (~9 KB uncompressed); ISC-licensed count.js |
Yes gzipped |
| Single-snippet install | Yes data-goatcounter endpoint URL |
Yes data-domain attribute |
| WordPress plugin | Partial Plugin on GitHub (savjee/goatcounter-wp); not in WP.org repository |
Yes Official plugin, 10,000+ active installs |
| Proxy / first-party domain | Yes Self-host single binary or Docker; ISC-licensed count.js works anywhere |
Yes Plausible Proxy via CNAME — bypasses adblockers |
| Public API | Yes REST API at /api/v0/* with Bearer token auth |
Yes Stats + Events |
| Data export (CSV/JSON) | Yes CSV/JSON |
Yes CSV + Stats API |
| Google Search Console connector | No No native GSC connector |
Yes Looker Studio export — Business plan |
| Email digests | Yes Weekly email reports |
Yes Weekly + monthly |
| Slack / webhook alerts | No No webhooks, no Slack integration, no plugin system |
Yes Direct integration |
| Public shareable dashboard | Yes Public stats per site; visitor counter widget |
Yes Public link, no auth |
| Feature | GoatCounter | Plausible |
|---|---|---|
| Free tier exists | Yes Free Cloud for "reasonable public use" + permanent free Self-host |
No 30-day trial |
| Entry price ($/mo) | No No paid tiers; donation-supported via GitHub Sponsors |
9 Starter plan, 10k pv/mo, 1 site |
| Price at 100k pageviews | No No tier ladder; "personal use OK, millions of pageviews/day not" |
39 Plausible Business tier (was $19 in 2024) |
| Unlimited sites on entry plan | Yes Self-host: unlimited sites; Cloud: unlimited within fair-use |
No Starter ($9) = 1 site; Growth ($14) = 3 sites; Business ($39) = unlimited |
Axes where the two tools take materially different approaches. Each paragraph describes both vendors in parallel structure.
GoatCounter starts at $0/mo and reaches $15/mo at 100k pageviews. Plausible starts at $9/mo and reaches $19/mo at the same volume. Both vendors publish per-tier pricing on their public pages.
GoatCounter is licensed under EUPL-1.2 (server) · ISC (count.js) and is available for self-hosting. Plausible is licensed under AGPL-3.0 and is available for self-hosting.
GoatCounter data residency: EU. Schrems II posture: eu only no transfer. Plausible data residency: EU. Schrems II posture: eu only no transfer.
GoatCounter uses daily salt hash for visitor uniqueness. Plausible uses daily salt hash. Both mechanisms operate without setting cookies on the visitor's browser.
Factual answers to the questions readers most often ask about this pair.
Yes, on the public hosted instance at goatcounter.com, for personal and non-commercial use under what Martin Tournoij calls reasonable use. The informal ceiling is around 100,000 pageviews per month, and traffic spikes are tolerated rather than enforced as a hard quota. Personal blogs, portfolios, hobby projects, and open-source documentation sites all qualify. What does not qualify: company sites generating revenue, SaaS dashboards, e-commerce. Those are commercial use and require a Personal+ plan starting at five dollars per month. The free tier is funded out of pocket, so do not abuse it — but it is not a trial.
No, and this is a hard ceiling. There is no funnel feature, no goals UI, no multi-step conversion view in GoatCounter — neither on the hosted instance nor in self-hosted. The maintainer has been clear that funnels are out of scope for the project. If you need to measure a flow like landing page to pricing page to signup to paid, GoatCounter will show you the four pageview counts but will not stitch them into a funnel with conversion rates. This is the single biggest feature gap versus Plausible Business and a real reason to pick Plausible if funnels matter to you.
GoatCounter wins by a wide margin. It is a single static Go binary with SQLite as the default datastore, runs on roughly 50 MB of RAM, and the entire deployment is downloading a binary, pointing a domain at it, and running goatcounter serve. Backups are copying one SQLite file. Plausible Community Edition runs Elixir, Postgres, and ClickHouse as separate services, needs around 4–5 GB of RAM at a realistic floor, and ClickHouse in particular has operational concepts you will need to learn. If your reason to self-host is simplicity, GoatCounter is the answer.
Not on the free hosted plan. Custom event tracking is a paid-tier feature on goatcounter.com, available from the Personal+ plan at five dollars per month. The free tier is strictly pageviews and referrers. On self-hosted GoatCounter, events are available because you are running the binary yourself with no plan gating. This is one of the cleaner arguments for self-hosting if you want events plus the free price tag — the trade is that you now run the server. Plausible, by contrast, has custom events on every paid plan, but custom event properties and groupings are gated to Business.
Plausible has a more developed Google Analytics import path. You can connect a GA property and Plausible will pull historical data into your dashboard so you do not lose the timeline when you switch. Coverage is not 1:1 — some custom dimensions and event shapes do not map cleanly — but the basic page and referrer history comes across. GoatCounter has a CSV import for log files and its own export format, but no first-class GA4 connector. If preserving years of GA history during migration is important, Plausible is the smoother path. If you are starting fresh on a new site, neither matters.
GoatCounter is a single-maintainer project — Martin Tournoij has run it since 2019 and has been steady about it. The codebase is small, clean Go and has stayed that way. The bus factor is one, which is a real risk for any business-critical infrastructure. The mitigations: it is fully open source under EUPL, the data model is simple enough that you could fork or migrate, and the self-hosted binary will keep running with no server-side dependency on the goatcounter.com service. For a personal blog this is fine. For a company committing to a single analytics tool for the next decade, plan for the maintainer-bus-factor case.
More comparisons and reference pages on this site.