Plausible Analytics: self-hosted, cookie-free web analytics in Elixir
Open source, privacy-first web analytics. Lightweight, cookie-free Google Analytics alternative. Self-hosted or cloud.
At a glance
- What is it?
- Plausible Analytics is an AGPL-3.0, cookie-free web analytics tool written in Elixir, offered as managed cloud hosting and as a self-hosted Community Edition. The self-hosted path is real but it is a full stack you operate yourself, not a single container.
- Who is it for?
- Adopt Plausible CE if you want aggregate, cookie-free traffic numbers on infrastructure you control and you are willing to run Postgres, ClickHouse and an Elixir release yourself. Do not choose it if you need per-visitor session replay, if nobody on the team can operate a database cluster, or if you want someone else to handle upgrades.
- Can I use it commercially?
- Yes, with strict conditions. AGPL-3.0 is a network copyleft licence: if people use a modified version over a network, for example as a hosted service, you must offer them its source code under the same licence.
- Is it still maintained?
- Yes. The repository received new commits within the last day.
- What is it written in?
- Mainly Elixir, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 29, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
What Plausible Analytics measures, and what it refuses to measure
Plausible Analytics is a web analytics tool that counts traffic without storing personal data or IP addresses and without setting cookies or persistent identifiers. The README states the product is compliant with GDPR, CCPA and PECR on that basis. The practical consequence is that the dashboard shows aggregates: pageviews, referrers, goals, conversions, funnels and revenue attribution, all on a single page rather than in a report builder.
The audience is a site owner who wants to answer "how many people came, from where, and did they convert" without running a consent banner for analytics. The README also targets teams migrating off Google Analytics, and it lists a Search Console integration for keyword data, weekly or monthly email and Slack reports, and public dashboard sharing. What it will not give you is a per-user journey. There is no individual profile to inspect because the tool does not build one, so any question of the form "what did this specific visitor do" is outside the design.
The Elixir, Postgres and ClickHouse split behind the dashboard
The repository layout tells most of the architecture story. The application is an Elixir/Phoenix project (mix.exs, lib/, priv/, rel/), the browser tracker lives in its own tracker/ directory with its own package.json, and the dashboard assets live in assets/. The Makefile exposes two separate database targets: postgres and clickhouse. That split is the core mechanism. Postgres holds the application data (sites, users, settings), while ClickHouse holds the event data that the dashboard queries.
The Makefile pins a production-parity ClickHouse image, clickhouse/clickhouse-server:25.11.5.8-alpine, alongside a latest-alpine variant for local work, and stores its data in a host volume. Events arrive either from the tracker script or directly through the documented events API, and the README notes the stats API and CSV export for getting data back out. The Dockerfile shows the build path: a Node 24 stage supplies npm, an Elixir 1.20.4 on Erlang 28 stage compiles dependencies with MIX_ENV=ce, then builds the tracker, deploys assets and digests static files. The MIX_ENV=ce default is the signal that the Docker image builds the Community Edition, not the cloud product.
Installing Plausible CE from the Makefile
The README does not walk through a local install; the Makefile does. Its install target is the documented sequence for a development setup, and it requires Elixir, Node and a reachable Postgres instance before you run it. From the repository root:
make installThat target runs mix deps.get, mix ecto.create, mix ecto.migrate, mix download_country_database, then npm install in both assets and tracker, and finally npm run deploy --prefix tracker. If the database is not up, ecto.create fails and nothing after it runs. ClickHouse is separate and starts from the same Makefile:
make clickhouseThis launches the clickhouse/clickhouse-server:latest-alpine container named plausible_clickhouse with ports 8123 and 9000 published and a host volume for its data. For a version matching production, the Makefile offers make clickhouse-prod, which uses clickhouse/clickhouse-server:25.11.5.8-alpine. To confirm the event database exists, connect to it:
make clickhouse-clientThat opens clickhouse-client against the plausible_events_db database. Once both databases are reachable, the web server starts with:
make serverwhich is mix phx.server. The reader should expect the Phoenix endpoint to come up and the dashboard to be reachable, with the tracker script served from the same application. The README points to the official managed cloud as the two-minute option; the Makefile path above is the self-hosted one, and it assumes you already know how to run Postgres and Docker.
Where the Community Edition stops and the cloud begins
The README carries a comparison table between Plausible Analytics Cloud and the Community Edition, and the split is worth reading literally. On the cloud side it promises a worldwide CDN, high availability, backups, security and maintenance handled by the vendor, plus a release schedule described as continuously developed with updates multiple times per week. On the CE side the README says you do it all yourself: installation, maintenance, upgrades, server capacity, uptime, backup, security, stability, consistency and loading time. The table's release-schedule cell for CE is truncated in the README text, so the exact CE cadence is not stated there.
That asymmetry is the real limitation, not a missing feature. Nothing in the repository suggests the CE build lacks the tracking or dashboard functionality; the cost is operational. You are running two stateful databases with different failure modes. ClickHouse volumes need their own backup story, and the Makefile's local container writes into a project directory volume, which is fine for development and wrong for production. The README does not document rollback or a supported upgrade procedure for CE, so a self-hoster is choosing a path the documentation describes in terms of responsibility rather than steps.
How Plausible differs from a full-session analytics suite
The obvious alternative is Google Analytics, and the README frames the difference as a business model question rather than a feature list: Google Analytics is free because the vendor monetizes user data for advertising, while Plausible is funded by subscriptions and collects only aggregated, anonymized stats. Technically the divergence is sharper. A session-oriented suite builds a visitor identity so it can stitch pageviews into a journey, which is what makes funnels, cohorts and attribution flexible. Plausible deliberately does not keep that identity, so its funnels and attribution are computed over aggregate events within the retention window you configure.
If your questions are about individual behavior over time, a cookie-based or first-party-identifier tool answers them and Plausible does not. If your questions are about traffic volume, sources, and conversion counts, Plausible answers them with a much smaller data surface and no consent banner for analytics. The trade is analytical depth for a smaller compliance footprint, and it is a genuine trade rather than a strict improvement. The README's own framing, that Plausible measures traffic and not individuals, is the honest summary of which side you are choosing.
Licence, forks and the cost of staying current
Plausible Analytics is licensed under AGPL-3.0. For a self-hoster running the software internally, that is a familiar arrangement: you can run and modify it, and the copyleft obligations attach when you distribute modified versions or offer the modified software to users over a network. Because this is a network-facing application, the AGPL's network clause is the part to read carefully before you fork the dashboard and expose it to your own customers. This is a description of the licence text, not legal advice; if you plan to redistribute a modified build, get your own review.
Upgrade cost follows from the two-database design. The repository ships a CHANGELOG.md and tagged releases, with v3.2.1 dated 2026-05-15, v3.2.0 dated 2026-01-26 and a v3.2.0-rc.0 before it. The last push to the default branch was on 2026-05-15, so the project is not archived, but the gap between v3.2.0 in January and v3.2.1 in May is the cadence a CE operator should plan around. The README does not document a supported upgrade path for CE, and schema changes in either Postgres or ClickHouse are the kind of thing that makes a version pin valuable. Pinning the ClickHouse image to 25.11.5.8-alpine, as the Makefile's production target does, is the concrete way to keep one half of the stack from moving under you.
Editorial conclusion
Adopt Plausible CE if you want aggregate, cookie-free traffic numbers on infrastructure you control and you are willing to run Postgres, ClickHouse and an Elixir release yourself. Do not choose it if you need per-visitor session replay, if nobody on the team can operate a database cluster, or if you want someone else to handle upgrades. Before committing, read the CE versus Cloud comparison table in the README, check the release cadence against the changelog, and confirm that the AGPL-3.0 obligations fit how you intend to modify and distribute the code.
Frequently asked questions
How do you install Plausible Analytics for self-hosting?
The Makefile's install target runs mix deps.get, mix ecto.create, mix ecto.migrate, mix download_country_database and the npm install and deploy steps for the assets and tracker directories. ClickHouse is started separately with make clickhouse, and the web server with make server. The README does not provide a step-by-step self-hosting guide, so the Makefile is the closest thing to install instructions in the repository.
How do you use Plausible Analytics on a site?
The README describes a lightweight tracker script plus an events API for sending events directly, and says it supports single-page applications including pushState and hash-based routing. Goals, conversions, funnels and revenue attribution are tracked through custom events and dimensions, with codeless tracking available for outbound link clicks, form completions, file downloads and 404 pages. The repository keeps the tracker in its own tracker/ directory with its own build.
Is Plausible Analytics free?
The README says Plausible is an independent, open source project funded entirely by users, and that the cloud service is charged as a subscription to fund development. The self-hosted option is described as a free as in beer Community Edition. So the code is open source under AGPL-3.0, while the managed cloud is paid.
What does Plausible Analytics store about visitors?
The README states that no personal data or IP addresses are stored and that no cookies or persistent identifiers are used, and that only aggregated, anonymized stats are collected. It presents this as the basis for GDPR, CCPA and PECR compliance. Because of that design, there is no per-visitor profile to inspect in the dashboard.
Does Plausible Analytics need ClickHouse as well as Postgres?
The Makefile defines separate postgres and clickhouse targets, and the Dockerfile builds a single Elixir application, so the repository layout points to both databases being part of the stack. The Makefile's production-parity target pins clickhouse/clickhouse-server:25.11.5.8-alpine and stores its data in a host volume. The README does not describe the database roles in detail.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/plausible-analytics)
Community notes