Open source self-hosted analytics, tested on a clean server
Web analytics that keep visitor data on your own server. Argusic set each project up from a clean install and started it; the order below follows the outcome, and every verdict opens the full log and terminal recording.
Tested between and . Each row shows its own test date; a project can change after that day.
9 of 9 tested projects run.
In short: 8 of the 9 tested projects started as-is on a fresh machine: fathom, shynet, offen, freshlytics, goaccess, Ackee, talivia, and liwan. 1 more started once a stand-in replaced a service it expects, such as a database: tianji.
Measured by Argusic on a fresh machine every time. Every number links to its evidence.
| # | project | verdict | Argusic Score | language | stars | tested on |
|---|---|---|---|---|---|---|
| 1 | fathom | Runs | 100 / 100 | Go | 8,021 | |
Fathom Lite. Simple, privacy-focused website analytics. Built with Golang & Preact. What the test found: Fresh Fathom Lite install builds, runs on localhost:8124 with SQLite, authenticates, tracks real pageviews, and serves real dashboard stats including Google referrer grouping via the fixed binary. 22 minutes. | ||||||
| 2 | shynet | Runs | 100 / 100 | Python | 3,155 | |
Modern, privacy-friendly, and detailed web analytics that works without cookies or JS. What the test found: Shynet 0.13.1 is installed with SQLite backend, all 11 tests pass (9 API + 2 dashboard), Django admin user creation works via registeradmin, and Gunicorn serves the health check endpoint at 200 and login page at 200. 6 minutes. | ||||||
| 3 | offen | Runs | 100 / 100 | JavaScript | 981 | |
Offen Fair Web Analytics What the test found: Go server builds and tests pass (9 packages ok, 0 failures). JS frontend tests pass 7/7 when test server is running. The demo subcommand starts an ephemeral Offen instance with SQLite answering 200 on /auditorium/. 13 minutes. | ||||||
| 4 | freshlytics | Runs | 96 / 100 | TypeScript | 363 | |
Open source privacy-friendly analytics What the test found: Freshlytics builds from source, serves its React frontend and REST API on port 3001, and correctly collects pageviews and returns analytics grouped by date, path, referrer, and browser dimension. 34 minutes. | ||||||
| 5 | goaccess | Runs | 66.7 / 100 | C | 21,009 | |
GoAccess is a real-time web log analyzer and interactive viewer that runs in a terminal in *nix systems or through your browser. What the test found: GoAccess v1.11 builds from source and runs. It parses Apache/Nginx Combined log format files into valid JSON output with correct request counts (4 requests, 3 unique visitors, 2xx status codes, browser/user-agent breakdown) and generates a complete self-contained HTML report. The binary at /work/repo/goaccess executes... 14 minutes. | ||||||
| 6 | Ackee | Runs | 66.7 / 100 | JavaScript | 4,715 | |
Self-hosted, Node.js based analytics tool for those who care about privacy. What the test found: The Ackee server builds, starts, serves the UI at / on port 5678, responds to GraphQL API queries and mutations with authenticated token creation, serves the tracking script, and all 184 tests pass. 4 minutes. | ||||||
| 7 | talivia | Runs | 50 / 100 | TypeScript | 2,375 | |
Open-source, self-hosted revenue-first analytics for founders: web analytics, Session Replay, revenue attribution, and customer revenue integrations. datafast... What the test found: Dependencies installed, Prisma client generated, tracker and recorder scripts built, and all 463 tests pass. The application's test suite runs successfully end-to-end with mocked database. Production build and dev server require more RAM than available (1GB). 26 minutes. | ||||||
| 8 | liwan | Runs | 50 / 100 | Rust | 213 | |
liwan - Lightweight Analytics What the test found: Liwan compiles, all 49 tests pass, and the server starts successfully accepting connections on port 9042. 29 minutes. | ||||||
| 9 | tianji | Runs with mocks | 92 / 100 | TypeScript | 3,103 | |
Tianji: Insight into everything, Website Analytics + Uptime Monitor + Server Status. not only another GA alternatives What the test found: Dependencies installed, project builds successfully, shared and most server unit tests pass, client component tests mostly pass; server cannot launch without a PostgreSQL database. 25 minutes. | ||||||
runs installed and started with its real dependencies. runs with mocks started after stand-ins replaced external services such as a database or a third-party API. could not verify neither the standard agent nor the stronger one got it running within the time limit; the log shows where it stopped.
Before you choose
Decide how the tool gets its data. goaccess reads the web server's own log files and produced JSON and HTML reports from them in the test; it needs no script on your pages. The others collect page views through a tracking script and serve a dashboard: fathom served its dashboard, health endpoint, and tracking assets, and freshlytics accepted page views and returned them grouped by date, path, referrer, and browser.
Decide whether you want to run a database. shynet and offen ran on SQLite. Ackee passed all 184 of its tests against an in-memory MongoDB, and its own log states that the production server cannot start without a real MongoDB. tianji only started against a PostgreSQL the agent built from extracted packages, which is why it is "runs with mocks" and ranks below the projects that started as-is.
Look at the minutes. fathom, Ackee, and shynet were up in 10 to 20 minutes; goaccess, liwan, freshlytics, tianji, and offen took 28 to 38, mostly build time.
One project is still waiting: talivia has no finished attempt yet and sits unranked as "testing soon" until it does.
How we tested
An analytics server counts as working when it starts on the clean machine, serves its dashboard or API, and accepts data. Several projects on this list proved that end to end: freshlytics collected page views and returned them grouped by path, referrer, and browser; fathom served its dashboard, health endpoint, and tracking script; goaccess parsed web server logs into HTML and JSON reports.
Most projects here store data in SQLite or a bundled database, which is why they started without help. A project that expects an external database only starts once the agent stands in for it: tianji ran against a PostgreSQL built from extracted packages and is "runs with mocks". Ackee passed its full test suite against an in-memory MongoDB and is recorded on that basis; its log states that the production server still needs a real MongoDB.


