How we check every value

The directory lists facts, not opinions. Each number comes with the date of the check, and a value we could not confirm is shown as a dash.

Every value in the directory comes either from a check we run ourselves or from the vendor’s own public pages. This page describes how each kind of value is collected and what the labels in the table mean.

Script size

We measure the tracking file that the vendor’s installation guide tells you to add to your pages. When that address contains an account or site ID, we use an address from the vendor’s documentation, a public demo or the vendor’s own website. Some tools have no separate file: a plugin may print its script directly into the page, or the code may come as an npm package that is built into your app. In that case we measure that code as the vendor ships it, and the tool’s card says what was measured.

We download the file, following any redirects, and record two sizes: the file itself, uncompressed, and the same file compressed with gzip at the highest compression level. The table shows the compressed size; tool cards show both. Servers deliver files with different compression settings, so the number of bytes your visitors actually download can differ from ours. Compressing every file the same way keeps the numbers comparable across tools.

The size covers that one file. It does not include other files the script may load later or the requests it sends. Where the file only loads the main script, the table marks it as a loader. What a vendor serves can also depend on configuration, so the file on your own site can be larger or smaller than the one we measured, depending on which modules are switched on.

We keep a fingerprint of every file we measure, so a later measurement shows whether the content has changed, not only the size. If the address returns an error or a web page instead of a script, that run records no new size. “Not measured” means there is no successful measurement on record for the tool. The date under each size is the day of the measurement.

Prices

We read the vendor’s public pricing page as a visitor sees it; pages that build their prices with JavaScript are opened in a browser. We record prices for monthly billing, without VAT, in the currency the page shows. When a vendor sells paid plans only with annual billing, we show the monthly equivalent of the annual price and mark it “billed yearly”. If the page lets you switch currency, we record US dollars. We do not convert between currencies.

Where the directory has a separate pricing page for a tool, that page lists the vendor’s published prices by volume. The date under a price is the day we last read the pricing page.

Features

Feature values come from the vendor’s own pages: documentation, pricing page, privacy policy, data processing agreement, code repository and announcements. They describe what the vendor documents; they are not the results of our own tests of each feature. The Cookieless column is the one exception: where a script that the vendor calls cookieless keeps a lasting identifier in the browser, the column follows what the script does, and the tool’s card explains the difference.

The main columns use these definitions:

Tool cards show statements such as “No consent banner needed” and “No personal data collected” as the vendor’s position. They are not our conclusion and not legal advice.

Status

The date under the status in the table is the day of the last status check.

What we do not do

Corrections

If you find a value that is wrong or out of date, tell us through the contact page. Please include the tool name, the value and a link to the vendor’s page that shows the current information. When we change a value, its date changes as well.