Website privacy and consent review
Eighteen checks on what a site actually does with a visitor's data, as distinct from what its policy page says. None of them is a legal opinion, and this list cannot tell you whether a site complies with anything: what it can do is replace an assumption with a reading. The order matters. Everything a page does before the visitor answers the banner is the first group, because a consent mechanism that runs after the tags is decoration. The second group is data leaving the page, which happens through channels that survive a CORS error and through a header nobody thinks of as a payload. The third group is what happens when a visitor asks for something: a signal, a copy of their data, or its deletion. Every check here was run against a local fixture, and each page says what the browser contributed to the result, since a jar read reports the browser's defences as readily as the site's behaviour.
18 checksabout 207 min end to end
Before the visitor has answered
- How to test cookie consent banner
The banner is worth testing for what the reject path does rather than for whether it appears, because reject and accept often set the same cookies. - How to check if cookies are set without consent
A cookie written before the answer is the clearest form of the problem, and the HttpOnly ones are invisible to the script-side read most audits use. - How to check if tracking scripts load before consent
A tag that loaded early has already sent its first hit, so the question is when the request left rather than whether the script is on the page. - How to check if local storage is used before consent
Identifiers moved out of cookies and into local storage and IndexedDB, where a storage-usage audit reports zero for them. - How to check cookies on a website
The full inventory has to come from the network layer, because the page can only see a subset of its own cookies. - How to check a consent record
A consent you cannot produce evidence of is one you cannot demonstrate later, and a one-word cookie carries one of the eight fields a record needs.
What leaves the page
- How to check for tracking pixels
An image request is a data transfer, and the timing API reports zeros for it, so the usual way of finding small responses finds nothing. - How to check which third parties receive data
A CORS error stops the page from reading the reply and does nothing to stop the request, so a failed fetch in the console can still have delivered the payload. - How to check for pii in urls
A value in a query string is copied into the access log, the referrer, the third party's log and the browser's own history, all from one navigation. - How to check referer header
The referrer carries the URL to every third party the page contacts, and a per-element attribute can override the document policy without changing it. - How to check if third party cookies are blocked
What the browser blocks and what the site attempts are different facts, and only the second one is under the site's control. - How to check browser fingerprinting
A source-code search for the API names finds nothing, so the calls have to be observed, and they happen before the page's own scripts would let you hook them. - How to check if analytics ip is anonymized
The truncation is worth reading rather than trusting, since a rule written for one address family leaves the other untouched and a forwarded header can hold the original.
When the visitor asks for something
- How to check global privacy control
The header and the JavaScript property are two forms of one signal and they can disagree in the same browser, so a test has to say which one it means. - How to check if a site honors global privacy control
A well-known file declaring that the signal is honoured is a claim, and two fixtures can publish identical files while only one changes behaviour. - How to check do not track
Support survives in browsers after the specification stopped, and the property is a string, so the natural numeric comparison is always false. - How to revoke cookie consent
Withdrawal that updates the banner, the state cookie and the record while deleting nothing is the common shape, and the next request shows it. - How to test data export feature
The export is checked against the schema rather than against itself, because the tables it missed are invisible from the export alone.
Take it with you
The file is the same list as Markdown checkboxes, ready to paste into a release ticket or a pull request description.
Ticks are kept in this browser only. They are not sent anywhere and other people do not see them.