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
Open-source self-hosted analytics, formerly Piwik
Five facts that most often qualify or disqualify a tool early.
| GoatCounter | Matomo | |
|---|---|---|
| Price floor | Free | $29/mo |
| Free tier | Yes | Yes |
| Hosting model | SaaS + self-host | SaaS + self-host |
| Data residency | EU | EU |
| Cookieless | Yes | No |
Frameworks claimed and sub-processors disclosed under DPA.
| Framework | GoatCounter | Matomo |
|---|---|---|
| GDPR | Held | Held |
| CCPA | Not held | Held |
| UK PECR | Not held | Held |
| SOC 2 Type II | Not held | Not held |
| ISO 27001 | Not held | Held |
| HIPAA | Not held | Not held |
Cheapest published plan from each vendor that covers the listed pageview volume. Retrieved May 1, 2026.
| Traffic | GoatCounter | Matomo |
|---|---|---|
| 10k pv/mo | $0/moEntry | $29/moEntry |
| 100k pv/mo | $15/mo100k | $39/mo100k |
| 500k pv/mo | Custom — contact sales | Custom — contact sales |
| 1M pv/mo | Custom — contact sales | Custom — contact sales |
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 | Matomo |
|---|---|---|
| Pageviews & visitors | Yes Pageviews + visitors |
Yes Pageviews + visits + visitors |
| Live visitor count | No Not in dashboard |
Yes Visitors in real-time widget |
| Top pages report | Yes By hits, simple list |
Yes Pages report (drillable) |
| Top referrers | Yes Referrer list |
Yes Channels report (drillable) |
| UTM campaign tracking | Yes Campaign tracking via UTM parameters |
Yes Full attribution model |
| Country & city breakdown | Partial Country-level only; no city tracking |
Yes Country, region, city |
| Device, browser, OS | Yes Browser + OS |
Yes Full device/OS/browser breakdown |
| Bounce / engagement | No Not measured |
Yes Bounce rate |
| Time on site | No Not measured |
Yes Full session timeline |
| Custom events | Partial count({event:true}) or data-goatcounter-click attribute; no custom dimensions |
Yes Multi-dimensional events |
| Goals / conversions | No Not supported — basic events only, no conversion modeling |
Yes Multi-step + revenue tracking |
| Funnels | No Not supported — intentionally minimal scope |
Partial Cloud Business+ included; Self-host: $229/yr premium plugin |
| Outbound link tracking | No Manual via custom hits |
Yes Auto + manual |
| File download tracking | No Manual via custom hits |
Yes Auto + file-type categorization |
| 404 / error tracking | No Pageview to /404 path |
Yes Plugin |
| Feature | GoatCounter | Matomo |
|---|---|---|
| Cookieless by default | Yes Cookieless: no localStorage; salt rotates every 8 hours (more aggressive than daily-rotation peers) |
Partial Opt-in mode (one-line JS or admin toggle); cookies on by default |
| No personal data collected | Yes IPs not stored; in-memory only for geo + 8h salt hash |
Partial Configurable; off by default, CNIL mode masks last 2 octets |
| GDPR-compliant out of the box | Yes Vendor explicitly claims no banner needed; legitimate-interest basis |
Partial CNIL exemption (FR); DSK (DE) + Garante (IT) require case-by-case DPA review |
| Data hosted in EU | Yes Hetzner Finland + Germany; EU-only processing |
Yes AWS Frankfurt EU; InnoCraft (NZ) operates under EU adequacy decision |
| Data hosted in US | No EU-only — no US data residency |
Yes US data center option |
| Self-hostable | Yes Single static Go binary or Docker; SQLite default, Postgres optional |
Yes Free |
| Open source | Yes Server: EUPL-1.2 (slightly modified); count.js: ISC |
Yes GPL |
| Data retention period | Configurable Indefinite by default on Cloud + self-host; manual deletion via dashboard/API |
Configurable Default 180 days raw (CNIL); max 25 mo; aggregated unlimited |
| Bot & spam filtering | No Founder explicitly does not implement DNT (see arp242.net/dnt.html essay) |
Yes IAB list + custom |
| Feature | GoatCounter | Matomo |
|---|---|---|
| Script weight (KB) | 3 ~3.2 KB gzipped (~9 KB uncompressed); ISC-licensed count.js |
23 ~23 KB gzipped (~218 KB uncompressed); same comparison basis as peers |
| Single-snippet install | Yes data-goatcounter endpoint URL |
Yes Also GTM |
| WordPress plugin | Partial Plugin on GitHub (savjee/goatcounter-wp); not in WP.org repository |
Yes Bundled plugin (full Matomo runs in WP); 100,000+ installs |
| Proxy / first-party domain | Yes Self-host single binary or Docker; ISC-licensed count.js works anywhere |
Yes Configurable proxy/CDN; no native SaaS proxy |
| Public API | Yes REST API at /api/v0/* with Bearer token auth |
Yes Reporting + Tracking + Custom Reports APIs (REST/JSON/XML/CSV) |
| Data export (CSV/JSON) | Yes CSV/JSON |
Yes CSV/JSON/XML/RSS |
| Google Search Console connector | No No native GSC connector |
No No native GSC connector; pull via API |
| Email digests | Yes Weekly email reports |
Yes Scheduled email reports |
| Slack / webhook alerts | No No webhooks, no Slack integration, no plugin system |
No No native; via plugin |
| Public shareable dashboard | Yes Public stats per site; visitor counter widget |
Yes Anonymous viewer permission |
| Feature | GoatCounter | Matomo |
|---|---|---|
| Free tier exists | Yes Free Cloud for "reasonable public use" + permanent free Self-host |
No 21-day trial only on Cloud; Self-host is free forever |
| Entry price ($/mo) | No No paid tiers; donation-supported via GitHub Sponsors |
29 Cloud Starter (50k hits/mo, 30 sites) |
| Price at 100k pageviews | No No tier ladder; "personal use OK, millions of pageviews/day not" |
— Business tier — custom pricing |
| Unlimited sites on entry plan | Yes Self-host: unlimited sites; Cloud: unlimited within fair-use |
Yes Cloud: 30 sites on Starter; Self-host: 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. Matomo starts at $29/mo and reaches $39/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. Matomo is licensed under GPL-3.0-or-later and is available for self-hosting.
GoatCounter data residency: EU. Schrems II posture: eu only no transfer. Matomo data residency: EU. Schrems II posture: eu only no transfer.
GoatCounter uses daily salt hash for visitor uniqueness. Matomo uses none first party. Both mechanisms operate without setting cookies on the visitor's browser.
More comparisons and reference pages on this site.