Skip to content
epitometool

User-agent (UA) parser

Dev quality-of-life

Parse a UA string into browser, OS and device details.

Updated

User-Agent string

Try a sample

Parsed

Browser
Unknown
Engine
Unknown
Operating system
Unknown
Device type
desktop
CPU

Quick start

How to parse a User-Agent string

Paste any UA string — see browser, engine, OS, device and CPU detected automatically.

  1. Step 1
    Paste a UA

    The textarea pre-fills with your own browser's UA. Paste another to analyse it, or pick a sample.

  2. Step 2
    Read the fields

    Browser / engine / OS / device / CPU detected via regex patterns covering 95% of real-world strings.

  3. Step 3
    Copy

    Click Copy to grab the raw UA for your own logs or bug reports.

In-depth guide

User-Agent parser — browser, engine, OS, device

Decode any User-Agent string into its constituent parts: browser name and version, rendering engine, operating system, device type and CPU architecture. Pre-filled with your current browser's string; try a sample or paste any UA you've captured from logs.

Anatomy of a User-Agent

A typical modern UA looks like:

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36
  • Mozilla/5.0 — historic compatibility token. Every browser claims it.
  • (Macintosh; Intel Mac OS X 10_15_7) — platform descriptor.
  • AppleWebKit/537.36 (KHTML, like Gecko) — engine identification (Chrome lies about being WebKit; WebKit lied about being Gecko).
  • Chrome/121.0.0.0 — the actual browser and version.
  • Safari/537.36 — final compatibility marker.

Why every browser pretends to be every other browser

In the 1990s, websites sniffed for "Mozilla" before serving frames. So IE added Mozilla. Then sites sniffed for "Gecko" before serving modern features. So Safari added Gecko. Then Chrome added Safari. The string has accumulated decades of these compatibility scars — which is exactly why all browser-detection libraries check for the most specific identifier first.

When to use UA detection (and when not to)

Use UA detection for:

  • Server-side logging and analytics.
  • Choosing a download (.deb vs .dmg vs .exe).
  • Routing to a mobile-specific app store link.

Avoid UA detection for:

  • Feature detection — use 'IntersectionObserver' in window, not "is this Chrome?".
  • Security decisions — the string is trivially spoofable.
  • Tracking users — modern browsers freeze the UA to reduce fingerprinting.

Frequently asked questions

Does this tool send my user-agent anywhere?

No. Parsing happens in your browser. The string is never POSTed, logged or stored.

How accurate is the detection?

It covers 95% of real-world user-agents through regex patterns for the major browsers, engines and OSes. Niche or spoofed strings may show 'Unknown' for some fields.

Why does my browser show 'Chrome' inside the Safari user-agent?

All Chromium-based browsers historically include 'Safari' and 'AppleWebKit' tokens for compatibility. Order of detection matters — we check for Edge / Opera / Brave first, then Chrome, then Safari as fallback.

What about Client Hints?

Modern browsers expose a structured navigator.userAgentData object that gradually replaces the legacy string. This tool parses the classic string. Both still work for now.

Can I detect operating system version reliably?

Increasingly no — Chrome and Safari now freeze the reported version to reduce fingerprinting. macOS user-agents stop at 10.15.7 even on newer versions. iOS reports a generic version. Be skeptical of any minor-version detection.

Is this anonymous?

Yes — nothing is uploaded. The user-agent prefilled in the field is your own browser's, fetched from navigator.userAgent. You can paste any other string to analyse it.

Keep exploring

More tools you'll like

Hand-picked utilities that pair well with the one you're on — all free, client-side, and zero-signup.