User-Agent String Parser

Paste a User-Agent header and break it down into browser, engine, OS, and device — including bot detection

Samples:

Paste or pick a User-Agent string

About this tool

The ToolNinja User-Agent Parser breaks down any User-Agent HTTP header string into its component parts: browser name and version, rendering engine, operating system, and device type — plus built-in detection for common bots and crawlers (Googlebot, Bingbot, GPTBot, ClaudeBot, PerplexityBot, and others). User-Agent strings are famously inconsistent — nearly every browser includes tokens for other browsers' names for historical compatibility reasons (Chrome's UA string contains "Safari", Edge's contains both "Chrome" and "Safari"), so naive substring matching gets the wrong answer constantly. This tool checks the more specific tokens first (Edge, Opera, Brave, Samsung Internet) before falling back to the generic ones, the same ordering approach real User-Agent parsing libraries use. Everything runs 100% in your browser using pattern matching — no User-Agent string you paste here is ever sent anywhere, including your own, which the tool also offers to pre-fill for convenience.

When to use it

  • →Decoding a User-Agent string from server access logs to understand your traffic's browser/OS mix
  • →Checking whether a request came from a known bot or crawler (and which one) before deciding how to handle it
  • →Debugging a browser-specific bug by confirming exactly which browser version and engine a bug report's User-Agent represents
  • →Sanity-checking a custom User-Agent string before shipping it in an API client or scraper

Tips

  • ◆Device type (mobile/tablet/desktop) is inferred from UA tokens, not screen size — a desktop UA spoofed to claim 'Mobile' will still report as mobile.
  • ◆Bot detection checks for known crawler signatures first, since bots often include a browser-like UA string alongside their actual identifier.
  • ◆Click 'Load my own User-Agent' equivalent by just opening the tool — it pre-fills with navigator.userAgent automatically.

Frequently asked questions

Why does Chrome's User-Agent string contain the word 'Safari'?

For historical compatibility — early websites checked for "Safari" or "Gecko" tokens to decide whether a browser supported certain features, so when newer browsers (Chrome, then Edge, Opera, Brave) were built on WebKit/Blink, they kept those legacy tokens in their UA string so they wouldn't get incorrectly blocked by old sniffing logic. The only reliable way to identify the actual browser is to check for its own distinguishing token (Chrome/, Edg/, OPR/) in the right priority order.

Can a User-Agent string be faked?

Yes, trivially — any HTTP client, browser extension, or a single line of fetch() code can set an arbitrary User-Agent header. Never use User-Agent parsing as a security control; it's useful for analytics, debugging, and basic content adaptation, not for verifying who's actually making a request.

Why is Chrome's rendering engine listed as 'Blink' and not 'WebKit'?

Chrome forked WebKit's rendering engine in 2013 and the fork was named Blink. Chrome's UA string still contains an AppleWebKit/ token for legacy compatibility reasons (the same reason it contains "Safari"), but the actual rendering engine running in modern Chrome, Edge, Opera, and Brave is Blink.

Related tools

🥷 ToolNinja