User agent client hintsLimited availability
The Sec-CH-UA HTTP request header and the navigator.userAgentData API expose browser and platform information used to vary responses and application logic. User agent client hints are similar to user agent strings but more privacy-preserving and safer to parse.
Not yet supported in all major browsers — check the table and provide a fallback.
Browser support
DesktopChrome
1–89Not supported
90+Supportedsince Apr 13, 2021
Current: 155Edge
12–89Not supported
90+Supportedsince Apr 15, 2021
Current: 154Firefox
✕Not supportedup to 157
Current: 157Safari
✕Not supportedup to 27
Current: 27MobileChrome Android
18–89Not supported
90+Supportedsince Apr 13, 2021
Current: 155Firefox Android
✕Not supportedup to 157
Current: 157Safari iOS
✕Not supportedup to 27
Current: 27How to use
Not supported in Firefox, Safari, Firefox Android, Safari iOS. Use feature detection below and provide a fallback (or a polyfill) for those browsers.
Example
Full syntax and examples are on MDN: userAgentData.
Feature detection
JS · check before using
if ("NavigatorUAData" in globalThis) {
// NavigatorUAData is available
} else {
// load a polyfill or use a fallback
}Sub-features
Support for each part of the feature (26). The overall table above shows when the whole feature works.
| Sub-feature | Chrome | Edge | Firefox | Safari | Chrome Android | Firefox Android | Safari iOS |
|---|---|---|---|---|---|---|---|
| Navigator.userAgentData | 90 | 90 | ✕ | ✕ | 90 | ✕ | ✕ |
| Navigator.userAgentData.secure_context_required | 90 | 90 | ✕ | ✕ | 90 | ✕ | ✕ |
| NavigatorUAData | 90 | 90 | ✕ | ✕ | 90 | ✕ | ✕ |
| NavigatorUAData.brands | 90 | 90 | ✕ | ✕ | 90 | ✕ | ✕ |
| NavigatorUAData.getHighEntropyValues | 90 | 90 | ✕ | ✕ | 90 | ✕ | ✕ |
| NavigatorUAData.mobile | 90 | 90 | ✕ | ✕ | 90 | ✕ | ✕ |
| NavigatorUAData.platform | 93 | 93 | ✕ | ✕ | 93 | ✕ | ✕ |
| NavigatorUAData.toJSON | 93 | 93 | ✕ | ✕ | 93 | ✕ | ✕ |
| WorkerNavigator.userAgentData | 90 | 90 | ✕ | ✕ | 90 | ✕ | ✕ |
| http.headers.Accept-CH.Sec-CH-UA | 89 | 89 | ✕ | ✕ | 89 | ✕ | ✕ |
| http.headers.Accept-CH.Sec-CH-UA-Arch | 89 | 89 | ✕ | ✕ | 89 | ✕ | ✕ |
| http.headers.Accept-CH.Sec-CH-UA-Full-Version | 89 | 89 | ✕ | ✕ | 89 | ✕ | ✕ |
| http.headers.Accept-CH.Sec-CH-UA-Mobile | 89 | 89 | ✕ | ✕ | 89 | ✕ | ✕ |
| http.headers.Accept-CH.Sec-CH-UA-Model | 89 | 89 | ✕ | ✕ | 89 | ✕ | ✕ |
| http.headers.Accept-CH.Sec-CH-UA-Platform | 89 | 89 | ✕ | ✕ | 89 | ✕ | ✕ |
| http.headers.Accept-CH.Sec-CH-UA-Platform-Version | 89 | 89 | ✕ | ✕ | 89 | ✕ | ✕ |
| http.headers.Sec-CH-UA | 89 | 89 | ✕ | ✕ | 89 | ✕ | ✕ |
| http.headers.Sec-CH-UA-Arch | 89 | 89 | ✕ | ✕ | 89 | ✕ | ✕ |
| http.headers.Sec-CH-UA-Bitness | 93 | 93 | ✕ | ✕ | 93 | ✕ | ✕ |
| http.headers.Sec-CH-UA-Form-Factors | 124 | 124 | ✕ | ✕ | 124 | ✕ | ✕ |
Show 6 more
| Sub-feature | Chrome | Edge | Firefox | Safari | Chrome Android | Firefox Android | Safari iOS |
|---|---|---|---|---|---|---|---|
| http.headers.Sec-CH-UA-Full-Version-List | 98 | 98 | ✕ | ✕ | 98 | ✕ | ✕ |
| http.headers.Sec-CH-UA-Mobile | 89 | 89 | ✕ | ✕ | 89 | ✕ | ✕ |
| http.headers.Sec-CH-UA-Model | 89 | 89 | ✕ | ✕ | 89 | ✕ | ✕ |
| http.headers.Sec-CH-UA-Platform | 89 | 89 | ✕ | ✕ | 89 | ✕ | ✕ |
| http.headers.Sec-CH-UA-Platform-Version | 89 | 89 | ✕ | ✕ | 89 | ✕ | ✕ |
| http.headers.Sec-CH-UA-WoW64 | 100 | 100 | ✕ | ✕ | 100 | ✕ | ✕ |