1. Home
  2. Developer tools
  3. User-Agent Parser

User-Agent Parser

Decode the User-Agent lines in server logs, analytics exports and bug reports, or check what your own browser sends.

Free, no sign-up. Runs in your browser: nothing is uploaded.

How to use User-Agent Parser

  1. Your browser’s User-Agent is filled in; paste another to check it.
  2. Read the parsed browser, engine, OS and device.
  3. Optionally read your browser’s Client Hints.

Features

  • Browser, version, engine, OS and device type via the Bowser library
  • Bot and HTTP-library detection (Googlebot, curl, python-requests…)
  • Notes on frozen values such as “Windows NT 10.0” on Windows 11
  • User-Agent Client Hints with full version list in Chromium
  • Sample strings for common browsers

Supported formats

Input

  • Typed or pasted text

You get

  • Screen view

Private by design

Everything you enter is processed by your browser on this device. Nothing is sent to openWorkstand or anyone else, so the User-Agent Parser is safe for private and work data. After you have used it once while online, it also works without an internet connection. How local processing works

Good to know

  • User-Agent strings can be faked and are reduced by modern browsers, so versions and devices may be approximate.

Guide

Decoding User-Agent strings and the Client Hints that replace them

Every HTTP request from a browser carries a User-Agent header that names the browser, its engine and the operating system. Server logs, analytics exports and bug reports are full of these strings, and they are notoriously hard to read: a Chrome string mentions Mozilla, AppleWebKit, KHTML, Gecko and Safari. This parser turns a string into plain facts and shows what your own browser sends, including the newer Client Hints.

Why the strings are so strange

Browsers have copied each other’s tokens for decades to avoid being served degraded pages by sites that checked for a specific browser. Chrome’s string still contains AppleWebKit/537.36 (KHTML, like Gecko) and Safari/537.36 for that reason, and Edge adds Edg/ to the end of a Chrome string. A parser therefore has to look for the most specific token in the right order rather than the first familiar word.

What the parser extracts

The Bowser library identifies the browser and its version, the rendering engine, the operating system with its version and marketing name where known, and the device type: desktop, mobile, tablet or TV. For phones and tablets it also reports the vendor and model when the string includes them, which Android devices often do and iPhones do not.

Spotting bots and scripts

Crawlers and HTTP libraries usually identify themselves, so a pattern match finds names such as Googlebot, Bingbot, GPTBot, curl, wget and python-requests. That is good enough for filtering logs, but anyone can send any User-Agent. To confirm that a visitor claiming to be Googlebot really is, do a reverse DNS lookup of its IP address and check that the name ends in googlebot.com or google.com and resolves back to the same IP.

Frozen and reduced values

To limit fingerprinting, browsers have frozen parts of the string. Chrome and Edge report Windows NT 10.0 on both Windows 10 and 11, Safari and Chrome on Mac always say Mac OS X 10_15_7, and Chrome on Android sends a generic Android 10; K in its reduced form. Minor version numbers are often replaced with zeros. The parser points this out whenever a frozen value appears.

User-Agent Client Hints

Chromium browsers offer a structured replacement. navigator.userAgentData gives brands, a mobile flag and the platform without asking, and getHighEntropyValues returns details such as the platform version, CPU architecture, device model and full version list. Press “Read client hints” to see what your browser reports; Firefox and Safari do not implement the API, and the panel says so.

A worked example

Choosing “Edge on macOS” fills in a string ending in Edg/130.0.0.0. The parser reports Microsoft Edge 130.0.0.0 on macOS 10.15.7 (Catalina), device type desktop, and adds the frozen-value note, because the real macOS version could be much newer than Catalina. The Googlebot sample is identified as a crawler, with the reminder to verify it by DNS.

Use with care

User-Agent strings are fine for statistics and for reading bug reports. They are a poor basis for feature detection or security: check for the feature itself, and never trust a header the client controls.

Checked against the current version of the User-Agent Parser on .

Frequently asked questions

Why does every browser’s string start with Mozilla/5.0?

History. In the 1990s sites served better pages to Netscape (code-named Mozilla), so other browsers copied its token to avoid being sent the basic version. Each new browser kept the habit, and today the token says nothing about the browser.

How do I log the real Windows version of visitors?

Request the Sec-CH-UA-Platform-Version client hint with an Accept-CH response header. Chromium browsers then send it on later requests; a value of 13 or higher means Windows 11. Firefox and Safari do not send it.

Why does my Windows 11 PC show Windows 10?

Browsers froze that part of the string: Chrome, Edge and Firefox send “Windows NT 10.0” on Windows 10 and 11. Only User-Agent Client Hints (platformVersion 13 or higher) reveal Windows 11.

Should I use the User-Agent for feature detection?

No. Test for the feature itself (for example with CSS @supports or by checking that an API exists). User-Agent strings are reduced, frozen and easy to fake, so they are only reliable enough for statistics.

Keep working with the result

openWorkstand also includes a free workspace with documents, spreadsheets, tasks, projects and a calendar that save to a folder on your computer.