See your own user agent string and decode any UA into browser, OS, engine, and device
Mozilla/5.0 (iPhone; CPU iPhone OS 17_5 ...) Version/17.5 Safari/604.1. Parsed, that string means: Safari 17.5, WebKit engine, iOS 17.5, iPhone, mobile. A Windows Chrome UA (Mozilla/5.0 (Windows NT 10.0; Win64; x64) ... Chrome/126.0.0.0 Safari/537.36) means Chrome 126, Blink engine, Windows 10, desktop. Yours is shown below, parsed live — nothing leaves your browser.
| Token | Appears in | What it actually tells you |
|---|---|---|
Mozilla/5.0 | Nearly everything | Nothing, anymore — a 1990s compatibility flag every browser kept |
(Windows NT 10.0; Win64; x64) | Windows browsers | Windows 10 or 11 (both report NT 10.0), 64-bit |
Macintosh; Intel Mac OS X 10_15 | Safari, Firefox on Mac | macOS — version frozen at 10.15 in Safari's UA regardless of real version |
iPhone; CPU iPhone OS 17_5 | iPhone browsers | iOS 17.5 on an iPhone; iPad reports like desktop Safari since iPadOS 13 |
Linux; Android 14; Pixel 8 | Android Chrome | Android 14 on a Pixel 8, mobile build |
AppleWebKit/537.36 (KHTML, like Gecko) | Chrome, Edge, Safari | Shared rendering heritage — KHTML begat WebKit begat Blink |
Chrome/126.0.0.0 | Chromium browsers | Chrome 126 — also present in Edge, Opera, and Brave UAs |
Edg/126.0.0.0 | Edge only | The real Edge marker; read right to left to beat Chromium camouflage |
Firefox/127.0 | Firefox only | The only place Firefox appears — and the engine token is Gecko |
Version/17.5 Safari/604.1 | Safari only | Safari 17.5; the trailing 604.1 is a frozen WebKit build number |
compatible; Googlebot/2.1 | Crawlers | A bot that announces itself, with a documentation URL |
The order matters less than you'd think: the reliable rule is that the last browser token in the string is the real browser. First tokens survive for legacy compatibility; trailing tokens were added by the actual vendor.
| User agent (abbreviated) | Browser | OS / Device | Engine |
|---|---|---|---|
…Windows NT 10.0…Chrome/126.0.0.0 Safari/537.36 | Chrome 126 | Windows 10, desktop | Blink |
…Windows NT 10.0…Chrome/126.0.0.0…Edg/126.0.0.0 | Microsoft Edge 126 | Windows 10, desktop | Blink |
…Mac OS X 10.15; rv:127.0) Gecko/20100101 Firefox/127.0 | Firefox 127 | macOS, desktop | Gecko |
…iPhone; CPU iPhone OS 17_5…Version/17.5 Mobile/15E148 Safari/604.1 | Safari 17.5 | iOS 17.5, iPhone, mobile | WebKit |
…Linux; Android 14; Pixel 8…Chrome/126.0.6478.122 Mobile… | Chrome 126 | Android 14, mobile | Blink |
…(compatible; Googlebot/2.1; +http://www.google.com/bot.html) | Googlebot 2.1 | Bot (Google) | — |
Parsing is done with bowser 2.11.0 (MIT license), loaded from jsDelivr and executed client-side. Your UA string never touches a server — right-click this page, view source, and check: there's no form POST anywhere.
Every HTTP request your browser makes carries a User-Agent header: one long, oddly-punctuated string that grew by accretion since 1993. Sites read it to pick mobile layouts, warn about unsupported browsers, block misbehaving crawlers, or — less nobly — fingerprint you. This tool parses it both directions: it shows and decodes your own string, and it accepts any pasted string so you can test bot filters, debug analytics, or settle an argument about what Edge's UA really says.
Browser name and version, rendering engine (Blink, WebKit, or Gecko), operating system and version, platform type (desktop, mobile, or tablet), and device vendor and model when the UA includes one. Bot UAs are flagged as bots. Strings that aren't browsers at all — curl/8.5.0, custom app agents — return empty fields, which is honest: a UA parser can only report what the string announces.
Hit a sample chip to load a known UA, or paste your own from devtools (Network tab → any request → Request Headers → user-agent). The parse updates as you type. Copy buttons grab either the raw string or individual fields.
Take the iPhone Safari string above. The parser reads Version/17.5 and Safari/604.1 as Safari 17.5, the parenthetical CPU iPhone OS 17_5 as iOS 17.5, and the Mobile/15E148 token as mobile. Platform resolves to vendor Apple, model iPhone. Now the Android string: Linux; Android 14; Pixel 8 gives Android 14 with device model Pixel 8, browser Chrome 126 on Blink, platform mobile. Same five fields, completely different devices — from one header line each.
Your user agent is the string your browser sends with every request, announcing its name, version, operating system, and device. This page shows yours at the top, parsed into browser, engine, OS, and device type. Nothing is sent anywhere — the parsing happens locally in your browser.
Chromium-based browsers append their own token after the Chrome one. Edge ends with Edg/126.0.0.0 and Opera with OPR/, so a parser reads the string right to left: the last meaningful token identifies the actual browser. Left-to-right reading is how sites miscount Edge users as Chrome.
Most bots self-identify. Googlebot sends "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)", and Bingbot, GPTBot, and ClaudeBot follow the same compatible; Name/version; +URL pattern. A parser like bowser returns platform.type "bot" for these. Honest bots are easy; spoofed ones require behavioral checks, not UA sniffing.
Yes. Every major browser has devtools device emulation that overrides the UA, and extensions can set an arbitrary string. That's why user agent stats are approximate: some traffic lies. Sites that gate content on UA sniffing break the moment a browser updates its string, which is one reason UA client hints now exist.
It doesn't — but it does mention "Mozilla/5.0" and "Gecko" because Safari keeps historical tokens that once meant "Mozilla-compatible" and "Gecko-engine-compatible". Nearly every browser starts with Mozilla/5.0 for the same legacy-compatibility reason. The tokens that matter for Safari are Version/x and Safari/x at the end.
For coarse facts — browser family, OS, mobile vs desktop — yes, and it remains the only method that works without JavaScript or client cooperation. For exact versions it's getting weaker: Firefox and Chrome have both frozen or reduced UA strings, and Google's User-Agent Client Hints now serve precise versions only on request via Sec-CH-UA headers. Treat parsed versions as good approximations.