What your browser tells every site, without being asked
Every page you open receives a package of facts before you click anything: the User-Agent string, the languages you accept, your screen and window size, your time zone, how many CPU cores the browser reports, and which web features it supports. None of this requires a permission prompt, because each value exists to let sites render correctly — a layout needs the viewport size, a date needs the time zone.
This page simply shows you that package. Reading it is not an attack and blocking it entirely is not possible; what matters is understanding which values are stable enough to identify you over time, and that is what the fingerprint section is for.
User-Agent vs User-Agent Client Hints
The User-Agent string is a 30-year-old sentence full of names the browser is not. Chrome sends "Mozilla/5.0 … AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36" because decades of server-side sniffing code checks for those words. It is almost pure legacy, and treating it as structured data has always been a mistake.
Chromium browsers now freeze most of it. The minor version is reported as 0.0.0, and the platform part is reduced to a fixed shape, so "Chrome/140.0.0.0" tells you the major version and nothing else. macOS is frozen at 10_15_7 in several browsers, which is why a machine on macOS 15 can still report ten-point-fifteen.
The replacement is User-Agent Client Hints: a structured set of values a site must explicitly ask for, with the sensitive parts behind a separate high-entropy request. When your browser supports it, the versions on this page come from there and are exact. Firefox and Safari do not implement it, so on those browsers this page falls back to parsing the old string and says so.
Screen, window and device pixel ratio
Three different sizes appear on this page and they answer three different questions. The screen size is the whole display in CSS pixels. The available size subtracts system chrome such as a taskbar or dock. The window size is your browser viewport — the only one your CSS media queries actually respond to.
The device pixel ratio bridges CSS pixels and physical pixels. A ratio of 2 means each CSS pixel is drawn with a 2 × 2 block of hardware pixels, so a 1512-wide window on a Retina display is 3024 physical pixels wide. That is why a screenshot is often twice the size you expected, and why images need 2x assets to look sharp.
Zooming changes the ratio too: at 150% browser zoom a 1x display reports 1.5. So the value here describes the current viewing condition, not a fixed hardware property.
Browser fingerprinting: what actually identifies you
A fingerprint is not one magic value; it is the combination. Your time zone alone narrows you to a continent, your language list to a country, your screen size to a device class — but the intersection of a dozen such values is frequently unique among millions of visitors, and it survives clearing cookies because none of it is stored on your machine.
The strongest contributors are the ones that vary most between machines: the WebGL renderer string, the list of supported features and codecs, the device memory and core count, and the exact screen geometry. The weakest are the ones almost everyone shares, such as the presence of fetch.
Two defences work in opposite directions. One is to be normal: browsers with fingerprint-resistance modes round the window size, report a fixed core count and force the UTC time zone so that you look like every other user of that mode. The other is to be inconsistent, but spoofing extensions usually make you rarer, not commoner. This page flags that contradiction when it sees one.
Do Not Track and Global Privacy Control
Do Not Track was a header that asked sites politely not to track you. It had no legal weight, adoption collapsed, and several browsers have removed the setting entirely. If yours still sends it, expect it to be ignored.
Global Privacy Control is the second attempt, and it differs in one decisive way: some privacy laws recognise it as a legally valid opt-out from the sale or sharing of personal information. Browsers that support it expose navigator.globalPrivacyControl, which is the row you see above.
Neither signal stops a site from reading the values on this page. They are statements of preference about what may be done with data, not technical blocks on collecting it.
How to read the feature table
Each row is a presence check: the tool asks whether an API exists in this browser, without calling it. That distinction matters — checking whether the Notification API exists is free, whereas requesting notification permission would put a prompt on your screen. This page never crosses that line, so nothing here asks you for anything.
- "Supported" means the API is present. It does not guarantee every part of it works.
- "Unknown" means the check itself is impossible here. Where the browser does not expose enough information, the honest answer is that we cannot tell.
- A codec answer describes decoding in this browser on this machine. Hardware, licensing and the operating system all take part.
What this page deliberately does not do
It makes no network request. Not one — no analytics call, no lookup service, no image from another domain. Everything you see was read from your own browser and rendered locally, which you can confirm in the network tab of your developer tools.
It asks for no permission. Camera, microphone, location, notifications, Bluetooth, clipboard reading and the battery API are all listed as supported or not, but never invoked.
And it does not compute a canvas or audio fingerprint. The fingerprint summary here is built only from values already displayed above, so it demonstrates the idea without adding to the risk.