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.
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.
/test)The following is recorded by Cloudflare when your request arrives, before any page is rendered:
| Data | Source | Purpose |
|---|---|---|
| IP address | Network layer | Masked to /24 (last octet zeroed for IPv4) before long-term storage. Raw IP kept in logs for 7 days only. |
| User-Agent string | User-Agent header | Identifies the client software making the request. |
| Referrer URL | Referer header | Records where the visitor came from, if the browser sends it. |
| Accepted languages | Accept-Language header | Browser or bot language preference. |
| HTTP method | Request method | GET, HEAD, etc. — bots sometimes use non-standard methods. |
| Web Bot Auth headers | Signature, Signature-Input, Signature-Agent headers | If present, these are used to cryptographically verify the bot's identity. The claimed and verified agent URL and key ID are recorded. |
If JavaScript runs, it tracks the following fields:
| Data | Source | Purpose |
|---|---|---|
| CSS loaded flag | Computed style check | Whether the CSS file was applied (detected via getComputedStyle). |
| JS execution time | performance.now() | Milliseconds from script load to beacon send. |
| Platform string | navigator.platform | OS/platform reported by the browser (e.g. Linux x86_64). |
| Language | navigator.language | Browser UI language. |
| Language list | navigator.languages | Full ordered list of preferred languages. |
| Screen resolution | screen.width / screen.height | Physical screen dimensions in CSS pixels. |
| Viewport size | window.innerWidth / window.innerHeight | Browser window dimensions. |
| Device pixel ratio | window.devicePixelRatio | Display density (e.g. 2.0 for Retina screens). |
| Timezone | Intl.DateTimeFormat | IANA timezone string (e.g. Europe/London). |
| CPU core count | navigator.hardwareConcurrency | Number of logical CPU cores reported by the browser. |
| Device memory | navigator.deviceMemory | Approximate RAM in GB (rounded to nearest power of 2 by the browser API). |
| Touch support | 'ontouchstart' in window | Whether the device reports touch capability. |
| LocalStorage available | localStorage API | Whether local storage can be written and read. No persistent data is stored. |
| Cookies enabled | navigator.cookieEnabled | Whether cookies are enabled in the browser. We do not set any cookies. |
| WebDriver flag | navigator.webdriver | Whether the browser reports being controlled by automation software. |
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 |
|---|---|
| Raw request logs (including raw IP addresses) | 7 days |
| Aggregated session records (IP masked to /24) | Indefinite |
| Public aggregate statistics | Indefinite, on the reports page |
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.
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.
Requests are handled by Cloudflare and Google Firebase Hosting. Their respective privacy policies apply to data they process: Cloudflare Privacy Policy, Google Privacy Policy.