Every request your browser makes announces itself with a single line of text — the user agent. That line is why sites know to serve you the mobile layout, why your analytics dashboard has a "Safari 17.5, iOS" row, and why Google's crawler shows up under its own name. Here's how to see yours, what each cryptic token actually means, and what the string can and can't tell a website about you.
Our parser decodes your UA into browser, engine, OS, and device — client-side, nothing uploaded.
Open the User Agent ParserThree ways, fastest first:
navigator.userAgent and decodes it in front of you. Nothing is sent anywhere; view source and confirm.user-agent. This shows the real header, which matters if you've enabled device emulation.navigator.userAgent and press Enter.A typical Windows Chrome user agent:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36
Read it in chunks:
Mozilla/5.0 — the ancient compatibility flag. Every browser claims it; it means nothing.(Windows NT 10.0; Win64; x64) — Windows 10 or 11 (both report NT 10.0), 64-bit.AppleWebKit/537.36 (KHTML, like Gecko) — rendering-engine lineage: KHTML begat WebKit.Chrome/126.0.0.0 — Chrome 126, engine Blink.Safari/537.36 — another historical token, present even in Chrome. Ignore it.The parsing rule that matters: read right to left. The last meaningful browser token is the real one. Edge adds Edg/126.0.0.0 after Chrome's token; Opera adds OPR/. A left-to-right reader reports every Chromium browser as Chrome, which is exactly how sites miscount Edge out of existence.
| Platform | Distinguishing token | Parses as |
|---|---|---|
| iPhone Safari | iPhone; CPU iPhone OS 17_5 … Version/17.5 Mobile/15E148 | Safari 17.5, iOS 17.5, mobile, WebKit |
| Android Chrome | Linux; Android 14; Pixel 8 … Mobile Safari | Chrome 126, Android 14, Pixel 8, mobile |
| Mac Firefox | Macintosh; Intel Mac OS X 10.15; rv:127.0) Gecko/ Firefox/127.0 | Firefox 127, macOS, desktop, Gecko |
| Google's crawler | compatible; Googlebot/2.1; +http://www.google.com/bot.html | Googlebot 2.1, platform type: bot |
Two quirks worth knowing. Safari freezes the macOS version at 10.15 in its UA regardless of what you're running. And since iPadOS 13, iPads identify as desktop Safari — so "desktop" traffic secretly contains iPads.
Because the web rewarded lying. In 1994-96, servers sniffed for "Mozilla" (Netscape) and served crippled content to everything else — so Internet Explorer claimed to be Mozilla. Later browsers inherited the token the same way, each adding its own name after the fact. The string is an archaeological dig: Mozilla at the top for the 90s, KHTML and Gecko for the 2000s, and the actual browser name at the far right where it was last buried.
Not alone — a stock Chrome-on-Windows UA is shared by millions of sessions. But it's a standard input to browser fingerprinting: paired with screen resolution, installed fonts, and canvas behavior, it helps shrink "unknown browser" into "probably this machine." That's why Chrome's User-Agent Reduction froze the minor version (126.0.0.0 forever) and why the industry is migrating to User-Agent Client Hints, where precise details are served only to sites that ask with a specific header and a stated reason.
Practical takeaway: if a site's "your browser is unique among 200,000 visitors" fingerprint test scares you, the UA string is one of the easier signals to normalize — but changing it can also make you more rare, not less. A slightly-off UA is itself a fingerprint.
Honest crawlers identify themselves in the open. Googlebot's UA contains compatible; Googlebot/2.1; +http://www.google.com/bot.html; OpenAI's GPTBot, Anthropic's ClaudeBot, and Bing's bingbot follow the same Name/version; +URL pattern so site owners can find their documentation and choose to allow or block them in robots.txt. A parser like bowser returns platform.type: "bot" for these. What UA parsing cannot do is catch a scraper wearing a stolen browser string — that takes rate analysis and IP reputation, not string matching.
Open any user agent checker (ours parses yours live and entirely in your browser), or open devtools: Network tab, click any request, look for the user-agent line under Request Headers. Command line users can hit a UA echo endpoint with curl, or just read the header their HTTP library sends.
Legacy compatibility from the 1990s browser wars. Servers used to gate features by sniffing for "Mozilla", so every browser that came later claimed the token to get the good version of pages. It survives because removing it would break sites that still check — the web's longest-running white lie.
On its own, no — a stock Chrome-on-Windows UA is shared by millions. But it's one input to fingerprinting: combined with screen size, fonts, and other headers, it narrows a browser down considerably. Freezing or reducing the UA string, as Chrome and Firefox now do by default, exists precisely to shrink that surface.
Yes, and they do — paywalls block "bot" UAs, video sites serve different layouts to phones, and scrapers get 403s. It's also trivially bypassed with a one-line override, which is why serious bot management pairs UA checks with IP reputation and behavior analysis.