Pirsch flips the usual client-side tracking model by moving analytics server-side, using visitor fingerprinting without cookies or personal data storage. This approach bypasses ad blockers and strict privacy regulations like GDPR while still providing useful web analytics.
what pirsch is and how it works
Pirsch is a server-side web analytics platform implemented in Go. Instead of relying on browser cookies or JavaScript snippets that track users on the client side, Pirsch generates visitor fingerprints using a combination of IP address, User-Agent string, the date, and a salted hash. This method creates a unique but anonymous identifier for visitors without storing personal data.
The backend stores analytics data in ClickHouse, a column-oriented database optimized for fast analytical queries on large datasets. ClickHouse’s architecture supports efficient aggregation and querying of the collected metrics, making it suitable for real-time analytics workloads.
The project is open source under the GNU AGPLv3 license, with a commercial managed offering available. Contributions require transferring ownership to the maintainers to keep commercial control.
Under the hood, Pirsch’s fingerprinting approach avoids cookies entirely, which is key to its compliance with GDPR, CCPA, and PECR regulations. This also means it sidesteps common issues with ad blockers that target client-side tracking scripts.
the technical strengths and tradeoffs of pirsch
What sets Pirsch apart is its focus on privacy-first server-side fingerprinting that generates a consistent visitor ID without personal data or client-side storage. This approach solves a real problem: how to collect meaningful analytics without violating privacy laws or triggering ad blockers.
The codebase is primarily Go, which lends itself well to building efficient, concurrent server processes. The analytics data is stored in ClickHouse, which is a solid choice for large-scale, real-time analytic workloads due to its columnar storage and compression.
The tradeoff is that fingerprinting from IP and User-Agent is less precise than cookie-based tracking. Visitors behind shared IPs or with similar User-Agent strings may be grouped together, reducing granularity. However, given the regulatory landscape, this tradeoff is often acceptable.
Another limitation is the dependency on ClickHouse, which requires setup and operational knowledge. The tests require a specific ‘pirschtest’ schema in ClickHouse, so running the system locally or in CI involves some infrastructure overhead.
The project’s licensing model (AGPLv3 with commercial options) means it’s well suited for teams wanting to self-host or extend the platform but also want a commercial fallback or managed service.
explore the project
The repository’s README provides a clear overview and architectural insights, but there are no explicit quickstart commands included. Exploring the repo, you’ll find the core analytics logic in Go source files, with integration points for ClickHouse.
Key resources include the documentation on fingerprint generation and the database schema for ClickHouse. The tests are informative for understanding data flow and expected behavior but require a ClickHouse instance with the ‘pirschtest’ schema.
For anyone interested in the internals, the fingerprinting function is a good place to start to see how visitor IDs are computed without client-side dependencies.
verdict
Pirsch is relevant for developers and teams who need privacy-compliant analytics without relying on cookies or client-side tracking scripts. It’s a solid choice if you want to avoid the pitfalls of ad blockers and comply with GDPR/CCPA/PECR while still gathering useful visitor insights.
The main limitation is the reduced precision of fingerprinting compared to cookie tracking and the operational overhead of running ClickHouse. If you’re comfortable with Go and managing ClickHouse, Pirsch provides an open-source, privacy-focused alternative to traditional analytics platforms.
Overall, it’s worth understanding for anyone building privacy-conscious web applications or looking to replace third-party analytics tools with a self-hosted, transparent solution.
Related Articles
- Inside ClickHouse: A column-oriented database for real-time analytics — ClickHouse is a C++ column-oriented database optimized for real-time analytical queries on large datasets. Explore its a
- PinchTab: Token-efficient Chrome automation for AI agents with Go — PinchTab is a Go HTTP server enabling AI agents to control Chrome instances efficiently by extracting structured text, c
- Matomo: an extensible open-source analytics platform emphasizing privacy and customization — Matomo is a leading open-source, self-hosted analytics platform prioritizing data ownership and extensibility with a plu
→ GitHub Repo: pirsch-analytics/pirsch ⭐ 1,019 · Go