Privacy & data collection

This page describes exactly what data is collected when you visit /test, how long it is kept, and what is done with it. No cookies are set. No data is sold or shared with third parties.

What we collect and why

The purpose of this site is to measure whether user agents (browsers, bots, crawlers) fetch and execute JavaScript and CSS, and whether they present a Web Bot Auth signature. All data collection is in service of that measurement.

Server-side data (collected on every visit to /test)

The following is recorded by Cloudflare when your request arrives, before any page is rendered:

DataSourcePurpose
IP addressNetwork layerMasked to /24 (last octet zeroed for IPv4) before long-term storage. Raw IP kept in logs for 7 days only.
User-Agent stringUser-Agent headerIdentifies the client software making the request.
Referrer URLReferer headerRecords where the visitor came from, if the browser sends it.
Accepted languagesAccept-Language headerBrowser or bot language preference.
HTTP methodRequest methodGET, HEAD, etc. — bots sometimes use non-standard methods.
Web Bot Auth headersSignature, Signature-Input, Signature-Agent headersIf present, these are used to cryptographically verify the bot's identity. The claimed and verified agent URL and key ID are recorded.

Client-side data (collected only if JavaScript executes)

If JavaScript runs, it tracks the following fields:

DataSourcePurpose
CSS loaded flagComputed style checkWhether the CSS file was applied (detected via getComputedStyle).
JS execution timeperformance.now()Milliseconds from script load to beacon send.
Platform stringnavigator.platformOS/platform reported by the browser (e.g. Linux x86_64).
Languagenavigator.languageBrowser UI language.
Language listnavigator.languagesFull ordered list of preferred languages.
Screen resolutionscreen.width / screen.heightPhysical screen dimensions in CSS pixels.
Viewport sizewindow.innerWidth / window.innerHeightBrowser window dimensions.
Device pixel ratiowindow.devicePixelRatioDisplay density (e.g. 2.0 for Retina screens).
TimezoneIntl.DateTimeFormatIANA timezone string (e.g. Europe/London).
CPU core countnavigator.hardwareConcurrencyNumber of logical CPU cores reported by the browser.
Device memorynavigator.deviceMemoryApproximate RAM in GB (rounded to nearest power of 2 by the browser API).
Touch support'ontouchstart' in windowWhether the device reports touch capability.
LocalStorage availablelocalStorage APIWhether local storage can be written and read. No persistent data is stored.
Cookies enablednavigator.cookieEnabledWhether cookies are enabled in the browser. We do not set any cookies.
WebDriver flagnavigator.webdriverWhether the browser reports being controlled by automation software.

Timing data

We record millisecond timestamps for when the CSS file was fetched, when the JS file was fetched, and when the JS beacon was sent — relative to the start of the session. This measures how fast (or whether) a client processes each resource type.

Data retention

DataRetention
Raw request logs (including raw IP addresses)7 days
Aggregated session records (IP masked to /24)Indefinite
Public aggregate statisticsIndefinite, on the reports page

Cookies and tracking

We do not set any cookies. We do not use any third-party analytics, advertising, or tracking scripts. The only external resource loaded is served from this domain.

Data sharing

Raw data is not shared with or sold to third parties. Aggregate statistics (counts and percentages with no individual identifiers) are published on the reports page.

Infrastructure

Requests are handled by Cloudflare and Google Firebase Hosting. Their respective privacy policies apply to data they process: Cloudflare Privacy Policy, Google Privacy Policy.