What JavaScript Can See

What a page can measure about your device once it runs a script.

What This Site Can See lists what arrived with your request. This page lists what a script can measure once the page is open, which is the larger half by a wide margin.

Your screen and window

ScreenNeeds JavaScript
The whole display, in the units the browser calls pixels.
Usable areaNeeds JavaScript
The display minus whatever the operating system keeps for itself, which is a small statement about which operating system it is and how it is arranged.
This windowNeeds JavaScript
Pixel ratioNeeds JavaScript
How many physical pixels make one of the pixels above. 1 on an ordinary monitor, 2 or 3 on a dense one, and often a fraction when the display is scaled.
Colour depthNeeds JavaScript
OrientationNeeds JavaScript

The machine underneath

PlatformNeeds JavaScript
Processor coresNeeds JavaScript
What the browser is willing to admit. Some report a capped number rather than the real one.
MemoryNeeds JavaScript
Rounded hard, and only Chromium-based browsers answer at all. An empty row here is itself a clue about which browser you are using.
Touch pointsNeeds JavaScript
How many fingers the screen can follow at once. 0 says there is no touchscreen.
GraphicsNeeds JavaScript
PointerNeeds JavaScript
Whether the main pointing device is precise, like a mouse, or coarse, like a finger.

Language, time and place

Time zoneNeeds JavaScript
Not the offset but the named zone, which is more specific: it carries the region's whole history of daylight saving changes.
Offset from UTCNeeds JavaScript
LanguagesNeeds JavaScript
The full ordered list. The Accept-Language header your browser sends is often shorter than this one.
Formatting localeNeeds JavaScript
Which conventions dates and numbers follow. It can differ from the languages above, and the pair is more distinctive than either alone.
Time zone against addressNeeds JavaScript

How you have set things up

Accessibility and appearance settings are readable by any page, because a page has to know them to honour them. The cost is that a rare combination narrows down who you are.

Colour schemeNeeds JavaScript
Reduced motionNeeds JavaScript
ContrastNeeds JavaScript
Forced coloursNeeds JavaScript
Reduced transparencyNeeds JavaScript

Fonts installed on this machine

No browser will list your fonts. This measures instead: it draws the same string in a candidate font and in a fallback, and a difference in width means the candidate was there to draw with. The list below is a fixed set of common fonts, not everything you have, so treat the count as a sample rather than a total.

FoundNeeds JavaScript
Which onesNeeds JavaScript

Marks that stay the same

Two values computed from how your machine actually draws, rather than from anything it declares. Reload the page and they will not change. Open the same page in a different browser on the same machine and at least one of them will. That stability is what makes them useful for recognising a returning visitor without a cookie, and it is why they are worth showing you.

Canvas markNeeds JavaScript
A hash of an image drawn off screen. Fonts, anti-aliasing and the graphics driver all leave traces in it.
Graphics markNeeds JavaScript
The same idea through the 3D pipeline, which is more sensitive to the hardware.
The two togetherNeeds JavaScript
Not sent anywhere. Computed in your browser, written into this page, and gone when you close the tab.

Storage and privacy switches

CookiesNeeds JavaScript
Local storageNeeds JavaScript
Storage quotaNeeds JavaScript
How much this site would be allowed to keep. Browsers commonly derive it from free disk space, which turns a storage limit into a rough reading of your drive.
Do Not TrackNeeds JavaScript
A request, not a control, and one this page has nothing to honour: it stores nothing either way.
Global Privacy ControlNeeds JavaScript
Built-in PDF viewerNeeds JavaScript

Every measurement above happened in your browser. None of it was sent to this server, and you can confirm that rather than take it on trust: open your browser's network panel and reload. There is no request carrying these values, because the script that takes them contains no code that could send one. The one thing that did come from the server is the country, and only because it was already attached to your request before this page existed. See Privacy.