A Letter That Changed Things
In early 2023, a small e-commerce operator based in Europe received a formal inquiry from a German data protection authority. The issue was simple enough: his site was running Google Analytics, which routes visitor data through American servers. After the Schrems II ruling, this had become a legal gray area under GDPR, and German regulators had started taking it seriously.
His site was modest — a few tens of thousands of monthly visitors. But reading that letter, he realized something unsettling: he had no idea where his visitors’ data was going, or who had access to it.
That story traveled fast through indie maker communities. It pushed a lot of people to seriously consider self-hosted analytics for the first time. And when they started researching, most of them eventually ended up staring at the same two options: umami and matomo.
Both are open source. Both support self-hosting. Both claim to respect user privacy. Choosing between them, though, is less straightforward than it looks.
—
Where Each Tool Comes From
Understanding a tool means understanding why it was built.
matomo traces its roots back to 2007, when it was still called Piwik. Google Analytics had just started gaining traction, and a group of developers felt uncomfortable with the idea of handing all visitor data over to Google. The design goal was clear: build a full-featured alternative to GA, one that you could run on your own server.
That founding philosophy shaped everything about matomo. It wants to be complete. Funnel analysis, goal tracking, heatmaps, session recordings, A/B testing, e-commerce tracking — if GA has it, matomo generally wants to have it too, and wants to do it well.
Then in 2020, a developer named Mike Cao released the first version of umami. Self-hosted analytics already existed — matomo was there, Plausible was gaining followers — but Mike felt they were all solving the problem at the wrong level of complexity. matomo was too heavy; the deployment was a project in itself. Plausible had the right instincts but didn’t let you query the underlying database directly. umami’s answer was to cut everything non-essential, keep only the most useful data, and rewrite it from scratch with a modern stack.
These two tools set off in different directions from day one. The gap only widens when you actually use them.
—
Getting It Running
For most indie site owners, the first question about a self-hosted tool is: can I get this running on a Sunday afternoon without losing my mind?
umami’s deployment story is clean. The project ships an official Docker Compose configuration, and in theory you need a VPS with Docker installed, a few commands, and you’re done. It supports both MySQL and PostgreSQL, with ready-made compose files for each. If you’d rather skip the server entirely, umami offers one-click deploy templates for Railway and Vercel.
The v2 release in 2024 was a significant rewrite — migrating from Next.js Pages Router to App Router, and switching the database layer to Prisma. Performance improved noticeably. If you’re a new user, none of that matters. If you’re upgrading from v1, you’ll need to handle a data migration, and the release notes are worth reading carefully.
For someone with basic Linux and Docker experience, getting umami running typically takes thirty minutes to an hour.
matomo’s deployment is a different kind of experience.
The official installation path is a classic LAMP setup: extract PHP files into a web server directory, create a database, run the installer wizard. If you’ve ever set up WordPress the traditional way, you’ll recognize the flow. matomo also offers Docker images, but the community troubleshooting threads around Docker deployments are noticeably longer and more complicated than umami’s.
matomo has heavier dependencies: PHP 7.2 or above, MySQL or MariaDB, and enough server memory to handle it. The official recommendation for production environments is at least 2GB RAM. For anyone running a budget VPS, that’s a meaningful constraint. Under similar hardware conditions, umami typically runs smoothly while matomo can start showing sluggish behavior — especially when generating historical reports.
—
Privacy Compliance in Practice
For site owners who left Google Analytics over GDPR concerns, the fundamental value of a self-hosted tool is that data never leaves your server. Both umami and matomo deliver on that basic promise. The differences emerge in how they approach compliance design.
umami was built privacy-first from the ground up. It doesn’t use cookies. It doesn’t collect IP addresses. It identifies sessions using a hashed identifier rather than traditional user tracking. In most jurisdictions, this means umami’s tracking script doesn’t require a cookie consent banner at all.
That matters more than it might seem. GDPR requires explicit consent for non-essential cookies, and anyone who’s run A/B tests on consent banners knows the conversion hit they can cause. umami’s cookieless approach lets you stay compliant without that tax.
The trade-off is data granularity. Cross-session user recognition is limited. If you need to trace a single user’s complete journey across multiple visits over a week, umami can only tell you so much.
matomo’s approach is different — it’s powerful enough to do full user-level tracking, which means it’s handling personal data in the GDPR sense. matomo addresses this with a complete privacy compliance toolkit: a built-in consent management system, support for data subject requests (deleting or exporting specific users’ data), IP anonymization, and configurable data retention policies.
The way to think about it: matomo gives you the tools to be compliant, but you have to set them up. umami is compliant by default, but with less data to work with. Neither approach is wrong. They just involve different implementation efforts and different trade-offs on data depth.
—
What Each Tool Actually Does
This is where the gap between the two tools is most visible.
| Feature | umami | matomo |
|---|---|---|
| Pageviews / visitors / sessions | ✅ | ✅ |
| Real-time data | ✅ | ✅ |
| Custom event tracking | ✅ | ✅ |
| Goal / conversion tracking | Basic | Full |
| Funnel analysis | ❌ | ✅ |
| Heatmaps | ❌ | ✅ (free plugin, self-hosted) |
| Session recordings | ❌ | ✅ (free plugin, self-hosted) |
| A/B testing | ❌ | ✅ (free plugin, self-hosted) |
| E-commerce tracking | ❌ | ✅ |
| Search keyword reports | Limited | ✅ |
| Multi-site management | ✅ | ✅ |
| API access | ✅ | ✅ |
| Data export | ✅ | ✅ |
| Team roles / permissions | Basic | Full |
The table shows what exists. It doesn’t tell you what you need.
For a blogger or content creator, umami’s data is genuinely sufficient. You can see which posts are performing, where traffic is coming from, what countries your readers are in, and what devices they’re using. That’s enough to make real decisions about content direction.
If you’re running an e-commerce store, you need to know where in the checkout flow users are dropping off. That requires funnel analysis, which umami doesn’t have. If you’re optimizing landing pages, you want heatmaps. Those scenarios point to matomo.
One thing worth knowing about matomo’s advanced features: heatmaps, session recordings, and A/B testing are paid add-ons in matomo’s cloud version. In the self-hosted version, these plugins are open source and free — you just have to maintain them yourself. This is a real advantage of the self-hosted path that often gets overlooked.
—
The Day-to-Day Experience
Beyond features, there’s the question of what it feels like to open the tool and look at data every day.
umami’s interface is the kind of clean that makes you exhale. A single-page dashboard, all the core numbers visible without scrolling, minimal menu hierarchy. The color palette is restrained. It loads fast. If you’ve spent time in Notion or Linear, umami will feel familiar and uncluttered.
Switching time ranges, jumping between sites — everything responds quickly. For someone who just needs to glance at “how did today go,” umami is excellent.
matomo’s interface is built for analysts. Information density is high. There are menu items nested inside menu items: Visitors, Behavior, Acquisition, E-commerce, Goals — each one expanding into sub-reports, each sub-report configurable in ways you might spend weeks discovering.
The first time you log in, it can feel genuinely overwhelming. That complexity is the price of the depth. If you need to build scheduled email reports, configure custom segments, or dig into multi-channel attribution, matomo’s depth is something umami simply can’t match. But if your daily routine is a quick status check, you’ll spend the first few weeks wondering why everything takes three clicks.
—
Keeping It Running
Self-hosting means you own the maintenance. That’s part of the deal, and the ongoing cost varies between these two tools.
umami runs on Node.js and Next.js — a mainstream modern stack. Version updates are generally smooth: pull a new image, restart the container. Breaking changes are uncommon. The GitHub repository is actively maintained, issues get responses, and community answers are easy to find.
matomo has a built-in updater that handles upgrades from the admin interface without requiring you to touch the server. That’s a meaningful convenience. The trade-off is that matomo carries almost twenty years of history in its codebase. PHP version upgrades occasionally cause compatibility issues. The official documentation is extensive, but navigating it when something breaks can take time.
Both tools give you direct database access — you can run raw SQL queries against your data however you want. That’s the bedrock advantage of self-hosting over any SaaS tool, and it applies equally here.
—
Who Should Use Which
By this point, the shape of the decision is clear.
If you’re a content creator, blogger, or indie maker who mainly wants to understand traffic sources and page performance, with a GDPR compliance requirement but no appetite for a complex analytics setup — umami is the better fit. Easy deployment, clean interface, privacy-friendly by default, light on server resources. It tells you what you need to know without drowning you in configuration.
If you’re running an e-commerce site, a SaaS product, or a marketing team that needs funnels, goals, e-commerce tracking, or wants to generate reports that non-technical teammates can actually read — matomo is worth the investment. The learning curve is steeper and the maintenance overhead is real, but the analytical depth is in a different league.
One more situation worth naming: if your site is already running matomo and things are working, there’s no compelling reason to migrate to umami. Historical data has real value, migrations always carry friction, and matomo doesn’t have any fundamental problems.
—
They’re Not Mutually Exclusive
A pattern worth noting: plenty of site owners end up running both — umami on their main site for everyday monitoring, matomo on a specific project where deeper analysis matters. Both tracking scripts are lightweight, and running them simultaneously is technically fine.
This isn’t fence-sitting. It’s an acknowledgment that no single tool is optimal for every scenario. umami and matomo each have terrain where they’re genuinely better. Knowing where those edges are is more useful than forcing a clean choice before you understand what you actually need.
That European e-commerce operator who got the regulatory inquiry? He switched to umami. His reasoning was simple: “I just want to know how many people visited, where they came from, and what they looked at. I don’t need anything more than that.”
That’s an honest answer. And for a lot of site owners reading this, it probably sounds familiar.
Related reading
- OpenObserve vs SigNoz: Which Self-Hosted Observability Stack Fits a Small Team?
- n8n vs Activepieces: Choosing an Open-Source Workflow Automation Tool for Self-Hosted Teams
- Why Developers Are Moving Away from Auth0 to Self-Host SuperTokens
- Perplexity vs Gemini Deep Research vs ChatGPT Deep Research: Which to Choose in 2026
- Perplexity Pro vs Gemini Deep Research: Same $20/Month, 30x Difference in Research Quota



