User agent parser

A User-Agent string is the header a browser sends to describe itself, and parsing it gives a best guess at the browser, operating system and device. Paste one, such as your own browser's, to read it, and see which parts modern browsers now freeze or reduce.

The default is an example: Chrome on an Android phone, as MDN's User-Agent reference shows it. To read your own browser's string, open its developer console, run navigator.userAgent and paste the result here.

Browser

Chrome 143

Android · mobile (phone) · Blink engine

Browser
Chromematched Chrome/ without Chromium/, Edg or another browser's token
Browser version as sent
143.0.0.0
Rendering engine
BlinkChrome/ token
Operating system
Android
OS version as sent
10a frozen value, not the real version: see the notes
Device type
Mobile (phone)the Mobi(le) token
Each part of the string and how this parser reads it
PartRead as
Mozilla/5.0Compatibility token: almost every browser sends it
(Linux; Android 10; K)Platform: Android 10 (as sent)
AppleWebKit/537.36WebKit engine token; Blink-based browsers send it too
(KHTML, like Gecko)Compatibility text that WebKit and Blink strings carry; it doesn't mean the Gecko engine
Chrome/143.0.0.0Chrome or Chromium-based version
MobileMobile marker: a phone
Safari/537.36Compatibility token: Chrome-based strings carry it too
  • Reduced User-Agent: the Chrome version ends in .0.0.0, as Chrome has sent it since version 101, so only the major version is real. Since Chrome 145 (February 2026) the policy that kept the full string is gone.
  • “Android 10; K” is the frozen platform Chrome (since version 110) and Samsung Internet (since version 24) send on every Android device, so the real Android version and phone model aren't in this string.
  • A Chromium-based browser that adds no token of its own looks exactly like Chrome here.
  • This is a best guess from the text. Any client can send any string, browsers now freeze parts of it, and MDN recommends feature detection, not User-Agent parsing, to decide what a browser can do.

How does a User-Agent parser work?

A User-Agent string is a list of product/version tokens and comments in brackets, such as Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Mobile Safari/537.36. Much of it is there for compatibility: MDN notes that almost every browser sends Mozilla/5.0, and Chrome-based strings add “KHTML, like Gecko” and Safari. So a parser has to look for the most specific token first.

This one checks the string in a fixed order, using the token rules in MDN's browser detection guide and the browsers' own documentation. Crawler names come first (Googlebot, Bingbot, GPTBot, ClaudeBot and others, as their operators document them). Then browser tokens, specific before generic: Edg, EdgA or EdgiOS for Microsoft Edge, OPR for Opera, SamsungBrowser, CriOS and FxiOS for Chrome and Firefox on iPhone, Firefox, then Chrome, then Safari, which has Version/ and Safari/ but no Chrome/. The engine is Blink when Chrome/ appears, Gecko for Gecko/ (not “like Gecko”), and WebKit for AppleWebKit/ or any browser on iPhone and iPad. The device is a phone when the string has the Mobile token, as MDN suggests, a tablet for iPad, Firefox's Tablet token or Android without Mobile, and a desktop otherwise.

Browsers now freeze much of the string. Chrome's User-Agent reduction sends the version as 143.0.0.0, a fixed desktop platform such as Windows NT 10.0 or Intel Mac OS X 10_15_7, and Linux; Android 10; K on every Android device; Samsung Internet does the same. Microsoft says the string won't distinguish Windows 11 from Windows 10, Firefox caps the macOS version at 10.15, and Safari 26 freezes the iOS version at 18.x.

The replacement is User-Agent Client Hints: Edge, Chrome and Opera send Sec-CH-UA headers and expose navigator.userAgentData, with the platform version, model and full version on request; Firefox doesn't support them, and MDN still marks the API experimental. For deciding what a browser can do, MDN and Microsoft both recommend feature detection over reading the User-Agent at all.

1 bot      Googlebot · bingbot · GPTBot · OAI-SearchBot · ClaudeBot · PerplexityBot · Applebot · …
2 browser  EdgiOS | EdgA | Edg → OPR → SamsungBrowser → CriOS → FxiOS → Firefox → Chromium → Chrome → Version/…Safari/
3 engine   iPhone or iPad: WebKit · Chrome/: Blink · Gecko/: Gecko · AppleWebKit/: WebKit
4 OS       iPhone / iPad → Android → CrOS → Windows NT x.y → Mac OS X → Linux
5 device   bot · iPad or Tablet; → tablet · Mobi → phone · Android without Mobile → tablet · else desktop

Which tokens identify each browser and bot?

