Matomo vs Plausible 2026: Analytics Compared
Matomo vs Plausible in 2026: Full-Featured vs Lightweight Analytics
TL;DR
Matomo is the enterprise Google Analytics replacement — heatmaps, session recordings, A/B testing, e-commerce funnels, 200+ reports, LDAP, and tag manager. Plausible is the minimalist — essential metrics in a sub-1KB cookie-free script, a clean single-page dashboard, and automatic GDPR compliance without consent banners. They solve different problems: Matomo replaces Google Analytics feature-for-feature; Plausible replaces the 20% of GA features that 80% of teams actually use.
Key Takeaways
- Matomo (GPL-3.0, 20K+ stars) — PHP/MySQL, 200+ reports, heatmaps (plugin), session recordings (plugin), A/B testing (plugin), e-commerce tracking, LDAP/SSO
- Plausible (AGPL-3.0, 21K+ stars) — Elixir/ClickHouse, sub-1KB script, cookieless default, funnel visualization, GSC integration, revenue tracking
- GA4's breaking change (events replacing sessions/pageviews) drove massive migration to open source tools — both Matomo and Plausible are direct beneficiaries
- Matomo requires 2–4 GB RAM and MySQL; Plausible requires 1–2 GB RAM and ClickHouse + PostgreSQL
- Plausible is cookieless by default — no GDPR consent banner required; Matomo requires explicit cookie configuration
- Matomo's script is 22x larger (~22KB) than Plausible's (<1KB) — measurable page speed impact on high-traffic sites
The Google Analytics Replacement Problem
Google Analytics 4 was a forced migration that alienated its own user base. Universal Analytics had familiar session-based reports: pageviews, sessions, bounce rate, top pages, acquisition channels, all visible without configuration. GA4 replaced this with event-based tracking where you must build Explore reports before you can see anything beyond basic traffic numbers.
The result: teams spending hours configuring GA4 to approximate what GA3 showed automatically — while sharing all that data with Google.
Both Matomo and Plausible offer a clean break. But they're aimed at different use cases.
Plausible — The Clean, Fast, Private Option
Plausible's bet is that most websites don't need 200 reports. They need to know: where do visitors come from, what pages do they visit, and did the campaigns work? Everything else is configuration overhead.
Deploy Plausible
# Plausible Community Edition docker-compose.yml
services:
plausible_db:
image: postgres:16-alpine
restart: always
volumes:
- db-data:/var/lib/postgresql/data
environment:
POSTGRES_PASSWORD: postgres
plausible_events_db:
image: clickhouse/clickhouse-server:24.3.3.102-alpine
restart: always
volumes:
- event-data:/var/lib/clickhouse
- event-logs:/var/log/clickhouse-server
ulimits:
nofile:
soft: 262144
hard: 262144
plausible:
image: ghcr.io/plausible/community-edition:v2
restart: always
command: sh -c "sleep 10 && /entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh run"
depends_on:
- plausible_db
- plausible_events_db
ports:
- 127.0.0.1:8000:8000
env_file:
- .env
volumes:
db-data:
event-data:
event-logs:
# .env
BASE_URL=https://analytics.yourdomain.com
SECRET_KEY_BASE=your-64-char-generated-secret
TOTP_VAULT_KEY=your-32-char-generated-key
MAILER_EMAIL=analytics@yourdomain.com
SMTP_HOST_ADDR=smtp.resend.com
SMTP_HOST_PORT=587
SMTP_USER_NAME=resend
SMTP_USER_PWD=re_your_api_key
SMTP_HOST_SSL_ENABLED=true
# Optional: Google Search Console
GOOGLE_CLIENT_ID=your-google-client-id
GOOGLE_CLIENT_SECRET=your-google-secret
Add Tracking
<!-- Basic: under 1KB, cookieless, no GDPR banner needed -->
<script defer data-domain="yourdomain.com"
src="https://analytics.yourdomain.com/js/script.js"></script>
<!-- Enhanced: outbound links + file downloads + custom events -->
<script defer data-domain="yourdomain.com"
src="https://analytics.yourdomain.com/js/script.tagged-events.outbound-links.file-downloads.js">
</script>
Custom Events and Revenue
// Track custom conversion event
window.plausible('Signup', { props: { plan: 'pro', source: 'landing-page' } });
// Track revenue with purchase event
window.plausible('Purchase', {
props: { plan: 'enterprise', billing: 'annual' },
revenue: { currency: 'USD', amount: 299.00 }
});
// Track funnel steps
window.plausible('Onboarding', { props: { step: 'profile_complete' } });
window.plausible('Onboarding', { props: { step: 'integration_added' } });
window.plausible('Onboarding', { props: { step: 'first_invite_sent' } });
Funnel Visualization
Plausible's funnel builder creates step-by-step conversion views from pages or custom events. Define a 4-step signup funnel in the dashboard — Plausible shows users at each step and drop-off between steps. No event configuration required beyond the JS snippet.
Google Search Console Integration
Connect your GSC account in Plausible settings → Site Settings → Integrations. After connection, the "Search" tab in your Plausible dashboard shows which Google search queries drive traffic, with impressions, clicks, and position — the only open source analytics tool with native GSC integration.
Key features:
- Sub-1KB tracking script (22x smaller than Matomo)
- Cookieless, no GDPR consent required by default
- Real-time dashboard (live visitor count)
- Custom events with properties
- Revenue tracking and goals
- Funnel visualization
- Google Search Console integration
- Google Analytics import
- Email digests (weekly/monthly)
- REST API
- AGPL-3.0, 21K+ stars
- 1–2 GB RAM, Elixir + ClickHouse + PostgreSQL
Matomo — The Complete GA Replacement
Matomo is for teams that actually need GA's depth — marketing agencies, e-commerce sites with detailed product analytics, compliance teams that need full data control without sacrificing reporting capability.
Deploy Matomo
# Matomo Docker Compose
services:
matomo:
image: matomo:latest
restart: always
ports:
- "8080:80"
volumes:
- matomo_data:/var/www/html
environment:
MATOMO_DATABASE_HOST: db
MATOMO_DATABASE_ADAPTER: mysql
MATOMO_DATABASE_DBNAME: matomo
MATOMO_DATABASE_USERNAME: matomo
MATOMO_DATABASE_PASSWORD: password
depends_on:
- db
db:
image: mariadb:10.11
restart: always
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: matomo
MYSQL_USER: matomo
MYSQL_PASSWORD: password
volumes:
- matomo_db:/var/lib/mysql
command: --max_allowed_packet=64MB
volumes:
matomo_data:
matomo_db:
Add Tracking
<!-- Matomo tracking code (~22KB) -->
<script>
var _paq = window._paq = window._paq || [];
/* Cookie-free mode — no GDPR consent required */
_paq.push(['disableCookies']);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u = "https://analytics.yourdomain.com/";
_paq.push(['setTrackerUrl', u + 'matomo.php']);
_paq.push(['setSiteId', '1']);
var d = document, g = d.createElement('script'), s = d.getElementsByTagName('script')[0];
g.async = true;
g.src = u + 'matomo.js';
s.parentNode.insertBefore(g, s);
})();
</script>
Custom Events and Segments
// Track custom events with category/action/name/value
_paq.push(['trackEvent', 'Feature', 'Used', 'Export CSV', 1]);
_paq.push(['trackEvent', 'Onboarding', 'Step Completed', 'Profile Setup']);
_paq.push(['trackEvent', 'Upgrade', 'CTA Clicked', 'Pricing Page Hero']);
// Custom dimensions for user properties
_paq.push(['setCustomDimension', 1, 'pro']); // Plan dimension
_paq.push(['setCustomDimension', 2, 'engineering']); // Team dimension
E-Commerce Tracking
// Track product category page
_paq.push(['setEcommerceView', false, false, 'Laptops']);
_paq.push(['trackPageView']);
// Track product detail page
_paq.push(['setEcommerceView', 'SKU-001', 'MacBook Pro 14"', 'Laptops', 1999.00]);
_paq.push(['trackPageView']);
// Add to cart
_paq.push(['addEcommerceItem',
'SKU-001', // Product ID
'MacBook Pro 14"', // Product name
'Laptops', // Category
1999.00, // Price
1 // Quantity
]);
_paq.push(['trackEcommerceCartUpdate', 1999.00]);
// Track order completion
_paq.push(['trackEcommerceOrder',
'ORDER-789', // Order ID
1999.00, // Grand total
1999.00, // Subtotal
0, // Tax
0, // Shipping
false // Discount
]);
Heatmaps and Session Recordings
Install the Heatmaps & Session Recordings plugin from the Matomo Marketplace (free). After activation:
- Heatmaps: Overlay showing where users click (red = hot zones, blue = cold). Available for any page. See mobile vs desktop click patterns separately.
- Session Recordings: Watch individual user sessions — see exactly how users navigate, where they hesitate, and where they drop off. Useful for UX debugging.
Unlike Hotjar or FullStory, recordings stay on your server. No data sent to third parties.
Key features:
- 200+ report types across channels, devices, geo, behavior, and time
- Heatmaps and click maps (plugin, free)
- Session recordings (plugin, free)
- A/B testing and split tests (plugin)
- Funnel visualization
- Goals and conversions
- Cohort analysis
- Ecommerce analytics (products, cart abandonment, revenue by category)
- Custom segments with complex conditions
- Custom dimensions (user properties)
- Tag Manager (built-in, no separate service)
- LDAP/Active Directory integration
- SAML/Okta SSO (premium plugin)
- Scheduled email reports (PDF format)
- Google Analytics 4 import
- Full REST API
- GPL-3.0, 20K+ stars
- 2–4 GB RAM, PHP + MySQL
Side-by-Side Comparison
| Feature | Plausible | Matomo |
|---|---|---|
| License | AGPL-3.0 | GPL-3.0 |
| Stars | 21K+ | 20K+ |
| Stack | Elixir/ClickHouse | PHP/MySQL |
| Script size | < 1 KB | ~22 KB |
| Cookie-free default | ✅ | Optional |
| GDPR (no consent) | ✅ | Cookie-free mode |
| Real-time | ✅ | ✅ |
| Custom events | ✅ | ✅ |
| Revenue tracking | ✅ | ✅ (detailed) |
| E-commerce depth | Basic goals | Full cart/order/product |
| Funnels | ✅ | ✅ |
| Segments | Basic filters | ✅ Complex |
| Heatmaps | ❌ | ✅ (plugin) |
| Session recordings | ❌ | ✅ (plugin) |
| A/B testing | ❌ | ✅ (plugin) |
| Tag Manager | ❌ | ✅ Built-in |
| Custom dimensions | ✅ (properties) | ✅ (dimensions) |
| GSC integration | ✅ | ❌ |
| GA4 import | ✅ | ✅ |
| LDAP/AD | ❌ | ✅ |
| Scheduled reports | ✅ Email PDF | |
| Min RAM | 1 GB | 2 GB |
| Cloud option | $9–69/mo | $23–249/mo |
Decision Framework
Choose Plausible if:
- Clean, minimal dashboard is the goal — no configuration overhead
- Page speed matters — 1KB vs 22KB is measurable on mobile
- Cookieless GDPR compliance without consent banners is required
- Google Search Console integration adds value to your workflow
- Revenue tracking and funnels cover your analytics needs
- Simpler infrastructure is preferred (though ClickHouse adds complexity)
Choose Matomo if:
- You need Google Analytics feature parity — specifically heatmaps, session recordings, or A/B tests
- Detailed e-commerce analytics: products, cart abandonment, revenue by category
- Complex audience segmentation is part of your marketing workflow
- LDAP/Active Directory authentication is required for enterprise access control
- Tag Manager as a built-in feature (no separate Google Tag Manager)
- Scheduled PDF reports distributed to non-technical stakeholders
- You're fully migrating from GA4 and want every report type to exist
Cost Comparison
| Solution | Annual Cost |
|---|---|
| Google Analytics 360 | $150,000+/year |
| Matomo Cloud (starter) | $276/year |
| Matomo Cloud (full features) | $756–2,988/year |
| Plausible Cloud (100K pageviews) | $228/year |
| Plausible Cloud (1M pageviews) | $588/year |
| Plausible self-hosted | $60–120/year |
| Matomo self-hosted | $120–200/year |
Data Sampling and Accuracy at Scale
One of the most significant practical differences between Matomo and Plausible — rarely discussed in feature comparison articles — is their approach to data accuracy at high traffic volumes.
Google Analytics 4 famously uses data sampling at high traffic levels. When a report would require processing more data than the free tier threshold allows, GA4 runs queries against a statistical sample of events and extrapolates the results. The sampling rate is reported in the interface (e.g., "Based on 18.2% of your data"), but many users miss this indicator. Decisions made on sampled GA data can be misleading for high-traffic sites where specific segments or time windows have different characteristics than the average.
Matomo self-hosted processes all events without sampling. Every pageview, event, and conversion is stored and included in reports. The trade-off is infrastructure: processing all events requires more database storage and query time than sampled approaches. Matomo's PHP/MySQL backend handles this by caching aggregate reports as scheduled tasks — reports are pre-computed overnight and served from cache, rather than queried in real-time. This means Matomo's reports can be several hours stale depending on your archiving schedule configuration. For real-time analytics needs, Matomo shows live visitor data, but historical trend reports lag behind real-time by the archive interval.
Plausible's ClickHouse backend takes a different approach. ClickHouse is a columnar database designed specifically for analytical queries — it scans and aggregates millions of rows per second without pre-computation or caching. Plausible stores every event without sampling and runs reports against the full dataset in real-time. The result is accurate real-time analytics with no data lag and no sampling disclaimers. The operational requirement is running ClickHouse alongside the Plausible application, which adds memory overhead (1–2 GB for ClickHouse) compared to simpler PostgreSQL-based tools.
For extremely high-traffic sites (100M+ pageviews/month), both self-hosted tools require infrastructure attention. Plausible's ClickHouse scales horizontally with distributed clusters. Matomo requires partitioned MySQL tables and potentially separate database servers for archiving at that scale. At typical self-hosted scale (under 10M pageviews/month), both tools perform well without special tuning.
Plugin Ecosystem: Matomo's 100+ Plugins vs Plausible's Simplicity
Matomo's plugin ecosystem is one of its defining characteristics — it's how the open source community has extended the platform's capabilities far beyond the core installation.
The Matomo Marketplace lists over 100 plugins spanning analytics features (heatmaps, session recordings, A/B testing), integrations (WooCommerce, Magento, Shopify, WordPress), authentication (LDAP, SAML, Okta), data export (to Elasticsearch, BigQuery), and custom reports. The free plugins include genuinely valuable features: Heatmaps and Session Recordings (competitive with Hotjar), Roll-Up Reporting (aggregate data across multiple sites into a single report), Custom Reports (flexible report builder), and User ID enrichment. Commercial plugins from Matomo and third parties add features like Media Analytics (video/audio tracking), Form Analytics, Multi-Channel Attribution, and White Label (rebrand Matomo for client deployments).
The plugin ecosystem's value is that it makes Matomo adaptable to complex analytics requirements without requiring custom development. A media company that needs video completion tracking, chapter markers, and play rate by device type can install Matomo's Media Analytics plugin. An e-commerce site that needs cross-device attribution with offline store visit correlation has attribution plugins available. These use cases would require months of custom development in simpler tools.
Plausible's approach is the opposite: intentional simplicity with no plugin system. Plausible's team maintains a defined scope — page analytics, custom events, goals, funnels, revenue tracking, and Search Console integration — and resists scope creep. Features outside this scope are not planned. No heatmaps, no session recordings, no A/B testing, no LDAP. For users who want exactly what Plausible provides and nothing more, this focus is a feature — there's no configuration overhead, no plugin compatibility maintenance, and no bloat. For users who need Matomo's extended capabilities, Plausible's simplicity becomes a limitation.
See Plausible vs Umami 2026 for a comparison against the lighter alternative in this category, and How to Migrate from Google Analytics to Plausible 2026 for a complete GA migration guide.
Related: Plausible vs Umami vs Matomo: The Full Three-Way Comparison · Self-Hosting Guide: Deploy Plausible Analytics · Plausible vs Umami 2026 · How to Migrate from Google Analytics to Plausible 2026
See open source alternatives to Matomo on OSSAlt.