Skip to content

User Agent Tester

Paste one string from a server log, an analytics export or your browser's developer tools.

Browser —
Rendering engine
—
Operating system
—
Device type
—
Crawler or bot
—
Characters
—

Paste a user-agent string and the tester names the browser, its version, the rendering engine, the operating system and the device type, and flags crawlers. For example, Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0 reads as Firefox 47.0 on the Gecko engine, running Windows 10 or 11 on a desktop.

About this tool

Server logs, analytics exports and bug reports all carry a user-agent header, and reading one by eye is harder than it looks: nearly every browser starts with Mozilla/5.0, Chrome claims to be Safari, and Edge claims to be Chrome. This tester applies the token order that browser vendors document, checking Edge, Opera and Samsung Internet before Chrome and Chrome before Safari, so the name it reports is the real product. You also get the engine, the operating system, the device class, a crawler flag for bots such as Googlebot, Bingbot and GPTBot, and a table of every product/version token in the string. One limit: a user agent is self-reported text. It can be spoofed, and modern browsers freeze parts of it, so treat the result as what the client claims, not proof.

How to use it

  1. Paste the string

    Copy one user-agent value from a log line, an analytics report or the Network panel of your developer tools and paste it into the box.

  2. Read the browser line

    The headline shows the browser and its version; the stats below give engine, operating system, device type and the crawler flag.

  3. Check the token table

    Each product/version pair in the string is listed, which helps when a custom app or library adds its own token.

  4. Note the warnings

    Frozen values such as Windows NT 10.0 or macOS 10.15.7 are pointed out, since they hide the real version.

Examples

Firefox on Windows

User-agent string
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0

Result Browser: Firefox 47.0
Rendering engine: Gecko
Operating system: Windows 10 or 11
Device type: Desktop
Crawler or bot: No
Characters: 78

  1. Browser token matched: Firefox 47.0.
  2. Operating system read from the platform section: Windows 10 or 11.
  3. Device type: Desktop.

The rv: and Gecko/20100101 tokens mark Gecko, and Firefox/47.0 names the browser. Windows NT 10.0 covers both Windows 10 and 11.

Googlebot from a server log

User-agent string
Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)

Result Browser: Googlebot 2.1
Rendering engine: Unknown
Operating system: Unknown
Device type: Bot
Crawler or bot: Yes – Googlebot
Characters: 72

  1. Browser token matched: Googlebot 2.1.
  2. Operating system read from the platform section: Unknown.
  3. Device type: Bot.

The Googlebot/2.1 token flags a crawler. Anyone can send this string, so a reverse DNS check is what confirms it really came from Google.

Safari on an iPhone

User-agent string
Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Mobile/15E148 Safari/604.1

Result Browser: Safari 17.0
Rendering engine: WebKit
Operating system: iOS 17.0
Device type: Mobile
Crawler or bot: No
Characters: 135

  1. Browser token matched: Safari 17.0.
  2. Operating system read from the platform section: iOS 17.0.
  3. Device type: Mobile (string contains "Mobi" or iPhone).

Safari's version comes from the Version/ token, not Safari/604.1, which is a WebKit build number.

How it is calculated

browser = first matching token in the order Edg, OPR, SamsungBrowser, Firefox, CriOS, Chrome, then Version + Safari

token
a product/version pair such as Chrome/120.0.0.0 inside the string
platform section
the text in the first parentheses, which names the operating system and often the device
Mobi
the substring MDN recommends as the signal for a mobile device

Browsers copy each other's tokens for compatibility, so the order of checks decides the answer. Edge, Opera and Samsung Internet all include Chrome/, and Chrome includes Safari/, so the more specific token is tested first. Safari's own version is read from Version/. The engine follows from Gecko/ with rv:, from Trident, or from AppleWebKit, which is reported as Blink when a Chromium token is present outside iOS. Crawler names are matched before anything else.

When not to use it

  • To verify that a visitor really is Googlebot or Bingbot, use a reverse DNS lookup on the IP address instead.
  • For feature support decisions in your own code, test the feature directly rather than branching on the browser name.
  • For exact Windows 11 or newer macOS versions, read User-Agent Client Hints, because the classic string freezes those values.

Common mistakes

  • Reading Safari/537.36 in a Chrome string as proof the visitor used Safari.
  • Taking the Mozilla/5.0 prefix to mean Firefox, when almost every browser sends it.
  • Pasting a whole log line, including the IP and request path, instead of just the user-agent field.

Frequently asked questions

Why does every user agent start with Mozilla/5.0?

In the 1990s servers sent richer pages only to Netscape, whose code name was Mozilla. Other browsers copied the prefix to get those pages, and the habit stuck. Today Mozilla/5.0 tells you almost nothing; the later tokens identify the browser.

Why can't it tell Windows 10 from Windows 11?

Microsoft kept the Windows NT 10.0 token for Windows 11, so both versions send identical text. Chromium browsers expose the real version only through the Sec-CH-UA-Platform-Version client hint, which a pasted string does not include.

Is a Googlebot user agent proof the request came from Google?

No. Any script can send that header. Google documents a reverse DNS check: the IP should resolve to a googlebot.com or google.com host, and that host should resolve back to the same IP.

Why does my Mac show macOS 10.15.7 when I run a newer version?

Safari, Chrome and Firefox freeze the macOS version at 10.15.7 in the user agent to reduce fingerprinting and avoid breaking sites that parse the number. The real version is available only through client hints.

How does it decide between mobile, tablet and desktop?

A string with iPad or Tablet, or Android without Mobile, is treated as a tablet. A string containing Mobi, iPhone or iPod is mobile. Everything else is desktop, and any recognised crawler is reported as a bot.

Is the string I paste sent to a server?

No. The parsing runs in your browser with pattern rules, so log data you paste stays on your device.