Skip to content

User Agent Parser: Decode Any UA String

Paste a user agent string to read the browser, version, rendering engine, operating system and device type it describes.

Runs in your browserFree, no sign-upLast reviewed

Settings

Results update automatically as you type.

Parsed

Browser
Chrome
Version
126.0.0.0
Engine
Blink
Operating system
macOS
OS version
10.15.7
Device type
Desktop

Every browser's user agent begins with Mozilla/5.0 and most claim to be several other browsers, for historical compatibility reasons. That makes UA strings unreliable for feature decisions — test for the feature itself instead.

Quick answers

What is a user agent string?
It is the text a browser, app or bot sends in the User-Agent HTTP header to describe itself. A typical one names a browser and version, a rendering engine and an operating system, for example Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36.
How do I find my own user agent?
Open your browser's developer tools, go to the Console and type navigator.userAgent. The quoted text it prints is your user agent. You can also see it as the User-Agent request header in the Network tab.
Why does every user agent start with Mozilla/5.0?
For compatibility. In the 1990s servers sent their full pages only to browsers that identified as Mozilla, so other browsers added the word to avoid a cut-down page. Removing it now would risk breaking old server checks, so every mainstream browser keeps it.
What does Windows NT 10.0 mean in a user agent?
It means Windows 10 or Windows 11. Windows 11 did not change the number in the string, so the two cannot be told apart from the user agent alone. Windows NT 6.1 is Windows 7 and 6.3 is Windows 8.1.
Why does a Chrome user agent say Safari?
Chrome began on the WebKit engine and copied Safari's tokens so sites built for Safari would serve it the same content. Edge and Opera then copied Chrome's. That is why a parser must look for Edg/ or OPR/ before Chrome/, and Chrome/ before Safari.
Can a user agent be faked?
Yes. It is ordinary text chosen by the client. Browser developer tools, extensions, scripts and bots can send any value, so a user agent describes what a client claims to be and is not proof of it.

How User Agent Parser works

A user agent string is the line of text a browser or bot sends in the User-Agent header of every request. This parser reads one and reports six things: Browser, Version, Engine, Operating system, OS version and Device type. It recognises Chrome, Edge, Firefox, Safari, Opera, Samsung Internet, Vivaldi and older Internet Explorer, on Windows, macOS, iOS, Android, Chrome OS and Linux, and it flags common crawlers. Tokens are checked from most specific to least, because an Edge string also contains Chrome and Safari. It is a compact rule-based parser, not a device database, so it does not name phone models, and unusual clients come back as Unknown.

User agent string examples and what they parse to

Each row is the result this tool gives for a common string. Strings are shortened here to the part that differs; all begin with Mozilla/5.0.

