Client Hints are a set of HTTP request header fields that a server can proactively request from a client in order to get information about the device, network, user and agent specific preferences.
It was introduced as a replacement for HTTP User-Agent: «The primary goal of User Agent Client Hints is to reduce the default entropy available to a server for passive fingerprinting. However, it will still be possible for some, or all hints to be requested and used for active fingerprinting purposes by first or delegated third parties.»
Every time you visit this page, the server responds with such HTTP header:
HTTP Headers sent by the Server
The server has asked the client to send the above list of headers, and if your browser supports this feature, it should send those Client Hints headers to the server the following requests.
HTTP Headers received by the Server upon subsequent request
Accept-CHheaders at HTTP level, or async
Sec-CH-prefix, and some do not. The latest versions of the spec say that all hints must have this prefix, but the last revised implementation (Chrome 94) still accepts some headers only without the prefix. For future compatibility, the Client Hints Test detects both behaviors.
List of currently known Client Hints:
Sec-CH-UArepresents the user agent's brand and significant version.
Sec-CH-UA-Full-Versionrepresents the user agent's full version.
Sec-CH-UA-Platformrepresents the platform's brand.
Sec-CH-UA-Platform-Versionrepresents the platform's version.
Sec-CH-UA-Archrepresents the underlying architecture's instruction set.
Sec-CH-UA-Bitnessrepresents the underlying architecture's bitness (i.e., the size in bits of an integer or memory address).
Sec-CH-UA-Modelrepresents the user agent's underlying device model.
Sec-CH-UA-Mobilerepresents whether the user agent should receive a specifically «mobile» UX.
Lang) represents the user's language preference.
Save-Data) represents the user's preference regarding data savings.
Sec-CH-Widthgives a server the layout width of the image.
Viewport-Width) is the width of the user's viewport in CSS pixels.
Sec-CH-Viewport-Heightrepresents the user-agent’s current viewport height.
DPR), short for Device Pixel Ratio, reports the ratio of physical pixels to CSS pixels of the user's screen.
Device-Memory) reveals the approximate amount of memory the current device has in GiB. Because this information could be used to fingerprint users, the value of
Device-Memoryis intentionally coarse. Valid values are
RTT) provides the approximate Round Trip Time, in milliseconds, on the application layer. The
RTThint, unlike transport layer RTT, includes server processing time. The value of
RTTis rounded to the nearest 25 milliseconds to prevent fingerprinting.
Downlink) expressed in megabits per second (Mbps), reveals the approximate downstream speed of the user's connection. The value is rounded to the nearest multiple of 25 kilobits per second. Because again, fingerprinting.
ECT) stands for Effective Connection Type. Its value is one of an enumerated list of connection types, each of which describes a connection within specified ranges of both RTT and Downlink values. Valid values for
Sec-CH-Prefers-Color-Schemerepresents the user's preferred color scheme.
Sec-CH-Prefers-Reduced-Motiondetects if the user has requested the system minimize the amount of animation or motion it uses.
Sec-CH-Prefers-Reduced-Transparencydetects if the user has requested the system minimize the amount of transparent or translucent layer effects it uses.
Sec-CH-Prefers-Contrastdetects if the user has requested the system increase or decrease the amount of contrast between adjacent colors.
Sec-CH-Forced-Colorsdetects if the user agent has enabled a forced colors mode where it enforces a user-chosen limited color palette on the page.
Sec-CH-Prefers-Reduced-Datapresumably will be an alias for
- Responsive Image Client Hints – W3C
- Lang Client Hint – GitHub
- Save Data API – W3C
- User Preference Media Features Client Hints Headers – W3C