hints / ua · default
Sec-CH-UA-Platform
Sec-CH-UA-Platform names the operating system (Windows, macOS, Android, Linux) on every Chromium request, without revealing the OS version.
- Example
Sec-CH-UA-Platform: "Linux"- JavaScript
navigator.userAgentData.platform- Available since
- Chrome 89 (2021)
- Engines
- Chrome Edge Opera Firefox Safari
- References
- MDN · Specification
Sec-CH-UA-Platform names the operating system family and nothing more. No version, no distribution, no architecture. It is the third of the three low-entropy hints Chromium attaches to every request by default.
Possible values
The spec deliberately fixes a short enum of quoted strings:
| Value | Sent by |
|---|---|
"Android" | Chrome and WebView on Android |
"Chrome OS" | ChromeOS devices |
"iOS" | Chrome on iPhone and iPad¹ |
"Linux" | Desktop Linux |
"macOS" | Chrome, Edge, Opera on macOS |
"Windows" | Windows 7 through 11 |
"Unknown" | Anything else |
¹ A footnote worth knowing: Chrome on iOS is WebKit under the hood and, like Safari itself, does not actually send UA client hints. You will effectively never receive "iOS" from a real iPhone; the value exists in the enum for completeness.
Note the quotes are part of the wire format (structured-field string). "Windows" includes the double quotes in the raw header value.
What it will not tell you
Which Windows or macOS version. That requires the opt-in hint Sec-CH-UA-Platform-Version. This split is the core design idea of client hints: cheap facts flow by default, identifying facts flow on request.
In JavaScript
navigator.userAgentData.platform // "Linux" Server-side use
The classic use is download pages and install instructions: serve the .dmg button to "macOS" and the .exe to "Windows", decided at the edge from the first request. Add Vary: Sec-CH-UA-Platform when the response body depends on it, and keep a User-Agent fallback for Firefox and Safari, which send none of the UA hints.