Tokens in the stringBrowser and versionEngineOS and versionDevice type
(Windows NT 10.0; Win64; x64) ... Chrome/126.0.0.0 Safari/537.36Chrome 126.0.0.0BlinkWindows 10 or 11Desktop
(Windows NT 10.0; Win64; x64) ... Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0Edge 126.0.0.0BlinkWindows 10 or 11Desktop
(Windows NT 10.0; Win64; x64; rv:127.0) Gecko/20100101 Firefox/127.0Firefox 127.0GeckoWindows 10 or 11Desktop
(Macintosh; Intel Mac OS X 10_15_7) ... Version/17.5 Safari/605.1.15Safari 17.5WebKitmacOS 10.15.7Desktop
(iPhone; CPU iPhone OS 17_5 like Mac OS X) ... Version/17.5 Mobile/15E148 Safari/604.1Safari 17.5WebKitiOS 17.5Mobile
(iPad; CPU OS 17_5 like Mac OS X) ... Version/17.5 Mobile/15E148 Safari/604.1Safari 17.5WebKitiOS 17.5Tablet
(iPhone; CPU iPhone OS 17_5 like Mac OS X) ... CriOS/126.0.6478.153 Mobile/15E148 Safari/604.1Chrome 126.0.6478.153WebKitiOS 17.5Mobile
(Linux; Android 14; Pixel 8) ... Chrome/126.0.0.0 Mobile Safari/537.36Chrome 126.0.0.0BlinkAndroid 14Mobile
(Linux; Android 14; SM-S918B) ... SamsungBrowser/25.0 Chrome/121.0.0.0 Mobile Safari/537.36Samsung Internet 25.0BlinkAndroid 14Mobile
(Linux; Android 13; SM-X710) ... Chrome/126.0.0.0 Safari/537.36Chrome 126.0.0.0BlinkAndroid 13Tablet
(X11; CrOS x86_64 14541.0.0) ... Chrome/126.0.0.0 Safari/537.36Chrome 126.0.0.0BlinkChrome OS 14541.0.0Desktop
(X11; Linux x86_64; rv:127.0) Gecko/20100101 Firefox/127.0Firefox 127.0GeckoLinux, no versionDesktop
(compatible; Googlebot/2.1; +http://www.google.com/bot.html)UnknownUnknownUnknownBot or crawler

An Android string without the word Mobile is classed as a tablet, which is the convention Chrome follows on Android.

Browser tokens, in the order they are checked

The first match wins, which is how an Edge string is kept from being reported as Chrome or Safari.

OrderToken looked forReported as
1Edg/, Edge/, EdgA/ or EdgiOS/Edge
2OPR/ or Opera/Opera
3SamsungBrowser/Samsung Internet
4Vivaldi/Vivaldi
5Firefox/ or FxiOS/Firefox
6Chrome/ or CriOS/Chrome
7Version/ followed later by SafariSafari
8MSIE or rv: followed later by TridentInternet Explorer

Chromium browsers that add no token of their own, such as Brave, send the same string as Chrome and are reported as Chrome by any parser.

Windows NT version numbers in user agents

TokenWindows release shown
Windows NT 10.010 or 11
Windows NT 6.38.1
Windows NT 6.28
Windows NT 6.17
Windows NT 6.0Vista
Windows NT 5.1XP

Any other number is shown as written.

Why a parsed user agent can be wrong or vague

  • Chrome and other Chromium browsers now send a reduced string: the version is cut to the major number (126.0.0.0), Android phones report Android 10 and the model K, and the desktop platform text is fixed.
  • Safari and Chrome on a Mac report Mac OS X 10_15_7 whatever the real macOS version is, so 10.15.7 does not mean the machine runs Catalina.
  • Safari on an iPad asks for desktop sites by default and sends a Macintosh string, so it is parsed as macOS on a desktop.
  • Chrome and Firefox on iOS are built on Apple's WebKit, which is why a CriOS or FxiOS string shows the WebKit engine and not Blink or Gecko.
  • Crawlers are flagged when the string contains bot, crawl, spider, slurp or a few known names such as GPTBot, ClaudeBot and facebookexternalhit. Command-line clients such as curl/8.6.0 match none of these and fall through to Unknown browser with the default device type Desktop.
  • Internet Explorer 11 dropped the MSIE token. Its string is reported with the Trident engine and the right Windows version, but the browser name comes back as Unknown.
  • The original Edge (versions 12 to 18, token Edge/) ran on Microsoft's EdgeHTML engine, but its string also contains Chrome/, so the Engine value reads Blink.
  • Firefox on a Mac writes the version with dots (Mac OS X 10.15), and only the part before the first dot is picked up, so the OS version shows 10.

Use the result for diagnosis, not for feature decisions

A parsed user agent is useful when you are describing traffic: working out which browser a bug report came from, separating crawlers from visitors in a log, or checking why a server rule matched.

It is a poor basis for deciding what code to run. The string can be changed by the client, the detail in it is being reduced on purpose, and any list of browser rules goes out of date as new versions ship. To decide whether to use an API, test for the API itself in JavaScript, or use @supports in CSS.

Chromium browsers also offer User-Agent Client Hints: separate Sec-CH-UA request headers and the navigator.userAgentData object, which give the brand, platform and mobile flag as structured values. This tool reads only the classic string.

How to use it

  1. 1

    Copy a user agent from a server log, an analytics export or a bug report.

  2. 2

    Paste it into User agent string, replacing the sample Chrome on macOS string.

  3. 3

    Read Browser, Version and Engine in the Parsed panel.

  4. 4

    Check Operating system, OS version and Device type (Desktop, Mobile, Tablet, or Bot or crawler).

  5. 5

    If a value shows Unknown, look at the reference tables below to see which tokens the parser recognises.

Answers to common questions

Does this tool detect my own browser automatically?
No. It parses whatever you paste, and starts with a sample Chrome on macOS string. To check your own, copy the output of navigator.userAgent from the browser console and paste it in. The What Is My IP Address page on this site also displays the user agent your browser sent.
Can it tell me the phone or tablet model?
No. It reports the device type only. Model codes such as SM-S918B or Pixel 8 are visible in the string itself, inside the first set of brackets, but mapping codes to product names needs a device database that this tool does not have.
How is the engine worked out?
From tokens in the string: Chrome/ or Edg/ gives Blink, a Gecko/ or Firefox/ token gives Gecko, AppleWebKit/ without Chrome gives WebKit, and Trident/ gives Trident. The check runs in that order.
How does it decide between Mobile, Tablet and Desktop?
Bot patterns are checked first. Then iPad, Tablet, PlayBook, Silk, or Android without the word Mobile gives Tablet. Mobi, iPhone, iPod or Windows Phone gives Mobile. Everything else is Desktop, so Desktop also covers strings the parser could not classify.
What does a Googlebot user agent look like?
The desktop crawler sends Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html), or a longer Chrome-style string that contains the same Googlebot/2.1 token. Either way this tool shows Bot or crawler. The string alone does not prove a request is from Google, since anyone can send it.
Why is the Chrome version shown as 126.0.0.0?
That is what Chrome sends. As part of its user agent reduction, Chrome replaces the minor, build and patch numbers with zeros. The full version is available to sites only through User-Agent Client Hints.
Is the string I paste stored?
No. The parsing runs in your browser and the string is not uploaded or saved.
Can I parse a whole log file at once?
No. The tool reads one user agent string at a time. Paste a single value, without the surrounding log fields or quotes.

Looking for something else? Browse all developer tools or see every tool.