On this list as of the latest test: 8 projects ran as-is, 1 with mocks, 0 could not be verified. Languages tested: C, Go, JavaScript, Python, Rust, TypeScript. Every attempt used a clean single-use machine, the subject at a pinned version, and a 45-minute limit; the complete procedure is on the methodology page.
Frequently asked questions (FAQs)
What does "runs" mean for an analytics tool?
The server started on a clean machine and served its dashboard or API. Where the log shows more, it is on the project's page: freshlytics, for example, accepted page views and returned them grouped by path, referrer, and browser.
Does the test check accuracy of the numbers?
No. Argusic measures whether the software installs and starts, plus what the project's own test suite reports. It does not compare analytics counts against a reference; that is stated so the list is not read as a quality ranking.
Why do some projects need mocks?
Because they expect an external database. tianji only started against a PostgreSQL the agent built from extracted packages, so it is "runs with mocks". Projects on SQLite or a bundled store started as-is.
Are cookie-free or privacy-focused tools favored?
No. Privacy claims are the projects' own descriptions, shown verbatim from GitHub. The rank follows the verdict, the Argusic Score, and stars only.
How current is this list?
Each row carries its own test date and the page states the window. A project can change after its test; a new attempt replaces the verdict only when it finishes with complete evidence.
How is this list ranked?
By measurement, not opinion: projects Argusic installed and launched on a fresh machine come first, then those that ran with mocks in place of external services, then those it could not verify. Ties go to the Argusic Score, then how popular it is on its own source.
Where is the evidence?
Every row links to the project's Argusic page, where each run has a full log and a terminal recording stored with a sha256 fingerprint. The same pages exist for every one of the tested projects, on this list or not.
More lists in this category
- developer CLI tools (shares goaccess with this list)
- uptime monitors (shares tianji with this list)
- AI agent frameworks
- self-hosted AI apps
- API clients
- API gateways
- CI/CD tools
- CMS platforms
- LLM gateways
- MCP servers
- VPN tools
- backup tools
- browser automation tools
- code editors
- open source coding agents
- Open source databases, installed and queried
- e-commerce platforms
- ebook readers
- game engines
- open source games
- home automation tools
- low-code platforms
- map tools
- message queues
- Open source music servers, installed and played
- observability tools
- Open source office suites, installed and launched
- self-hosted password managers
- project management tools
- screen recorders
- search engines
- speech tools
- static site generators
- vector databases
- open source video editors
- video players
- web scraping tools
- whiteboard tools
- wikis
- workflow automation tools
- self-hosted Notion alternatives
- self-hosted dashboards
- self-hosted git servers