GoAccess vs Plausible: Which Analytics to Self-Host?
Quick Verdict
These tools solve the same problem — “how many people visit my site?” — in fundamentally different ways. GoAccess parses your existing server logs with zero JavaScript and zero external requests. Plausible injects a lightweight tracking script. For privacy purists or high-traffic sites where adding JavaScript is impractical, GoAccess wins. For everyone else who wants a polished dashboard and real-time stats, Plausible is the better choice.
Overview
GoAccess is a real-time web log analyzer that runs entirely on your server logs (Nginx, Apache, Caddy, etc.). No JavaScript snippet, no cookies, no tracking pixels. It reads log files and produces an HTML report or terminal dashboard. It’s been around since 2009 and is written in C for speed.
Plausible is a modern, privacy-focused analytics platform with a clean web dashboard. It uses a tiny JavaScript snippet (~1 KB) to track pageviews without cookies. Built with Elixir/Phoenix, it launched in 2019 and has become one of the most popular Google Analytics alternatives.
Feature Comparison
| Feature | GoAccess | Plausible |
|---|---|---|
| Tracking method | Server log parsing | JavaScript snippet |
| JavaScript required | No | Yes (1 KB script) |
| Cookies | None | None |
| Real-time dashboard | Yes (WebSocket) | Yes |
| Pageviews | Yes | Yes |
| Unique visitors | IP-based estimation | Daily rotating hash |
| Referrers | Yes | Yes |
| Geographic data | Yes (via GeoIP DB) | Yes (built-in) |
| Browser/OS detection | Yes (from User-Agent) | Yes |
| Custom events | No | Yes |
| Goals/conversions | No | Yes |
| UTM parameters | Partial (from URLs) | Full support |
| API | No | Yes (REST) |
| Multi-site support | Manual (per-log) | Yes (built-in) |
| Email reports | No | Yes |
| Docker deployment | Yes | Yes |
| Resource usage | Very low (~50 MB RAM) | Moderate (~500 MB+ with ClickHouse) |
| License | MIT | AGPL-3.0 |
| Active development | Yes | Yes |
| Bot filtering | Via log patterns | Built-in |
Installation Complexity
GoAccess is simpler to deploy. It reads log files that already exist on your server — no database, no tracking snippet to install, no changes to your website. The Docker container watches a log directory and generates reports. The main complexity is configuring the log format to match your web server.
Plausible requires more infrastructure: a PostgreSQL database, a ClickHouse database for event storage, and the Plausible application itself. You also need to add a JavaScript snippet to every page you want to track. The Docker Compose stack has 3-4 services.
Performance and Resource Usage
GoAccess is written in C and parses millions of log lines per second. A full report on 10 GB of logs takes seconds. RAM usage stays under 100 MB even on large datasets. CPU usage spikes briefly during report generation, then drops to near zero. It’s the lightest analytics option available.
Plausible runs an Elixir application plus ClickHouse for event storage. Idle RAM usage is ~300-500 MB. Under load with thousands of concurrent visitors, it can use 1-2 GB. ClickHouse adds its own resource overhead. Still reasonable for a VPS, but 5-10x heavier than GoAccess.
| Metric | GoAccess | Plausible |
|---|---|---|
| RAM (idle) | ~30-50 MB | ~300-500 MB |
| RAM (under load) | ~80-150 MB | ~1-2 GB |
| CPU | Burst on report generation | Sustained under traffic |
| Disk (application) | ~5 MB | ~500 MB |
| Disk (data, 100K pageviews) | 0 (uses existing logs) | ~200 MB |
Community and Support
GoAccess has a mature community — 18K+ GitHub stars, active development, thorough documentation. The project has been maintained consistently since 2009. Issues are handled quickly, and the documentation covers every log format and configuration option.
Plausible has a large and growing community — 21K+ GitHub stars, commercial backing (Plausible Analytics), active development with frequent releases. Documentation is excellent with step-by-step self-hosting guides. The commercial product funds continued open-source development.
Use Cases
Choose GoAccess If…
- You want zero JavaScript on your site
- Privacy is non-negotiable and you refuse any client-side tracking
- You already have server logs and just need to visualize them
- You run a high-traffic site where even 1 KB of JavaScript per page adds up
- You want the absolute lightest analytics solution
- You don’t need custom events or conversion tracking
Choose Plausible If…
- You want a polished, real-time web dashboard
- You need custom event tracking (button clicks, form submissions)
- You want UTM campaign tracking and goal conversions
- You need an API for integrations
- You manage multiple sites from one dashboard
- You want email reports and team access
Final Verdict
GoAccess and Plausible aren’t really competitors — they’re different philosophies. GoAccess is analytics-from-the-server-side: zero client impact, zero privacy concerns, but limited to what server logs capture. Plausible is analytics-from-the-browser: richer data, better UX, but requires JavaScript.
For most self-hosters building a website or blog, Plausible delivers the better experience. The dashboard is intuitive, custom events are useful, and the 1 KB script has negligible performance impact. If you’re running infrastructure where JavaScript isn’t feasible — an API, a CDN, a file server — or if you philosophically oppose any client-side tracking, GoAccess does exactly what you need with zero overhead.
FAQ
Does GoAccess work with Cloudflare or CDNs?
Partially. If your site is behind Cloudflare, your server logs show Cloudflare’s IP addresses instead of visitor IPs. You need to configure your web server to use the X-Forwarded-For or CF-Connecting-IP header. Even then, CDN-cached requests never reach your server, so GoAccess will undercount pageviews for cached content. Plausible’s JavaScript snippet fires regardless of CDN caching, giving accurate counts.
Can GoAccess track custom events like button clicks?
No. GoAccess only analyzes HTTP requests recorded in server logs. It cannot track JavaScript events, button clicks, form submissions, or any client-side interaction. If you need event tracking, use Plausible, Umami, or PostHog.
How does GoAccess count unique visitors?
GoAccess estimates unique visitors by combining the IP address and User-Agent string. This is less accurate than Plausible’s daily-rotating hash method — shared networks (offices, schools, VPNs) appear as a single visitor, and users with different browsers on the same device appear as multiple visitors. For rough traffic estimates, it is sufficient. For precise visitor counts, Plausible is more accurate.
Can I use both GoAccess and Plausible?
Yes — and it is a good combination. GoAccess provides infrastructure-level data (HTTP status codes, bandwidth usage, bot traffic, 404 errors) that Plausible does not track. Plausible provides user-level analytics (referrers, UTM campaigns, custom events) that GoAccess cannot capture. Running both gives you complete visibility with minimal overhead.
Does GoAccess support real-time dashboards?
Yes. GoAccess can run as a WebSocket server that pushes updates to an HTML dashboard in real-time. Use goaccess --real-time-html -o /var/www/stats/index.html with the --ws-url flag. The real-time view updates every second as new log entries arrive. Protect this page with authentication — it exposes traffic data publicly otherwise.
Which is better for API servers?
GoAccess. API servers typically do not serve HTML pages, so adding a JavaScript tracking snippet (Plausible) is not practical. GoAccess reads the API server’s access logs directly and provides request counts, response codes, endpoint popularity, and response times — exactly what you need for API monitoring.
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