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.
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
| Part | Read as |
|---|---|
| Mozilla/5.0 | Compatibility token: almost every browser sends it |
| (Linux; Android 10; K) | Platform: Android 10 (as sent) |
| AppleWebKit/537.36 | WebKit 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.0 | Chrome or Chromium-based version |
| Mobile | Mobile marker: a phone |
| Safari/537.36 | Compatibility 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?
| Token | Means | Documented by |
|---|---|---|
| Edg/ | Microsoft Edge on Windows, macOS or Linux | Microsoft Edge documentation |
| EdgA/ | Microsoft Edge on Android | Microsoft Edge documentation |
| EdgiOS/ | Microsoft Edge on iPhone and iPad | Microsoft 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 Internet | Samsung Internet developer documentation |
| CriOS/ | Chrome on iPhone and iPad | Chromium documentation, MDN |
| FxiOS/ | Firefox on iPhone | MDN Firefox user agent reference |
| Firefox/ (no Seamonkey/) | Firefox | MDN browser detection guide |
| Chrome/ (no Chromium/, no Edg) | Chrome | MDN browser detection guide |
| Version/ … Safari/ (no Chrome/) | Safari; Version/ is the version people know | MDN browser detection guide |
| Chrome/ | Blink engine | MDN browser detection guide |
| Gecko/ (not “like Gecko”) | Gecko engine | MDN browser detection guide |
| AppleWebKit/ | WebKit engine (Blink strings carry it too) | MDN browser detection guide |
| Mobi | A phone; Android without it is a tablet | MDN browser detection guide, Chromium |
| Linux; Android 10; K | Frozen Android platform (Chrome 110+, Samsung Internet 24+) | Chromium, Samsung |
| Chrome/<major>.0.0.0 | Reduced version: only the major number is real (Chrome 101+) | Chromium User-Agent Reduction |
| Windows NT 10.0 | Windows 10 or 11 (also some Windows Server versions) | Microsoft |
| Googlebot/ | Google Search's crawler | Google Search Central |
| bingbot/ | Bing's crawler | Bing Webmaster Blog |
| GPTBot/ · OAI-SearchBot/ · ChatGPT-User/ | OpenAI's crawlers and user-requested fetcher | OpenAI documentation |
| ClaudeBot · Claude-SearchBot · Claude-User | Anthropic's crawlers and user-requested fetcher | Anthropic support |
| PerplexityBot/ · Perplexity-User/ | Perplexity's crawler and user-requested fetcher | Perplexity documentation |
| Applebot/ | Apple's web crawler | Apple support |
| DuckDuckBot/ | DuckDuckGo's crawler | DuckDuckGo help |
| facebookexternalhit/ · meta-externalagent/ | Meta's link-preview fetcher and crawler | Meta for Developers |
How to read a User-Agent string
- 1Paste 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.
- 2Read 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.
- 3Check 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.
- 4Verify 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?
Can a User-Agent string tell Windows 11 from Windows 10?
What are User-Agent Client Hints?
Should I detect browsers from the User-Agent string?
Can I trust a request that says it is Googlebot?
Sources
- MDN, User-Agent header (syntax, Mozilla/5.0, browser and bot examples, reduction) (checked 20 Oct 2026)
- MDN, Browser detection using the user agent (token tables, Mobi, feature detection) (checked 20 Oct 2026)
- MDN, Firefox user agent string reference (Mobile and Tablet tokens, FxiOS, macOS capped at 10.15) (checked 20 Oct 2026)
- MDN, User-Agent Client Hints API (experimental; low and high entropy hints) (checked 20 Oct 2026)
- The Chromium Projects, User-Agent Reduction (frozen values, Chrome 101, 107 and 110) (checked 20 Oct 2026)
- Chrome for Developers, Chrome 145 release notes (UserAgentReduction policy removed) (checked 20 Oct 2026)
- Chromium docs, User Agent in Chrome for iOS (CriOS) (checked 20 Oct 2026)
- Microsoft Learn, Detecting Microsoft Edge from your website (Edg, EdgA, EdgiOS; Sec-CH-UA defaults) (checked 20 Oct 2026)
- Microsoft Learn, Detect Windows 11 using User-Agent Client Hints (browser support table) (checked 20 Oct 2026)
- Microsoft Learn, Operating System Version (Windows NT version numbers) (checked 20 Oct 2026)
- Samsung Developer, Samsung Internet User-Agent String Format (v24 unified platform) (checked 20 Oct 2026)
- WebKit Bugzilla 298260, Safari 26 reports iOS 26 version as 18.6 (frozen on purpose) (checked 20 Oct 2026)
- WebKit Bugzilla 298473, frozen Safari iOS version revised to 18_6_2 (macOS precedent) (checked 20 Oct 2026)
- Google Search Central, Google's common crawlers (user agents, spoofing, IP ranges, reverse DNS) (checked 20 Oct 2026)
- Bing Webmaster Blog, user-agent change for bingbot (2022) (checked 20 Oct 2026)
- OpenAI, Overview of OpenAI crawlers (GPTBot, OAI-SearchBot, ChatGPT-User, OAI-AdsBot) (checked 20 Oct 2026)
- Anthropic support, crawlers and how site owners can block them (ClaudeBot, Claude-User, Claude-SearchBot) (checked 20 Oct 2026)
- Perplexity, Perplexity crawlers (PerplexityBot, Perplexity-User) (checked 20 Oct 2026)
- Apple support, About Applebot (checked 20 Oct 2026)
- DuckDuckGo help, DuckDuckBot (checked 20 Oct 2026)
- Meta for Developers, Meta web crawlers (checked 20 Oct 2026)
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