v145 · Web APIs · Privacy
Reduced User-Agent strings by default
Chrome 145 completes the rollout of reduced User-Agent strings — the User-Agent HTTP header and navigator.userAgent now return a frozen, minimal string by default, with detailed signals available only via the User-Agent Client Hints API.
background
The traditional User-Agent string exposes browser name, major version, OS, OS version, device model, and more — a rich fingerprinting surface. Chrome has progressively reduced this by freezing the minor/patch version and removing device model detail.
With Chrome 145, the default User-Agent string is fully reduced: it contains only the browser name, major version, and "frozen" OS/platform tokens. Granular signals like OS version, full browser version, and device model require explicit opt-in via navigator.userAgentData (User-Agent Client Hints).
concepts
-
UA Demo
Shows the current
navigator.userAgentstring, the reduced form, and the structured data available fromnavigator.userAgentData. -
UA-CH Migration
How to migrate from parsing the
User-Agentstring to using the User-Agent Client Hints API —navigator.userAgentData.getHighEntropyValues()for detailed signals. -
Entropy Budget
Toggle high-entropy hints on a fingerprinting meter. Helps you reason about which UA-CH fields really need to ride on every request — and which take you past the 32-bit identification threshold.
-
UA Field Annotator
Paste any
User-Agentstring and see each token annotated: what it reveals, whether it is frozen or real data in Chrome 145, and whichnavigator.userAgentDatahint provides the real value instead.
the change
// Before Chrome 100+: full UA string
// Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.0.0 Safari/537.36
// Chrome 145 reduced default:
// Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.0.0 Safari/537.36
// ^ OS version frozen to "10.0"; minor/patch version "0.0.0"; no device model
// For detailed signals, use User-Agent Client Hints:
const ua = navigator.userAgentData;
console.log(ua.brands); // [{brand: 'Google Chrome', version: '145'}, ...]
console.log(ua.mobile); // true | false
console.log(ua.platform); // 'Windows'
// High-entropy values require explicit request:
const high = await ua.getHighEntropyValues([
'platformVersion', 'fullVersionList', 'model', 'bitness'
]);
console.log(high.platformVersion); // '15.0.0' (actual OS version)