Parse any User-Agent string into browser, engine, OS, device type and bot flag — paste a log line or read your own — browser-only
- Runs locally
- Category Developer & DevOps
- Best for Formatting, validating, shrinking, or inspecting code-adjacent text.
What this tool does
Free online User-Agent parser. Paste any User-Agent string — from a web server access log, an analytics export, or your own browser — and instantly get the structured breakdown: browser name and version, rendering engine (Blink / WebKit / Gecko / Trident), operating system and version, device type (desktop / mobile / tablet), vendor and model where the string reveals it, plus a bot/crawler flag that names the crawler (Googlebot, Bingbot, GPTBot, ClaudeBot, curl, and dozens more).
The matching order is the whole game with User-Agent strings: Chrome reports a "Safari" token, Edge reports a "Chrome" token, and every WebKit/Blink browser lies with "like Gecko". This parser tries the most specific signature first — Edge before Chrome, Chrome before Safari, Firefox-on-iOS before Safari — so a Chromium-derived browser is never mislabelled as plain Chrome. It also untangles the modern traps: Windows NT 10.0 maps to "10/11", iPad on iPadOS 13+ that masquerades as a Mac is correctly flagged as a tablet, and Chrome-on-iOS (CriOS) is reported as Chrome even though WebKit is doing the rendering.
Everything runs in your browser with hand-written regular expressions — no external API, no ua-parser-js download, nothing uploaded. Click "Parse my browser" to read your own navigator.userAgent, share the parse via a URL that carries the string, or copy the full result as JSON to paste into a bug report. 100% client-side.
Tool details
- Input
- Text
- The page exposes text boxes, numeric controls, file pickers, or structured inputs depending on the tool.
- Output
- Live result + Copy
- The result area focuses on usable output, with copy, download, or preview actions when supported.
- Privacy
- Browser-side processing
- The main tool logic does not call an external API, so inputs normally stay in the current tab.
- Save / share
- Shareable URL state
- Key settings are encoded in the URL so another person can reopen the same setup.
- Performance budget
- Initial JS <= 9 KB
- No WASM budget is declared, keeping the tool quick to open on mobile.
- Best fit
- Developer & DevOps · Developer
- Category and role tags drive related tools, internal links, and quick fit checks.
How to use
-
1. Input
Paste or drop your content into the tool panel.
-
2. Process
Click the button. All processing is local in your browser.
-
3. Copy / Download
Copy the result or download to disk in one click.
How User-Agent Parser fits into your work
Use it in the small gaps between coding, reviewing, debugging, and shipping.
Developer jobs
- Formatting, validating, shrinking, or inspecting code-adjacent text.
- Preparing snippets for documentation, tickets, commits, or handoff.
- Checking a small payload quickly without switching tools.
Developer checks
- Run irreversible transforms like minify or obfuscate on a copy.
- Keep secrets out of pasted snippets unless the tool explicitly stays local.
- Use your normal tests or linter before shipping transformed code.
Good next steps
These links move the current task into a more complete workflow.
- 1 JWT Decoder Decode JWT header / payload / signature — verify structure, check exp, copy claims — browser-only Open
- 2 HTTP Status Code Explorer HTTP status code explorer — all 70+ codes with meaning, common causes, real examples, and what to check. Open
- 3 DNS Record Explainer DNS record explainer — all 18 common record types (A, AAAA, CNAME, MX, TXT, SRV, etc.) with syntax, examples, and gotchas. Open
Real-world use cases
Audit a noisy access log to separate humans from bots
Your nginx access log shows 40k hits overnight and the traffic graph spiked. Grab a handful of distinct User-Agent values from the log, paste each here, and the bot flag tells you instantly whether the spike is AhrefsBot and GPTBot crawling you or actual users. Naming the crawler (not just flagging "bot") lets you decide whether to add it to robots.txt, rate-limit it, or leave it — Googlebot you keep, a no-name scraper you block.
Confirm a "device type" bug in your analytics
A PM says mobile conversions cratered, but your analytics shows a chunk of iPad traffic landing in "desktop". Paste the iPad User-Agent — since iPadOS 13 it sends a Macintosh string with a Mobile token, and most naive parsers call it desktop. This tool reports it as a tablet, which is your evidence that the analytics vendor's parser is the bug, not your funnel.
Reproduce a rendering bug reported by one browser
A user pastes "the page looks broken" with a screenshot and their UA string from your support widget. Paste it here to get the exact browser, version, and engine — say Samsung Internet 23 on Android 14, Blink engine. Now you know to test in Samsung Internet (not generic Chrome) and which Blink version's quirks to check, instead of guessing from "Android Chrome-ish".
Verify your feature-detection fallback fired for old engines
You shipped a CSS feature with a Trident/Gecko fallback. A log line from a corporate client shows Trident/7.0 — IE 11. Paste it to confirm the engine is Trident, then check that your fallback path (not the modern path) is what that engine would have received. Catches the "we assumed everyone is on Blink" class of bug.
Build a quick allow/deny list for an API gateway
You want your API to reject obvious scripted clients but allow real browsers and named search bots. Run a sample of incoming UA strings through the parser: curl, Python-requests and Go-http-client get named explicitly, HeadlessChrome is flagged, and real browsers come back clean. That mapping becomes your gateway rule set without you hand-writing every regex.
Common pitfalls
Substring-matching 'Chrome' to detect Chrome. Edge, Opera, Samsung Internet and every Chromium browser all carry a Chrome/ token. Always test the most specific brand (Edg/, OPR/, SamsungBrowser/) BEFORE the generic Chrome/ — which is exactly the order this parser uses.
Trusting the 'Mobile' token alone for device type. An iPad on iPadOS 13+ sends a Macintosh string WITH a Mobile token; reading only 'Mobile' or only 'Macintosh' gets it wrong. You need the combination — Macintosh plus Mobile equals tablet, not desktop.
Reading the version from the 'Safari/' or 'AppleWebKit/' token. Those are the engine build number, not the browser version. Safari's real version lives in the 'Version/' token; using the wrong one makes a Safari 17 look like Safari 605.
Privacy
Parsing is a set of hand-written regular expressions that run entirely in your browser tab — no external API call, no ua-parser-js download, no User-Agent string ever sent to a server, no logging of what you parsed. "Parse my browser" reads your local navigator.userAgent and keeps it in the page. The one caveat to know: the shareable URL state encodes the UA string in the query string, and your last-inspected UA is cached in this tool's localStorage namespace on your own device. So if you paste a "share link" into Slack or a ticket, the destination server's access log records that UA string. For a normal browser UA that is harmless; if the string embeds an internal app name or build identifier you would rather not leak, copy the JSON result manually instead of sharing the URL.
FAQ
Tool combos
Folks in your role tend to reach for these alongside this tool.
- 555 Timer Calculator Astable f = 1.44/((R1+2R2)C) + monostable t = 1.1RC — pick R1, R2, C in Ω/kΩ and µF/nF, read frequency, duty cycle and pulse width — browser-only
- Add Line Numbers Number every line of pasted text — set start, step and separator, zero-pad to align, skip blanks, or strip numbers back off — browser-only
- AES Text Encryptor Encrypt & decrypt text with a password — AES-256-GCM + PBKDF2 via WebCrypto — 100% in your browser, nothing uploaded
- Affine Cipher Encoder & Decoder Encrypt and decrypt the ax+b affine cipher with live modular-inverse check, browser-only