NavigatorUAData: getHighEntropyValues() method

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.

Note: This feature is available in Web Workers.

The getHighEntropyValues() method of the NavigatorUAData interface returns a Promise that resolves with a dictionary object containing low entropy information and requested high entropy information about the browser.

The resolved object has the "low entropy" properties available on the NavigatorUAData object included by default — these are the values that are unlikely to enable fingerprinting of the user. It also contains the subset of "high entropy" values requested in the parameter object, and for which permission has been granted. These are the values that are more likely to enable fingerprinting. Note that meaning of the terms low entropy and high entropy is the same as defined in the HTTP User Agent Client Hints mechanism.

Note: Usage of the getHighEntropyValues() method to retrieve high-entropy user-agent data can be controlled via the ch-ua-high-entropy-values Permissions-Policy. If the permission is not allowed, the method will only return the brands, mobile, and platform low-entropy data.

Syntax

js
getHighEntropyValues(hints)

Parameters

hints

An array containing the high-entropy hints to be returned. This may include one or more of:

  • "architecture"
  • "bitness"
  • "formFactors"
  • "fullVersionList"
  • "model"
  • "platformVersion"
  • "uaFullVersion" Deprecated
  • "wow64"

Return value

A Promise that resolves to an object containing some or all of the following values (based on the hints requested and granted):

brands

Returns an array of objects containing brand and version specifying the browser brand and its version (the same information as provided by NavigatorUAData.brands). Note that this information can be sent to a server in the Sec-CH-UA header (a low-entropy client hint).

mobile

Returns true if the user agent is running on a mobile device (the same information as provided by NavigatorUAData.mobile). Note that this information can be sent to a server in the Sec-CH-UA-Mobile header (a low-entropy client hint).

platform

Returns a string describing the platform the user agent is running on, like "Windows" (the same information as provided by NavigatorUAData.platform). Note that this information can be sent to a server in the Sec-CH-UA-Platform header (a low-entropy client hint).

architecture

A string containing the platform architecture. For example, "x86". Note that this information can be sent to a server in the Sec-CH-UA-Arch header after the server explicitly requests it in the Accept-CH header.

bitness

A string containing the architecture bitness. For example, "32" or "64". Note that this information can be sent to a server in the Sec-CH-UA-Bitness header if the server explicitly requests it in the Accept-CH header.

formFactors

An array of strings containing the form-factors of a device. For example, ["Tablet", "XR"]. Note that this information can be sent to a server in the Sec-CH-UA-Form-Factors header if the server explicitly requests it in the Accept-CH header.

fullVersionList

An array of objects with properties "brand" and "version" representing the browser name and full version respectively. For example, {"brand": "Google Chrome", "version": "103.0.5060.134"}, {"brand": "Chromium", "version": "103.0.5060.134"}. Please note that one object may intentionally contain invalid information to prevent sites from relying on a fixed list of browsers. Note that this information can be sent to a server in the Sec-CH-UA-Full-Version-List header if the server explicitly requests it in the Accept-CH header.

model

A string containing the model of mobile device. For example, "Pixel 2XL". If device is not a mobile device or if device model is not known, model will be "". Note that this information can be sent to a server in the Sec-CH-UA-Model header if the server explicitly requests it in the Accept-CH header.

platformVersion

A string containing the platform version. Platform name itself is always available as low-entropy hint platform. For example, "10.0". Note that this information can be sent to a server in the Sec-CH-UA-Platform-Version header if the server explicitly requests it in the Accept-CH header.

uaFullVersion Deprecated

A string containing the full browser version. For example, "103.0.5060.134". Deprecated in favor of fullVersionList. Note that this information can be sent to a server in the Sec-CH-UA-Full-Version header if the server explicitly requests it in the Accept-CH header.

wow64

A boolean indicating if the user agent's binary is running in 32-bit mode on 64-bit Windows. Note that this information can be sent to a server in the Sec-CH-UA-WoW64 header if the server explicitly requests it in the Accept-CH header.

Exceptions

NotAllowedError DOMException

Thrown if the user-agent decides that one or more of the hints requested should not be returned.

Examples

In the following example a number of hints are requested using the getHighEntropyValues() method. When the promise resolves, this information is printed to the console.

js
navigator.userAgentData
  .getHighEntropyValues([
    "architecture",
    "model",
    "platformVersion",
    "fullVersionList",
  ])
  .then((values) => console.log(values));

Specifications

Specification
User-Agent Client Hints
# dom-navigatoruadata-gethighentropyvalues

Browser compatibility

See also