User Agent Parser — Parse User-Agent Strings to Detect Browser, OS, Device
Parse User-Agent strings to extract browser, version, OS, device type, and engine. Over 10,000 patterns matched, runs client-side.
User Agent Parser
Parse User-Agent strings — detect browser, OS, device. Works entirely in your browser.
The User-Agent header is one of the oldest HTTP headers, and it shows its age. Every browser since 1995 sends a string that starts with Mozilla/5.0 — a claim to be a browser that no longer exists, made because early web servers sniffed for Mozilla in the User-Agent before serving frames. Chrome adds AppleWebKit and KHTML tokens (engines it does not use) for the same reason. The result is a header that is simultaneously the richest source of client information available to a server and the least reliable. The parser’s job is to extract the signal: which browser, which version, which operating system, and whether the client is a real person or a search engine crawler.
The structured output is useful in three places. First, in analytics: a raw UA column in a CSV export is opaque, but ‘Chrome 125 on Windows 11’ is a filterable dimension. Second, in bot detection: crawlers like Googlebot declare themselves honestly in their User-Agent, and a quick parse distinguishes real traffic from a botnet that spoofs Chrome 60. Third, in support diagnostics: when a user reports a bug, their UA string (grabbed from the browser console or the server log) tells you their browser, OS, and device without a back-and-forth email exchange. Each of those workflows starts with the same step — paste the string and read the breakdown.
For a final hand-off: if the parsing result shows the client is a known crawler, cross-reference the IP with a reverse DNS lookup to confirm it is genuinely from the expected search engine. If the string comes from an analytics pipeline, pair the parsed output with the IP Subnet Calculator to map traffic to geographic regions. If you are relying on User-Agent parsing for security decisions (blocking a browser version), do not — the header is trivially spoofed, and the secure approach is to check client capabilities, not client identity.
How to use
Paste a User-Agent string
Drop a raw User-Agent header value into the input. Copy from browser DevTools (Network tab > Request Headers), a server access log, or an analytics export. The parser extracts the signal from the noise.
Read the structured breakdown
Browser name and version, rendering engine, operating system and version, device category (desktop, mobile, tablet, bot), and device vendor are displayed as separate fields with confidence scores.
Copy for analytics or debugging
Copy the structured JSON for use in analytics filters, bot detection rules, or support diagnostics. Common client hints equivalents are shown alongside the parsed values when available.
Frequently asked
Why do User-Agent strings look like gibberish?
User-Agent strings are a historical accident. Every browser claims to be Mozilla (from the 1995 browser war), every version includes tokens for compatibility with sites that sniffed for specific strings, and the resulting string is a chain of lies that only works because the spec says so. The parser cuts through the historical noise.
Does the parser detect bots and crawlers?
Yes. Googlebot, Bingbot, Baiduspider, YandexBot, and over 250 known crawler patterns are matched. Each bot result includes the crawler name and a 'bot' device type label. Malicious or impersonating bots that spoof a real browser UA are harder to detect and may be misclassified.
What is the difference between this and `navigator.userAgent` in the browser?
`navigator.userAgent` gives you the raw string of the current browser. This tool parses any User-Agent string, not just the one you are running — paste strings from logs, analytics, or HTTP headers collected from other users.
Can it parse User-Agent strings from mobile apps?
Yes. WebView-based apps (iOS WKWebView, Android WebView), React Native fetch calls, and in-app browser views all include a User-Agent that follows the same pattern as the system browser with an app-specific suffix. The parser extracts both the system browser and the app name.
Limitations
- User-Agent Client Hints are preferredThe User-Agent string is being deprecated by Chrome in favour of User-Agent Client Hints (UA-CH), which are structured HTTP headers. This tool parses legacy UA strings but the future is structured hints.
- Spoofed UAs cannot be detectedAn attacker can set their User-Agent to any string. The parser faithfully reports what the string claims, not what the actual device is. Use TLS fingerprinting or client-side detection for high-confidence identification.
- Version detection is best-effortBrowser version parsing relies on the conventions each vendor uses, which change over time. Edge cases like Chromium forks that report a different version in their UA than in `navigator.appVersion` may have minor inaccuracies.
Platform notes
- macOS
- Safari's User-Agent includes `Version/17.x` for the Safari version and `AppleWebKit/605.1.15` for the WebKit engine. The parser separates these and labels the rendering engine correctly for Web Inspector debugging.
- Web
- Runs entirely client-side. Paste a UA string from a server log and get the breakdown without sending any data to a remote parsing service.