What your user agent says about you, and what it gets wrong

The short answer. Five claims in one line of text. Your browser sends its user-agent string with every request, naming the browser and version, the rendering engine, the operating system, the device type and whether it is a bot. Several parts are deliberately untrue: Windows 11 still says Windows NT 10.0, and Chrome 120 says 120.0.0.0.

To see yours, open What Is My User Agent: the string your own browser sends is already in the box, split into its parts. To read a string from a log or a bug report, paste it into the User-Agent Parser. Both read the string in the page; nothing is sent anywhere.

A worked example: Chrome on Windows

This is the string Chrome 120 sends from a Windows computer, one of the parser's own examples:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36

Part What it claims What it really means
Mozilla/5.0 an old browser family Nothing. Practically every browser sends it.
Windows NT 10.0; Win64; x64 Windows, 64-bit Windows 10 or 11: Windows 11 kept the 10.0 token
AppleWebKit/537.36 Apple's WebKit engine On Chrome, the engine is Blink 537.36
KHTML, like Gecko two older engines Nothing. A compatibility fossil, like Mozilla/5.0.
Chrome/120.0.0.0 Chrome 120 The real browser and its major version; the 0.0.0 is frozen
Safari/537.36 Safari Nothing true: another browser's name, kept for compatibility

The parser's verdict: browser Chrome 120.0.0.0, engine Blink 537.36, operating system Windows 10 or 11, device desktop, bot no, confidence high.

Read it from the most specific token

Every browser puts other browsers' names in its string on purpose, so the order of the checks matters. Edge sends the same string as Chrome with Edg/120.0.2210.91 on the end; a check that looks for "Chrome" before "Edg" labels Edge as Chrome. Opera adds OPR/, Samsung Internet adds SamsungBrowser/. The last brand token is usually the real browser.

The same idea on a phone:

String from The parser reads The catch
Safari on a Mac Safari 17.2, macOS 10.15.7 Safari has said 10.15.7 since Big Sur; the real macOS is almost certainly newer
Chrome on an iPhone Chrome (iOS) 120.0.6099.119, engine WebKit, iOS 17.2 On iOS every browser must use Apple's WebKit, whatever name is on the app
Chrome on a Pixel 7 Chrome 120, Android 13, mobile, Google Pixel 7 The model is in the string on Android, not on iPhone
Chrome on a Samsung tablet Chrome 120, Android 13, tablet, Samsung SM-X700 A tablet is told from a phone only by the missing word "Mobile"

Bots say who they are, and anyone can copy it

Googlebot's smartphone crawler sends an Android Chrome string with (compatible; Googlebot/2.1; +http://www.google.com/bot.html) on the end, so the parser marks it as a search bot. curl/8.4.0 is a command-line HTTP library, which the parser marks as a bot of type library: it runs no JavaScript and loads no stylesheets. But every part of a user-agent string is chosen by the client. A scraper can send Googlebot's exact string. To verify a search engine crawler, do a reverse DNS lookup on its IP address and check it forward again.

What to use instead

For a capability, test for the feature you want to call. For platform facts, ask for User-Agent Client Hints:

Header What it answers
Sec-CH-UA-Platform-Version the OS version: the only reliable way to tell Windows 11 from 10
Sec-CH-UA-Full-Version-List complete browser versions, not the frozen 0.0.0
Sec-CH-UA-Model the device model on mobile

These three are sent only after your server asks with Accept-CH: Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Model. The User-Agent String Checker lists every hint against the string you paste.

Questions people ask

What is my user agent?

It is the line of text your browser sends to every website, naming the browser, its version, the rendering engine, your operating system and the kind of device. The What Is My User Agent page shows yours already split into those parts, read from the page itself, so you can copy it into a support form or bug report.

Can a user agent tell Windows 11 from Windows 10?

No. Microsoft kept the platform token at Windows NT 10.0 for Windows 11, so every Windows 10 and 11 browser sends the same thing, and the parser reports "Windows 10 or 11". Only the Sec-CH-UA-Platform-Version client hint gives the real version, and your server must ask for it with an Accept-CH header first.

Why does my Chrome version end in 0.0.0?

Chromium reduced the user-agent string in 2022: the major version stays, the build and patch numbers are frozen at 0.0.0, and the platform detail is coarse. Chrome 120 on Windows therefore says Chrome/120.0.0.0. The full version is still available through the Sec-CH-UA-Full-Version-List client hint, sent only when a site asks for it.

Why does Safari say macOS 10.15.7?

Apple froze the macOS version in the user-agent string when Big Sur shipped, so sites could not block newer releases they had not tested. Safari and Chrome on a Mac have reported 10.15.7 ever since. Read it as "macOS, version withheld". An iPad in desktop mode sends this same Mac string.

Can I trust a user agent to spot bots?

Only polite ones. Googlebot, Bingbot and GPTBot name themselves, and libraries such as curl and python-requests are easy to spot. But any client can send any string, including Googlebot's exact one. Treat the name as a hint, and verify a claimed search crawler by reverse DNS on its IP address, checked forward again.

Sources

Checked 15 Oct 2026. Every reading on this page is the User-Agent Parser's own output for the example strings in its code:

  • The User-Agent Parser: the example strings, the parsed browser, engine, operating system, device and bot, the notes on frozen versions and misreported systems, and the client hints table with its Accept-CH line.
  • IETF: RFC 9110, HTTP Semantics, section 10.1.5 (the User-Agent request header).

The tools for this