Matomo vs GoatCounter: Full Analytics or Just Enough?
The 100x Resource Difference
Here’s the uncomfortable truth about analytics tools: most website owners check three things — total visitors, top pages, and where traffic came from. Matomo gives you those three things, plus 200 more reports, e-commerce tracking, heatmaps, session recordings, A/B testing, and a plugin marketplace. GoatCounter gives you those three things and that’s basically it.
Updated March 2026: Verified with latest Docker images and configurations.
Matomo uses 2-4 GB of RAM. GoatCounter uses 25 MB.
Which do you actually need?
Feature Comparison
| Feature | Matomo 5.7.1 | GoatCounter 2.7 |
|---|---|---|
| Architecture | PHP + MySQL/MariaDB | Go binary + SQLite |
| Pageview tracking | Yes | Yes |
| Visitor tracking | Yes (first-party cookies optional) | Approximated (no cookies) |
| Real-time | Yes | Near real-time |
| E-commerce tracking | Yes (built-in) | No |
| Heatmaps | Yes (premium plugin) | No |
| Session recordings | Yes (premium plugin) | No |
| A/B testing | Yes (premium plugin) | No |
| Funnel analysis | Yes (premium plugin) | No |
| Custom dimensions | Yes | Limited |
| Custom events | Yes (full event model) | Basic |
| Goal/conversion tracking | Yes | No |
| Segments | Advanced (any dimension) | None |
| Data import | Google Analytics, CSV, logs | CSV |
| API | Full REST + reporting API | Basic REST API |
| Plugin system | Yes (marketplace with 100+ plugins) | No |
| Multi-site | Yes (unlimited) | Yes |
| Team/roles | Yes (granular permissions) | Single admin |
| Cookieless mode | Yes (configurable) | Always cookieless |
| GDPR compliance | Configurable (varies by setup) | By default (no PII collected) |
| Docker image | matomo:5.8.0-apache | arp242/goatcounter:2.7 |
| License | GPL-3.0 (premium features paid) | EUPL-1.2 |
Resource Usage
| Resource | Matomo | GoatCounter |
|---|---|---|
| RAM (idle) | 500 MB-1 GB | 20-30 MB |
| RAM (active) | 2-4 GB | 30-50 MB |
| CPU | Moderate-high (PHP + MySQL) | Minimal |
| Disk (application) | ~500 MB | ~15 MB |
| External database | MySQL or MariaDB required | SQLite built-in |
| Containers | 2 (app + database) | 1 |
| Minimum VPS | 2 GB RAM | 256 MB RAM |
| Monthly hosting cost | $12-20/month | $3-5/month |
Matomo’s MySQL dependency and PHP runtime make it one of the heavier self-hosted analytics options. GoatCounter’s Go binary with SQLite is among the lightest.
Who Actually Needs Matomo’s Features?
Be honest with yourself about this list:
You need Matomo if:
- You run an e-commerce store and track purchase funnels
- You do A/B testing and need statistical significance calculations
- You have a marketing team that needs segmented reports
- You’re migrating from Google Analytics and want feature parity
- You need to track authenticated user journeys across sessions
- You have compliance requirements that demand detailed audit logs
GoatCounter is sufficient if:
- You want to know how many people visited your site
- You care about which pages are popular
- You want referrer data to understand traffic sources
- You run a blog, portfolio, documentation site, or side project
- You value simplicity and low resource usage over feature depth
Most self-hosters fall in the second category. There’s no shame in admitting you don’t need funnel analysis for your homelab documentation site.
Setup Comparison
Matomo:
services:
matomo:
image: matomo:5.8.0-apache
restart: unless-stopped
ports:
- "8080:80"
volumes:
- matomo-html:/var/www/html
environment:
MATOMO_DATABASE_HOST: db
MATOMO_DATABASE_DBNAME: matomo
MATOMO_DATABASE_USERNAME: matomo
MATOMO_DATABASE_PASSWORD: your-db-password
depends_on:
db:
condition: service_healthy
db:
image: mariadb:11.7
restart: unless-stopped
environment:
MARIADB_ROOT_PASSWORD: root-password-change-this
MARIADB_DATABASE: matomo
MARIADB_USER: matomo
MARIADB_PASSWORD: your-db-password
volumes:
- matomo-db:/var/lib/mysql
healthcheck:
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
interval: 10s
timeout: 5s
retries: 5
volumes:
matomo-html:
matomo-db:
After starting, Matomo requires a web-based setup wizard: configure database, create admin account, add first website, install tracking code.
GoatCounter:
services:
goatcounter:
image: arp242/goatcounter:2.7
restart: unless-stopped
ports:
- "8080:8080"
volumes:
- goatcounter-data:/data
command: serve -listen :8080 -tls none -db sqlite3+/data/goatcounter.sqlite3
volumes:
goatcounter-data:
Create site from CLI, add the script tag, done.
Migration from Google Analytics
Matomo has a direct Google Analytics import tool. It pulls historical data from GA3/GA4 into Matomo’s database, preserving traffic trends, top pages, and referrer data. If you’ve been running GA for years and want to keep that history, Matomo is the only self-hosted option that makes this easy.
GoatCounter has no GA import. You start fresh. For many people this is fine — historical analytics from a different tool aren’t that useful in practice. But if continuity matters to your reporting, this is a real limitation.
Privacy Comparison
Both can operate without cookies, but the defaults differ:
GoatCounter never sets cookies. Visitor counting uses a hash of IP + User-Agent + date, rotated daily. No consent banner needed. Zero configuration required for privacy compliance.
Matomo offers configurable privacy levels:
- Default: first-party cookies (needs consent banner in EU)
- Cookieless mode: similar to GoatCounter’s approach
- Full anonymization: IP masking, no fingerprinting
Matomo’s flexibility means you can be GDPR-compliant, but you have to configure it correctly. GoatCounter is compliant by default because it never collects personal data.
FAQ
Can GoatCounter track outbound link clicks?
Yes, with a small JavaScript addition. Matomo tracks outbound links automatically via its tracking script.
Does Matomo have a free tier?
The core platform (self-hosted) is free and open source. Premium features (heatmaps, session recordings, A/B testing, funnel analysis) require a paid license. Many users run Matomo without premium features.
How much traffic can GoatCounter handle on SQLite?
~100K pageviews/day comfortably. The author runs the hosted service (goatcounter.com) on SQLite for many sites. Switch to PostgreSQL for higher volumes.
Can I run both temporarily?
Yes. Add both tracking scripts to your site during a transition period. GoatCounter’s ~3.5 KB script adds negligible load.
Final Verdict
GoatCounter for most self-hosters. If you’re replacing Google Analytics on a blog, documentation site, or personal project, GoatCounter gives you everything you’ll actually look at — in 25 MB of RAM with zero maintenance.
Matomo for businesses and marketers. If you need e-commerce tracking, conversion funnels, GA data import, segmented audiences, or a plugin ecosystem, Matomo is the only self-hosted option with that feature depth. Accept the resource cost as the price of feature parity with Google Analytics.
The gap between these tools is intentional. GoatCounter’s author explicitly rejects feature bloat. Matomo’s mission is to replace Google Analytics completely. Choose based on which philosophy matches your needs.
Related
Get self-hosting tips in your inbox
Get the Docker Compose configs, hardware picks, and setup shortcuts we don't put in articles. Weekly. No spam.
Comments