Matomo

Powerful, privacy-respecting web analytics platform

Web Analytics ★ 21.9k stars Medium setup GPL-3.0

Matomo is a powerful, open-source web analytics platform that gives full ownership of data as a privacy-friendly alternative to Google Analytics. It targets organizations that need detailed analytics with data control. It is deployed via Docker or a PHP stack.

Matomo setup guides & articles

Hands-on coverage of Matomo from the blog.

Key features

  • Full-featured analytics suite
  • 100% data ownership
  • Heatmaps and funnels via plugins
  • GDPR-friendly configuration

Pros & cons

Strengths

  • Comprehensive analytics
  • Privacy-respecting
  • Mature and extensible

Trade-offs

  • Heavier to self-host
  • Some features in paid plugins

Matomo replaces

Last reviewed Aug 26, 2026 · 853 words

Matomo is the right self-hosted analytics tool for one kind of site: the one where somebody will actually open the segment editor, the ecommerce reports, or a goal funnel. Every other site is better served by Plausible or Umami, which show a pageview chart within 5 minutes of install and stay out of the way. Matomo is a PHP application with a MariaDB database, about 1 GB of RAM, a plugin marketplace, and one cron job that decides whether it stays fast after the first month. That cron job is the most important paragraph in this guide, and it is the thing every "Matomo got slow" thread has in common.

Pick it for the reports Plausible refuses to build

Plausible and Umami are deliberately shallow: pages, referrers, countries, a handful of custom events. Matomo is the last open-source project that still aims at the full Google Analytics feature list. Segments (visitors who came from a newsletter and viewed pricing), goals with conversion attribution, ecommerce with product and cart reports, custom dimensions, a tag manager, and a visitor log that shows individual sessions click by click. If you've been forced off GA and there's a marketing person who used any of that, Matomo is the only self-hosted option that won't get a complaint. The Matomo vs Plausible comparison is the fuller version of that split, and the Google Analytics alternatives page covers the whole field.

The archiving cron decides whether it stays fast

Matomo stores raw visits and computes reports from them. By default, it computes those reports when someone opens the dashboard ("browser-triggered archiving"), which is fine for 100 visits a day and a disaster at 10,000: the dashboard takes 30 seconds to load and MariaDB pegs a core every time anyone looks. The fix is two steps, and the install wizard doesn't do them for you. Run the archiver on a schedule:

docker compose exec -u www-data matomo \
  php console core:archive --url=https://stats.example.com

Put that in cron every hour. Then, in System, General settings, set "Archive reports when viewed from the browser" to No. From that moment the dashboard reads precomputed tables and loads in under a second, and the database load is a predictable hourly bump instead of a surprise on every page view.

Compose: Matomo, MariaDB, and that cron

services:
  matomo:
    image: matomo:apache
    ports:
      - "8080:80"
    environment:
      MATOMO_DATABASE_HOST: db
      MATOMO_DATABASE_USERNAME: matomo
      MATOMO_DATABASE_PASSWORD: change-me
      MATOMO_DATABASE_DBNAME: matomo
    volumes:
      - ./matomo:/var/www/html
    depends_on:
      - db
    restart: unless-stopped
  db:
    image: mariadb:11
    environment:
      MARIADB_ROOT_PASSWORD: change-me-too
      MARIADB_DATABASE: matomo
      MARIADB_USER: matomo
      MARIADB_PASSWORD: change-me
    volumes:
      - ./db:/var/lib/mysql
    restart: unless-stopped

Finish the wizard in the browser, and set the trusted hostname to the public URL you'll use behind your reverse proxy or the tracker will refuse requests. Back up both the database dump and the matomo/config/config.ini.php file; the rest of the volume is reinstallable. The 1 GB of RAM in the catalogue is realistic for the pair; MariaDB grows with the raw-visit tables, and Matomo can be told to purge raw data older than 180 days once the archives exist, which keeps the database from doubling every year.

Matomo's privacy settings are the reason it survived GDPR when others didn't. Anonymise IP addresses by 2 bytes, enable the opt-out, and add one line to the tracking snippet, _paq.push(['disableCookies']);, and Matomo tracks with no cookies at all. You lose returning-visitor accuracy and the precision of the visitor log; you keep everything else. France's CNIL lists a correctly configured Matomo among the tools it considers exempt from consent, which is as close to an official blessing as an analytics tool gets. If your site's audience is European and your alternative is a consent banner, this configuration is the reason to choose Matomo over a tool that can't be tuned. The ditching Google Analytics post walks through the same decision from the migration side.

The paid-plugin line

The core is GPL-3.0 and complete. Heatmaps and session recordings, A/B testing, form analytics, funnels, and media analytics are premium plugins sold on Matomo's marketplace with annual licences. The catalogue lists funnels and heatmaps as plugin features and it's right; if those are your reason for choosing Matomo, price them before you commit. Everything in the previous sections is free.

What I'd do

For a personal site or a homelab dashboard, Umami and no second thought. For a business site with a marketing team, a shop, or a GA-shaped reporting expectation: Matomo on the Compose file above, the hourly archive cron set up before anyone sees the dashboard, browser archiving off, cookieless mode on, and raw-data retention at 180 days. Run like that, it's the one self-hosted analytics tool that grows with the site instead of being outgrown by it.

Compare Matomo

19 head-to-head comparisons.

Similar web analytics apps