Overview🔗

This page explains which User-Agent Client Hints (UA-CH) values you need in order to get results for different properties.

If you just want to get all properties, you'll need the following UA-CH values. We generally recommend supplying all of these for the best detection results:

  • Sec-CH-UA
  • Sec-CH-UA-Full-Version-List
  • Sec-CH-UA-Model
  • Sec-CH-UA-Mobile
  • Sec-CH-UA-Platform
  • Sec-CH-UA-Platform-Version

To request only the values needed for specific properties, use the component table below.

Background🔗

51Degrees groups properties associated with the request by ‘component’. The components 51Degrees recognize are hardware device, platform (operating system), browser, and crawler.

The User-Agent header contains information relating to all four of these components. User-Agent Client Hints values are different in that they relate to varying numbers of components. For example, the Sec-CH-UA-Model header only relates to the hardware device component.

However, multiple UA-CH values are sometimes needed to fully identify a component. For example, Chrome on a Mac will not populate the Sec-CH-UA-Model header, so that won't help give us an answer to the hardware component. Instead, we need the Sec-CH-UA-Platform header, which can at least tell us that this is a macOS device.

We concatenate the various UA-CH headers that are needed to identify a component to create ‘pseudo-headers’. These are then used internally to perform the detection.

Pseudo-headers🔗

The table shows the UA-CH values used to build pseudo-headers for each component. We recommend providing all UA-CH values for the best detection results. This applies to Chromium-based browsers. Continue supplying User-Agent information for other browsers.

Some pseudo-headers are not required to detect the component but can provide more detailed detection results. For example, Sec-CH-UA-Platform-Version is not required to determine the Platform component, but provides additional version information when supplied.

In some cases, there are multiple pseudo-headers for a component. These are processed in order from providing most detail to least. In addition, a pseudo-header within the length limit below will take precedence over the User-Agent, even in cases where the User-Agent provides more detail.

A pseudo-header longer than 500 bytes, counting one separator between each value, is ignored with no error, and detection moves on to the next header. Every single header such as User-Agent has the same limit. See Header length limit for why the limit is 500 bytes, how to tell a header was ignored, and the setting in each language.

Key🔗

  • x = This value is required in order to determine the component.
  • x* = This value is not required, but if provided may return more detailed results.
  • y and z = One of these values is required. Supplying y may return a more accurate result and removes the need to supply z.
UA-CH header Hardware Platform Browser/App
Sec-CH-UA z
Sec-CH-UA-Full-Version-List y
Sec-CH-UA-Model x
Sec-CH-UA-Mobile x x
Sec-CH-UA-Platform x x x
Sec-CH-UA-Platform-Version x*