What’s new in our latest release?

Matomo 6.0.0 is the first major release since December 2023. It modernises the platform with PHP 8.1, MySQL 8 and a rebuilt front-end toolchain. It also builds spam and bot filtering into Matomo, introduces completely redrawn visitor maps, and applies the new design system to dropdowns, search fields and report headers.

On-Premise administrators should review the system requirement changes before updating.

Release Highlights

Less junk in your data

Spam and bot filtering, previously available as a separate plugin, is now part of Matomo and enabled by default.

A fresh look at your maps

Visitor and real-time maps have been enhanced using current geographic data, improving region highlighting and country label accuracy.

Consistent controls everywhere

Dropdowns, select fields and search boxes now share a consistent appearance and behaviour, and reports use the same header design.

Faster page reports

New installations archive page URL and page title reports from a single flattened record, improving performance for large sites.

Update Matomo to the latest release

Before updating, confirm that your system meets the following requirements and plan for the database change included in this release.

System requirements

Matomo 6 requires PHP 8.1 or newer and MySQL 8.0 or MariaDB 10.6. Installations using older versions must upgrade them before updating Matomo.

Database upgrade

This release adds a consent column to the log_visit table in preparation for consent tracking. The update runs an ALTER TABLE operation, which may take time on installations with a large visits log.

Need help updating Matomo?

Read the Updating Matomo user guide or for more help we offer paid support plans.

After you update

Tickets closed in Matomo 6.0.0

Requirements and removals

  • #21736, #24638 Require PHP 8.1 or newer. Installations using PHP 8.0 or older must upgrade PHP before updating to Matomo 6. [by @mneudert, @sgiehl]
  • #24858 Require MySQL 8.0 or MariaDB 10.6. Matomo now validates the actual database server type, distinguishes MariaDB Enterprise from Community and removes the experimental TiDB schema. [by @sgiehl]
  • #24877 Require One Click Update to download over HTTPS by removing the option to retry over HTTP. [by @sgiehl, @chippison]
  • #18675, #25206 Validate the effective hostname for Matomo installations behind a proxy. Before updating an installation that uses proxy_host_headers, add both the public hostname and the hostname used to access Matomo to trusted_hosts. [by @sgiehl]
  • #25062 Add a consent column to log_visit in preparation for consent tracking. The database upgrade runs an ALTER TABLE operation on the visits table. [by @sgiehl]
  • #19665, #21780 Remove the SEO plugin and the SEO.getRank API method. The SEO Rankings widget was retired in Matomo 5.9 because it could no longer retrieve rankings reliably. [by @sgiehl, @chippison]

Core improvements

  • #25035, #25079 Build Tracking Spam Prevention into Matomo and enable it by default, including filtering for headless-browser traffic generated by AI tools. The plugin is no longer available from the Marketplace and cannot be uninstalled. [by @sgiehl]
  • #10739, #24983 Add a …_percent_of_total column for each metric in API responses and every export format. Add percent_of_total=0 to a request to retain the previous columns. [by @caddoo]
  • #11929, #9170, #10963, #24878 Regenerate visitor and real-time maps using current geographic data to improve region matching, highlighting and country accuracy. [by @sgiehl, @ysard]
  • #25150 Archive page URL and page title reports from a single flattened record on new installations, improving performance for large sites and preventing long page categories from being truncated with a summary row. Updated installations retain their existing behaviour. [by @sgiehl, @snake14]

Interface improvements

  • #23917, #25033, #25100, #24868 Standardise dropdowns, select fields, menus and reorderable lists across Matomo. [by @snake14, @chippison, @tzi]
  • #24970, #24991 Use a consistent search component for menu search, segment search and quick access, and support pasted text and input method editors in quick access. [by @tzi]
  • #24966, #24989 Use a consistent header for full-page reports, exported widgets and dashboard widgets, and add a More details link when an online guide is available. [by @tzi]
  • #25109, #25122, #25131 Rebuild the Transitions report as a Vue component and retain its side-by-side layout in narrow panes by allowing horizontal scrolling. [by @chippison]
  • #24891, #24953 Separate the green success colour from Matomo’s teal brand colour. [by @tzi]

Bug fixes

  • #23979, #24854 Update report help when switching between related reports. [by @chippison]
  • #20216, #24742 Allow Unique Visitors and Unique Users to be selected as KPIs for weekly and monthly periods. [by @chippison]
  • #24543 Correctly combine a selected report row with an applied segment when opening the visits log, and clarify the popup title. [by @tzi]
  • #24088, #25094 Position country labels inside the correct country on region maps. [by @sgiehl]
  • #25161 Show the selected data period in downloaded HTML reports instead of the report delivery schedule. [by @sgiehl]
  • #25001, #25002 Prevent correctly rendered dashboard widgets from displaying an error caused by an internal API call. [by @snake14, @sgiehl]
  • #25040 Apply the correct comparison colours to overview card sparklines from the first page load. [by @tzi]

Security and privacy

  • #22605 Require Write permission to add, edit or delete annotations through the API. [by @sgiehl]
  • #24865 Prevent user capabilities from being granted or removed when user management is disabled. [by @sgiehl]
  • #24917 Respect the visits log setting for every site included in a Live API request. [by @chippison]
  • #25137 Harden tracking code generation by escaping output consistently, preventing unusable tracker URLs and requiring view access to generate image tracking code. [by @sgiehl]
  • #24864 Use constant-time comparisons for signed cookie values, improve pattern handling when rewriting URL parameters in the browser and remove unused internal methods. [by @sgiehl]

Platform changes for plugin developers

  • #24880, #24893 Remove long-deprecated APIs, including Archive::getBlob(), Report::getThirdLeveltableDimension(), API.getSettings, the [APISettings] configuration section and database adapters’ getDefaultPort(). See CHANGELOG.md for their replacements. [by @sgiehl, @caddoo]
  • #23183, #25072, #24988, #24933 Remove the archive.sh script, deprecated Git console commands, the jQuery UI liveWidget and obsolete PHP polyfills. Use core:archive and the Live.AutoRefreshWidget Vue component instead. glob() must no longer be listed in disable_functions. [by @sgiehl]
  • #25074 Preserve parameter whitespace and value types when parsing requests. Use Request::getBoolParameter() to read Boolean parameters. [by @sgiehl]
  • #24869 Add the #[Piwik\Http\JsonResponse] attribute for returning JSON from controller actions. An overriding subclass must redeclare the attribute. [by @sgiehl]
  • #21440, #24668, #25027 Move the front-end build from Vue CLI to Vite on Node 24, update to Vue 3.5 and use Vitest. The vue:build command no longer creates an unminified bundle, so plugin authors can remove committed vue/dist/<Plugin>.umd.js files. [by @sgiehl]
  • #25051 Update all eleven Example plugins to use native types, current APIs and a consistent structure. [by @sgiehl]
  • #24925, #24937 Remove unused colour variables and Piwik-era aliases, and deprecate component-oriented theme variables in favour of usage-oriented names. Deprecated variables remain available until Matomo 7. [by @tzi]

New and Updated Guides and FAQs