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

FeatureGoAccessPlausible
Tracking methodServer log parsingJavaScript snippet
JavaScript requiredNoYes (1 KB script)
CookiesNoneNone
Real-time dashboardYes (WebSocket)Yes
PageviewsYesYes
Unique visitorsIP-based estimationDaily rotating hash
ReferrersYesYes
Geographic dataYes (via GeoIP DB)Yes (built-in)
Browser/OS detectionYes (from User-Agent)Yes
Custom eventsNoYes
Goals/conversionsNoYes
UTM parametersPartial (from URLs)Full support
APINoYes (REST)
Multi-site supportManual (per-log)Yes (built-in)
Email reportsNoYes
Docker deploymentYesYes
Resource usageVery low (~50 MB RAM)Moderate (~500 MB+ with ClickHouse)
LicenseMITAGPL-3.0
Active developmentYesYes
Bot filteringVia log patternsBuilt-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.

MetricGoAccessPlausible
RAM (idle)~30-50 MB~300-500 MB
RAM (under load)~80-150 MB~1-2 GB
CPUBurst on report generationSustained 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.

Comments