breadcrumbs: updates > page_name: ua-reduction title: User-Agent Reduction
May 24, 2021: The chrome://flags#freeze-user-agent flag was renamed to chrome://flags/#reduce-user-agent in Chrome 93 and the values were updated to align with the plan below (also testable via --enable-features=ReduceUserAgent).
September 16, 2021: Chrome milestones were added to reflect https://blog.chromium.org/2021/09/user-agent-reduction-origin-trial-and-dates.html.
Reduction Preparation
Phase 1: Warn about accessing navigator.userAgent, navigator.appVersion, and navigator.platform in DevTools, beginning in M92. Phase 2: Chrome 95 to Chrome 100 Launch an Origin Trial for sites to opt into the final reduced UA string for testing and feedback, for at least 6 months.
Reduction Rollout
Phase 3: Chrome 100 Launch a reverse Origin Trial, for instances where a site may need more time for migration, for at least 6 months. Phase 4: Chrome 101 Ship reduced Chrome MINOR.BUILD.PATCH version numbers (“0.0.0”). Once rolled-out, the reduced UA string would apply to all page loads on desktop and mobile OSes that do not opt into the reverse Origin Trial. Phase 5: Chrome 107 Begin roll-out of reduced Desktop UA string and related JS APIs (navigator.userAgent, navigator.appVersion, navigator.platform). Once rolled-out, the reduced UA string would apply to all page loads on desktop OSes that do not opt into the reverse Origin Trial. Phase 6: Chrome 110 Begin roll-out of reduced Android Mobile (and Tablet) UA string and related JS APIs. Once rolled-out, the reduced UA string would apply to all page loads on Android that do not opt into the reverse Origin Trial.
Reduction Completion Phase 7: Chrome 113 reverse Origin Trial ends and all page loads receive the reduced UA string and related JS APIs.
The unified format that covers all platforms post-UA Reduction looks like so:
Mozilla/5.0 (<unifiedPlatform>) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<majorVersion>.0.0.0 <deviceCompat> Safari/537.36
The Chrome Desktop User Agent string currently uses the following format:
Mozilla/5.0 (<platform>; <oscpu>) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<majorVersion>.<minorVersion> Safari/537.36
Post UA-Reduction, the new format will be:
Mozilla/5.0 (<unifiedPlatform>) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<majorVersion>.0.0.0 Safari/537.36
The Chrome Mobile and Tablet User Agent strings use the following format:
Mozilla/5.0 (Linux; Android <androidVersion>; <deviceModel>) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<majorVersion>.<minorVersion> <deviceCompat> Safari/537.36
Post UA-Reduction, the new format will be:
Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<majorVersion>.0.0.0 <deviceCompat> Safari/537.36
Tokens
Description
<androidVersion>
Represents Android major version
<deviceModel>
Represents Android device model.
<minorVersion>
Represents the Chrome MINOR.BUILD.PATCH version numbers.
<oscpu>
Represents the device operating system and (optionally) CPU architecture.
<platform>
Represents the underlying device platform.
Post-Reduction Tokens
<deviceCompat>
Represents device form-factor.
The possible values are:
“Mobile” “” (empty string, used by Tablets and Desktop)
<majorVersion>
Represents the Chrome major version.
<unifiedPlatform>
The intersection of <platform>, <oscpu>, <androidVersion>, and <deviceModel>, depending on device.
The possible desktop values* are:
Windows NT 10.0; Win64; x64 Macintosh; Intel Mac OS X 10_15_7 X11; Linux x86_64 X11; CrOS x86_64
The possible mobile values* are:
Linux; Android 10; K
*Note that these strings are literal values; they will not update even if a user is on an updated operating system or device.
In Phase 4 we change the <minorVersion> token to “0.0.0”.
Desktop (user on Windows 8.1, for example)
Phase 3 UA
Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.1234.56 Safari/537.36
Phase 4 UA
Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.0.0 Safari/537.36
Mobile (user on Samsung Galaxy, for example)
Phase 3 UA
Mozilla/5.0 (Linux; Android 9; SM-A205U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.1234.56 Mobile Safari/537.36
Phase 4 UA
Mozilla/5.0 (Linux; Android 9; SM-A205U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.0.0 Mobile Safari/537.36
Tablet (user on Samsung Galaxy, for example)
Phase 3 UA
Mozilla/5.0 (Linux; Android 9; SM-T810) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.1234.56 Safari/537.36
Phase 4 UA
Mozilla/5.0 (Linux; Android 9; SM-T810) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.0.0 Safari/537.36
In Phase 5 we change the <platform> and <oscpu> tokens from their platform-defined values to the relevant <unifiedPlatform> token value (which will never change).
Note: There may not be user-visible changes here, unless the user was on a lower version.
Also note that the macOS platform version was already capped to 10_15_7 in Chrome 90 for site compatibility reasons.
Desktop (user on Windows 8.1, for example)
Phase 4 UA
Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.0.0 Safari/537.36
Phase 5 UA
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.0.0 Safari/537.36
Mobile (user on Samsung Galaxy, for example)
Phase 4 UA
Mozilla/5.0 (Linux; Android 9; SM-A205U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.0.0 Mobile Safari/537.36
Phase 5 UA
(No changes for Mobile UAs in Phase 5)
Tablet (user on Samsung Galaxy, for example)
Phase 4 UA
Mozilla/5.0 (Linux; Android 9; SM-T810) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.0.0 Safari/537.36
Phase 5 UA
(No changes for Tablet UAs in Phase 5)
In Phase 6, we change the <deviceModel> token to “K” and change the <androidVersion> token to a static “10” string.
Desktop (user on Windows 8.1, for example)
Phase 5 UA
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.0.0 Safari/537.36
Phase 6 UA
(No changes for Desktop UAs from Phase 5)
Mobile (user on Samsung Galaxy, for example)
Phase 5 UA
Mozilla/5.0 (Linux; Android 9; SM-A205U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.0.0 Mobile Safari/537.36
Phase 6 UA
Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.0.0 Mobile Safari/537.36
Tablet (user on Samsung Galaxy, for example)
Phase 5 UA
Mozilla/5.0 (Linux; Android 9; SM-T810) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.0.0 Safari/537.36
Phase 6 UA
Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.0.0 Safari/537.36
Desktop (user on Windows 8.1, for example)
Old UA
Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.1234.56 Safari/537.36
Final Reduced UA
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.0.0 Safari/537.36
Mobile (user on Samsung Galaxy, for example)
Old UA
Mozilla/5.0 (Linux; Android 9; SM-A205U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.1234.56 Mobile Safari/537.36
Final Reduced UA
Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.0.0 Mobile Safari/537.36
Tablet (user on Samsung Galaxy, for example)
Old UA
Mozilla/5.0 (Linux; Android 9; SM-T810) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.1234.56 Safari/537.36
Final Reduced UA
Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.0.0 Safari/537.36
Platform
Reduced value
macOS
MacIntel
Windows
Win32
Chrome OS
Linux x86_64
Linux
Linux x86_64
Android
Linux armv81
navigator.appVersion is effectively an alias of navigator.userAgent (it’s everything after “Mozilla/”).
To avoid confusion and reduce implementation complexity, we aim to follow the same plan for navigator.userAgent.