Every signal, in one index

32 signals in 6 categories. 5 of them ask your permission first. The other 27 are read the moment a page opens, with no prompt and nothing to decline, which is the part most people are surprised by.

The Exposure column is our own estimate of how much each signal adds to a browser fingerprint, taken from the entropy model on the methodology page. High means 5 bits or more, Medium 2 to under 5 bits, Low under 2 bits. Signals the model does not count are marked Not scored.

Browser (5)

What your browser announces about itself on every request.

Browser signals
SignalJavaScript callAsks permissionExposure
User agentnavigator.userAgentNoHigh, 10 bits
Browsernavigator.userAgentData?.brands ?? navigator.userAgentNoMedium, 2 bits
Operating systemnavigator.userAgentData?.platform ?? navigator.userAgentNoMedium, 2 bits
Languagenavigator.languagesNoMedium, 2.5 bits
Cookies enablednavigator.cookieEnabledNoLow, 0.3 bits

Network (8)

What your connection reveals, from your public IP to your headers.

Network signals
SignalJavaScript callAsks permissionExposure
IP addressfetch('/api/ip')NoNot scored
IPv4 addressfetch('/api/ip') then check for ':' in the addressNoNot scored
Public IPfetch('/api/ip')NoNot scored
Private IPnot readable by a websiteNoNot scored
IP locationfetch('/api/ip') returning the platform's geo headersNoNot scored
Connection typenavigator.connectionNoLow, 1.5 bits
Request headersreconstructed from navigator, not read directlyNoNot scored
Referrerdocument.referrerNoNot scored

Location (6)

What the Geolocation API can pin down, only with your permission.

Location signals
SignalJavaScript callAsks permissionExposure
Locationnavigator.geolocation.getCurrentPosition(success, error)YesNot scored
Zip codenavigator.geolocation.getCurrentPosition then a reverse geocodeYesNot scored
Postal codenavigator.geolocation.getCurrentPosition then a reverse geocodeYesNot scored
Addressnavigator.geolocation.getCurrentPosition then a reverse geocodeYesNot scored
TimezoneIntl.DateTimeFormat().resolvedOptions().timeZoneNoMedium, 3 bits
Elevationposition.coords.altitude from getCurrentPositionYesNot scored

Display (6)

The size, density and graphics of the screen you are reading on.

Display signals
SignalJavaScript callAsks permissionExposure
Screen resolutionscreen.width and screen.heightNoMedium, 4.5 bits
Viewport sizewindow.innerWidth and window.innerHeightNoMedium, 4 bits
Color depthscreen.colorDepthNoLow, 0.5 bits
Device pixel ratiowindow.devicePixelRatioNoLow, 1.5 bits
WebGL renderergl.getParameter(gl.getExtension('WEBGL_debug_renderer_info').UNMASKED_RENDERER_WEBGL)NoHigh, 7 bits
GPUgl.getParameter(gl.getExtension('WEBGL_debug_renderer_info').UNMASKED_VENDOR_WEBGL)NoMedium, 2 bits

Device (5)

Hardware hints your browser exposes to any page you open.

Device signals
SignalJavaScript callAsks permissionExposure
Device typenavigator.maxTouchPoints with navigator.userAgentNoLow, 1 bit
Device memorynavigator.deviceMemoryNoLow, 1.2 bits
CPU coresnavigator.hardwareConcurrencyNoLow, 1.8 bits
Batterynavigator.getBattery()NoLow, 1 bit
Touch supportnavigator.maxTouchPointsNoLow, 1 bit

Privacy (2)

Signals about tracking, and how identifiable you are overall.

Privacy signals
SignalJavaScript callAsks permissionExposure
Do Not Tracknavigator.doNotTrackNoLow, 0.5 bits
Browser fingerprintthe combination of every signal above, hashed locallyNoNot scored