The tokens this parser looks for, what they mean and where that is documented (checked 2026-10-20)
TokenMeansDocumented by
Edg/Microsoft Edge on Windows, macOS or LinuxMicrosoft Edge documentation
EdgA/Microsoft Edge on AndroidMicrosoft Edge documentation
EdgiOS/Microsoft Edge on iPhone and iPadMicrosoft Edge documentation
Edge/Microsoft Edge Legacy (EdgeHTML engine, no longer supported)Microsoft Edge documentation
OPR/Opera 15 and later (Blink)MDN browser detection guide
Opera/ … Presto/Opera 12 and earlier (Presto, obsolete)MDN browser detection guide
SamsungBrowser/Samsung InternetSamsung Internet developer documentation
CriOS/Chrome on iPhone and iPadChromium documentation, MDN
FxiOS/Firefox on iPhoneMDN Firefox user agent reference
Firefox/ (no Seamonkey/)FirefoxMDN browser detection guide
Chrome/ (no Chromium/, no Edg)ChromeMDN browser detection guide
Version/ … Safari/ (no Chrome/)Safari; Version/ is the version people knowMDN browser detection guide
Chrome/Blink engineMDN browser detection guide
Gecko/ (not “like Gecko”)Gecko engineMDN browser detection guide
AppleWebKit/WebKit engine (Blink strings carry it too)MDN browser detection guide
MobiA phone; Android without it is a tabletMDN browser detection guide, Chromium
Linux; Android 10; KFrozen Android platform (Chrome 110+, Samsung Internet 24+)Chromium, Samsung
Chrome/<major>.0.0.0Reduced version: only the major number is real (Chrome 101+)Chromium User-Agent Reduction
Windows NT 10.0Windows 10 or 11 (also some Windows Server versions)Microsoft
Googlebot/Google Search's crawlerGoogle Search Central
bingbot/Bing's crawlerBing Webmaster Blog
GPTBot/ · OAI-SearchBot/ · ChatGPT-User/OpenAI's crawlers and user-requested fetcherOpenAI documentation
ClaudeBot · Claude-SearchBot · Claude-UserAnthropic's crawlers and user-requested fetcherAnthropic support
PerplexityBot/ · Perplexity-User/Perplexity's crawler and user-requested fetcherPerplexity documentation
Applebot/Apple's web crawlerApple support
DuckDuckBot/DuckDuckGo's crawlerDuckDuckGo help
facebookexternalhit/ · meta-externalagent/Meta's link-preview fetcher and crawlerMeta for Developers

How to read a User-Agent string

  1. 1
    Paste the stringPaste a User-Agent from a server log or analytics, or your own: run navigator.userAgent in your browser's developer console. The example already in the box is Chrome on an Android phone.
  2. 2
    Read the browser, OS and deviceThe result names the browser and version, the rendering engine, the operating system and whether it is a phone, tablet, desktop or bot, with the token that decided each one.
  3. 3
    Check the frozen partsNotes flag what the string no longer tells you, such as Chrome's 0.0.0 version, Android 10; K, Windows NT 10.0 on Windows 11, or a frozen macOS or iOS version.
  4. 4
    Verify bots before trusting themIf it names a crawler, follow the operator's documentation link, and check the request's IP address or reverse DNS; the string alone proves nothing.

Frequently asked questions

Why does Chrome's User-Agent say Android 10 on every phone?
Because of Chrome's User-Agent reduction. Since Chrome 110 the Android string always reads “Linux; Android 10; K”, whatever the real version and model, and the version number ends in .0.0.0. Samsung Internet adopted the same format in version 24. Sites that need the real values can ask for them with User-Agent Client Hints.
Can a User-Agent string tell Windows 11 from Windows 10?
No. Both report Windows NT 10.0, and Microsoft says the string won't be updated to tell them apart. In Edge, Chrome and Opera, request the Sec-CH-UA-Platform-Version client hint or call navigator.userAgentData.getHighEntropyValues(["platformVersion"]); Firefox doesn't support client hints.
What are User-Agent Client Hints?
A replacement for the User-Agent string in Chromium-based browsers. Microsoft Edge, for example, sends Sec-CH-UA (brands and major versions), Sec-CH-UA-Mobile and Sec-CH-UA-Platform with every HTTPS request; a server that wants more, such as the platform version or device model, asks for it in an Accept-CH response header. In JavaScript the same data is in navigator.userAgentData.
Should I detect browsers from the User-Agent string?
Rarely. MDN calls User-Agent sniffing hard to do reliably and a common cause of bugs, and recommends checking whether the feature you need exists instead. Use the string for logs and rough analytics, and don't block or change features based on it.
Can I trust a request that says it is Googlebot?
Not on the User-Agent alone: Google warns the string can be spoofed. Google publishes its crawlers' IP ranges, and their reverse DNS names end in googlebot.com, so check the request's address against those before treating it as Google.

Sources

Related tools

See all 73 free tools

Need a custom dev tool for your team?

We build internal tools, dashboards, APIs, and SaaS platforms. If you can describe it, we can ship it.

Built by CountryDevs · No signup · No ads · We count visits, never what you enter