Skip to content
AZ Tools

User Agent Parser

Parse a User-Agent string into browser, engine, OS, device, and CPU. Detects 20+ bots including GPTBot, ClaudeBot, PerplexityBot.

Paste a User-Agent string above.

Parsing runs entirely locally. Regex-based — same approach as ua-parser-js, with simpler rules and recent bot signatures (GPTBot, ClaudeBot, PerplexityBot).

How to use

  1. By default, your own browser's User-Agent is parsed.
  2. Click 'Use current' to refresh from navigator.userAgent, or paste any UA string.
  3. Read the parsed fields. Bots get a special highlight.

About this tool

Show

The User-Agent header is the messy, free-form string browsers send to identify themselves. This parser uses pragmatic regex matching (the same approach as ua-parser-js) to extract the browser name + version, rendering engine, OS + version, device type/vendor/model, and CPU architecture. Auto-fills with your current browser's UA on load. Useful for analytics debugging, bot identification, and understanding what your server logs are seeing.

The string is a fossil record of thirty years of compatibility lies, which is why every parser is regex guesswork rather than a specification. Chrome still announces itself as Mozilla/5.0 and claims to be like Gecko and Safari, none of which is true, because sites once sniffed for those tokens before serving the good version of a page. Every browser inherited the habit, so the header is a list of what a browser wants to be mistaken for, in historical order.

Useful detail is being deliberately removed. Chrome cut the version number in the UA down to its major release and froze the platform string years ago and moved the real values behind Client Hints, Safari has reported a fixed macOS version since Catalina, and both iPadOS and desktop-mode browsers identify as something they are not. A parser reading those strings reports what the browser wants reported, which for OS version in particular is now a constant rather than a fact.

Nothing here is a security boundary, which is the important part. The header is a request field the client fills in, so a bot that wants to look like Chrome simply says so, and feature detection is the only reliable way to know whether something is supported. Blocking on user agent filters out honest crawlers and inconveniences real users on unusual browsers while stopping nobody who cares.

The device model field is the least trustworthy of the lot. Android vendors fill it with anything from a marketing name to an internal codename, iOS never reveals it at all, and desktop browsers leave it empty. An analytics breakdown by device model is a breakdown of what Android manufacturers chose to disclose.

Frequently asked questions

Why are user-agent strings so weird?

Historical compatibility hacks. Every browser pretends to be 'Mozilla/5.0' because old servers gated content on that string. Chrome adds 'Safari' because old WebKit detection used that. The cargo cult never ends.

Will Client Hints (UA-CH) replace this?

Slowly. Chrome is freezing UA contents (User-Agent Reduction) and offering structured Client Hints headers (Sec-CH-UA-*) as the replacement. For now, both coexist. This parser works on the legacy UA string.

How accurate is bot detection?

Reliable for honest bots (Googlebot, Bingbot, GPTBot, ClaudeBot — they identify themselves). Useless against bad-faith bots that spoof a desktop Chrome UA. For those you need behavioral fingerprinting or CAPTCHAs.

Why doesn't it show device model on iOS?

iOS user agents do not include a specific model — they all say 'iPhone' or 'iPad'. At best you can guess from the screen dimensions.

Related tools