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.

sent by default UA · default
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:

ValueSent 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.