HealthPixel Check

Methodology

What HealthPixel Check measures, how each finding is decided, and where the method stops. The same rules run in the web checker and in the open-source engine (MIT licence). The method is open, so anyone can re-run a check; a result reflects the site at the time of the check.

What is measured

A clean, headless Chrome browser opens a public website and records every request the pages send to advertising, analytics, session-replay, call-tracking and chat-widget vendors. From those requests the check reports:

Which pages are visited

Given a home page, the check visits it and one or two typical inner pages: a service or condition page, and an insurance, admissions or contact page. Given a specific page, such as an ad landing page, it visits that page first, then the home page and one typical page.

The browser only moves the mouse and scrolls. It never fills in or submits forms, never logs in, never types personal data, and never clicks anything outside the cookie banner, and only in the runs labelled for that.

The browser identifies itself honestly in its user agent but does not advertise automation (navigator.webdriver). Some consent tools hide their banner from automated browsers, and the measurement has to see what a real visitor sees.

The runs

A check makes up to five runs. Each run starts in a fresh browser profile with no cookies, so one run cannot influence another. Accept and Reject run only if a cookie banner is found, and Direct entry only when the check starts from the home page and a service page is found.

RunWhat the browser does
No choiceOpens the pages and does not touch the cookie banner. This is what every visitor’s browser sends before making a choice.
AcceptClicks the banner’s accept button, then repeats the visit.
RejectClicks the banner’s reject or decline option, then repeats the visit. The opt-out uses the open-source DuckDuckGo autoconsent rules, with a decline-button fallback.
Global Privacy ControlSends the Sec-GPC: 1 header and sets navigator.globalPrivacyControl = true, the opt-out signal used by privacy-focused browsers.
Direct entryA separate fresh visit that lands directly on a service page, as a visitor arriving from an ad or a search result would. Some tools, such as call tracking, record only the first page of a visit.

Comparing the runs shows what changes with the visitor’s choice: for example, a tracker that keeps firing after “Reject”, or one that ignores Global Privacy Control.

How findings are decided

FindingRule
Advertising platform contactedA beacon (a request that sends data, not just a script download) to a host in the advertising category of the vendor list.
Page address sentAny query or body parameter whose value is a URL on the scanned site’s registered domain.
Condition-naming address or titleThe URL path or query, or the page title, contains a term that names a condition, substance, procedure or medication. The hostname is never counted. Setting words such as treatment, outpatient or therapy count as “care-related”, not “condition-naming”.
Consent toolDetected through the open-source DuckDuckGo autoconsent rules (846 rules for known consent tools in the copy bundled with the engine); scripts or JavaScript globals of known consent vendors, including first-party-hosted copies; or a visible fixed overlay or modal with consent wording and accept/decline buttons, including inside open shadow DOM and iframes.
Server-side signalGoogle Analytics or Tag Manager collection on a first-party subdomain, or a known server-side relay or customer-data platform.

The vendor list and the vocabulary of condition terms are plain, readable files in the open-source engine. Corrections and additions are welcome as pull requests.

Trackers behind the site’s own subdomains

A tracker can be served from an address that looks first-party, such as metrics.example.org, while the DNS record points to a vendor (CNAME cloaking). The check resolves the CNAME chain of every first-party host the page contacted and matches it against the open AdGuard cname-trackers list and a list of known relays and customer-data platforms.

What a browser cannot see

The check observes what a visitor’s browser sends. It cannot see:

A clean result therefore means “nothing was observed in these runs”, not “nothing is shared”. A finding describes data flows on the days and pages tested; sites change, and a later check can differ. This is a measurement, not legal advice.

Responsible use and disclosure