Loading Techie Utils…

User-Agent Parser

Identify the browser, engine, operating system and device behind a User-Agent string. Free, and runs entirely in your browser — nothing is uploaded.

About User-Agent Parser

A User-Agent string is a history of browsers pretending to be each other. Every browser starts with Mozilla/5.0, every Chromium browser also claims to be Safari, and Edge claims to be Chrome as well. So the order the brands are checked in is the whole parser: the most specific brand first, and the ones it imitates last.

What the string cannot tell you, it says. Windows 11 still reports Windows NT 10.0. Every Mac browser reports macOS 10.15.7 whatever the real version. Chrome's reduced User-Agent replaces the Android model with K and the minor version with zeros. An iPad asking for the desktop site sends exactly a Mac's string. Each of those is flagged instead of reported as fact.

For Chromium browsers the result also shows the low-entropy Client Hints the same browser would send: Sec-CH-UA, Sec-CH-UA-Mobile and Sec-CH-UA-Platform. These are the headers to use when the frozen User-Agent is not enough. Leave the field empty to read the string of the browser you are using now.

Where it helps

  • Checks brands in the order browsers imitate each other, so Edge, Opera and Samsung Internet are not all reported as Chrome.
  • Says when a value is a frozen placeholder, such as Windows 10 or 11, macOS 10.15.7 or the Android model K, instead of reporting it as the truth.
  • Recognises search, AI and social crawlers, uptime monitors, and HTTP libraries such as curl, requests, axios and okhttp.
  • Shows the Client Hints a Chromium browser would send, which is where the detail removed from the string now lives.
  • Runs in the browser, so User-Agents taken from private logs are not sent anywhere.

Limits

  • Anything can send any string, so a User-Agent is a claim. Use it for analytics and known-bug workarounds, and feature detection for everything else.
  • Browsers that copy Chrome's string exactly, such as Brave and Arc, cannot be told apart from Chrome by the string alone.
  • Device models are read from what Android puts in the string. Many devices send marketing names or codes, and reduced strings send none.

Frequently asked questions

Why does every browser say Mozilla and Safari?

Servers used to send better pages to the browsers they recognised, so each new browser copied the tokens of the one ahead of it to get the same pages. The tokens stayed after they stopped meaning anything, and removing them now would break sites that still look for them.

How do I tell Windows 11 from Windows 10?

Not from the User-Agent: both send Windows NT 10.0. Request the Sec-CH-UA-Platform-Version Client Hint with an Accept-CH header, or call navigator.userAgentData.getHighEntropyValues(["platformVersion"]). A major version of 13 or higher is Windows 11.

Is User-Agent sniffing a bad idea?

For deciding which features to use, yes. Test for the feature itself, because a browser gains features without its string changing the way your check expects. For analytics, bot handling and working around a specific known bug in a specific version, reading the User-Agent is the normal tool.

How do I verify that a request really came from Googlebot?

Do a reverse DNS lookup on the requesting IP. It should end in googlebot.com or google.com, and a forward lookup of that name should return the same IP. Google also publishes its crawler IP ranges. The User-Agent on its own proves nothing.

Related tools

  • HTTP Headers — Grade a site's security headers from A+ to F, see every response header, and get the fix for your server
  • What Is My IP — Your public address, and what a browser reveals about you
  • robots.txt Generator — Crawl rules, with the traps called out
  • cURL Builder — Build an HTTP request and get it as curl, JavaScript, TypeScript, Go, Python, PHP, C#, Java and more
  • HTML Formatter — Indent and tidy HTML markup
  • CSS Formatter — Format stylesheets with consistent indentation

More Web Development tools