User Agent Parser

Paste a user-agent string to see the browser, operating system and device type it claims — and, more usefully, which of those values are real. Modern browsers freeze large parts of this string, so a confident-looking breakdown can be mostly placeholder.

Runs in your browser · nothing sent, stored, or logged

Coverage

Browser · Engine · OS · Device type, with the frozen segments flagged

Detection covers the major browsers and engines, mobile and tablet form factors, consoles, connected TV platforms, and declared crawlers. Runs entirely in your browser.

Half of this string is no longer true

User-agent reduction changed what these strings mean. Chrome and Edge now report a fixed minor version and a static platform string, so a value like Chrome/119.0.0.0 on Windows NT 10.0 carries exactly one real fact — the major version. The operating system detail is pinned, Windows 11 is indistinguishable from Windows 10, and Safari caps the macOS version it reports at 10.15.7 regardless of the machine. None of this breaks parsing, which is the problem: the string still looks precise, and targeting built on it silently matches a placeholder. Real values now come from Client Hints, which arrive as the sua object in a bid request rather than in ua.

What the string is still good for

Two things, mostly. Coarse device classification — desktop against mobile against tablet — remains reliable, because the form-factor tokens were not reduced. And declared crawlers still identify themselves honestly, which makes the user-agent a legitimate first filter for non-human traffic: Googlebot, AdsBot checking a landing page, Mediapartners-Google crawling for AdSense, and headless browsers all announce themselves. Anything more granular than that, and anything you intend to bill on, needs a better source than this header.

Frequently asked questions

Why does Chrome report a version ending in .0.0.0?
Because those segments are frozen. Chrome and Edge reduced the user-agent string deliberately, fixing the minor version to zeros and pinning the platform detail to a static value. The major version is real; nothing after it is. Device or OS targeting built on the reduced portion is matching a placeholder rather than a device.
How do I get the real device details now?
From Client Hints, the structured replacement for the user-agent header. In a bid request these arrive in the sua object rather than in ua. An integration still parsing ua alone is steadily losing detail it used to get for free, and the loss is silent — the string still parses, it just describes less.
Can I tell Windows 10 from Windows 11?
Not from the user-agent. Windows 11 still identifies itself as Windows NT 10.0, so the two are indistinguishable in the string. Client Hints expose the real platform version if you need it.
Why is my CTV device showing up as Android?
Because many connected TV platforms are Android-based and some send a plain Android or WebKit string with no device marker. Fire TV is only identifiable from a build token like AFTMM buried in the string, and several devices give nothing at all. For CTV, use the make, model and ifa fields in the bid request rather than the user-agent.
Should traffic from declared bots be billed?
No. Crawlers that identify themselves — Googlebot, AdsBot, Mediapartners-Google and the rest — should be filtered before delivery is counted, which is what the IAB/ABC spiders and bots list exists for. Seeing them in billable impressions means the filtering is not working, and the traffic is likely to be reclaimed later as invalid.

Related