↑↓ to move ↵ to open Esc to close Browse all tools

User Agent Parser

See what your browser's user agent string says, and what its Client Hints add, then paste any user agent string or a whole list to read it as browser, engine, operating system and device.

User agent parser

Your browser
-

    Your user agent string

    Client Hints from your browser

    Paste one user agent string, or a list with one per line, for example from a server log.

    Try:

    Everything is parsed in your browser. Nothing you paste is uploaded.

    What a user agent string tells you

    Every browser sends a User-Agent header with each request, and pages can read the same text as navigator.userAgent. MDN describes the common format as Mozilla/5.0, then the system information in brackets, then the engine and the browser with their versions. This user agent parser reads those tokens and turns them into four answers: the browser and its version, the rendering engine (Blink, WebKit, Gecko and older ones like Trident), the operating system and its version, and the device type: mobile, tablet, desktop, TV, game console or bot.

    The order of the checks matters, because browsers name each other. Edge, Opera and Samsung Internet all contain the word Chrome, and Chrome contains the word Safari. So the parser looks for the most specific token first: Edg before Chrome, CriOS for Chrome on iPhone, FxiOS for Firefox on iPhone, Version together with Safari for Safari itself. Crawlers, link preview fetchers and HTTP tools such as curl are recognized by their own tokens and marked as bots, even when they also imitate a browser.

    MDN's own guide to browser detection warns that user agent sniffing is hard to do reliably and recommends testing for the feature you need instead. A user agent parser is the right tool for logs, analytics, support tickets and bug reports, where you want to know who visited, not for deciding what a page may do.

    Frozen values: what the string no longer tells you

    Browsers have stopped updating parts of the string, partly because sites broke on new version numbers and partly to reduce how much the string reveals about you. These values look exact but are fixed:

    The string saysSent byHidden
    Intel Mac OS X 10_15_7Safari and Chrome on any newer MacThe macOS version
    Intel Mac OS X 10.15Firefox on macOS 10.15 or newerThe macOS version
    Windows NT 10.0Windows 10 and Windows 11Which of the two
    Android 10; KChrome on Android since version 110The Android version and the phone model
    Chrome/143.0.0.0Chrome and Chromium browsers since version 101Everything after the major version
    iPhone OS 18_6 with Version/26Safari 26 on iOS 26 and iPadOS 26The iOS version
    • Chrome rolled out its user agent reduction in phases: the minor version became 0.0.0 in Chrome 101, the desktop platform became fixed in Chrome 107 (Windows NT 10.0; Win64; x64, Intel Mac OS X 10_15_7, X11; Linux x86_64 and a fixed ChromeOS value), and Android became Android 10; K in Chrome 110. Edge, Opera and Samsung Internet follow the same format.
    • Safari limited the reported macOS release to the 10.15 series in 2020, because sites were not ready for macOS 11 (WebKit bug 216593), then settled on 10_15_7 (bug 217364). The Safari 26 release notes add that on iOS 26 and iPadOS 26, Safari reports a frozen OS version, the last one before iOS 26, which is why an iPhone on iOS 26 shows iPhone OS 18_6 next to Version/26.0. Safari 26 comes with iOS 26, so the parser reads the Safari version as the likely iOS version.
    • Firefox caps the reported macOS version at 10.15 (Mozilla bug 1679929).
    • Windows 10 and 11 both report version 10.0, as Microsoft's table of version numbers shows, and Microsoft says the user agent string will not be updated to tell them apart.
    • iPad: since Safari 13, Safari on iPad shows the same desktop websites as Safari on a Mac, and when Safari on iPhone or iPad asks for the desktop site it sends the Mac string (WebKit bug 241322). Such an iPad reads as a Mac.

    The parser marks every frozen value with "(frozen)" and explains it in a note, so a report does not claim that half your visitors run macOS 10.15.7.

    User-Agent Client Hints: the details that left the string

    The details that were frozen moved to User-Agent Client Hints. A few low-entropy values come with every request and are free to read: the brand list, whether the device is mobile, and the platform name. The rest, such as the full version, the platform version, the device model, the CPU architecture and bitness, are high-entropy values that a page must ask for with getHighEntropyValues(), and the browser decides whether to hand them out.

    At the top of this page you see your own browser twice: once read from the user agent string and once from Client Hints, side by side. On Windows, Microsoft documents how the platformVersion hint separates Windows 11 (13 or higher) from Windows 10 (1 to 10). On Android, the hints give the real Android version and model behind Android 10; K. On a Mac, they give the real macOS version.

    The brand list also contains an entry that looks like nonsense, for example Not)A;Brand. The Client Hints specification asks browsers to add such made-up brands and to change their order over time, so that sites cannot depend on an exact list of names. The page labels that entry, and ignores it when it picks the browser name.

    According to MDN's compatibility data, Client Hints in JavaScript are available in Chrome from version 90, in Edge and Opera, and in Samsung Internet from version 23, but not in Firefox or Safari. In those browsers the user agent string is all there is, and the page says so.

    Parsing a list and exporting CSV

    Paste many user agent strings at once, one per line, for example a column copied from a server log or an analytics export. The parser reads every line, shows a summary by device type and browser, lists the first 200 in a table, and puts all of them in a CSV file with one row per string: browser, version, engine, operating system, device type, vendor, model, bot name and the notes. Empty lines are skipped. Cells that start with =, +, - or @ get a leading apostrophe so a spreadsheet does not run them as formulas. To count each user agent once, run the list through remove duplicate lines first. To pull user agents out of raw log lines, match them with the regex tester, and to see what a server sends back, use the HTTP header checker.

    Bots deserve a second look. A user agent that says Googlebot proves nothing, because any program can send it. Google documents how to verify Googlebot with a reverse DNS lookup of the IP address followed by a forward lookup, or by matching the IP against the ranges it publishes. Other crawler operators publish similar instructions.

    How to use the user agent parser

    1. 1Look at your own browser at the top, with the user agent string and, in Chromium browsers, the Client Hints next to it.
    2. 2Paste any user agent string, or a list with one per line, or press one of the examples.
    3. 3Read the browser, engine, operating system and device, check the notes on frozen values, then copy the result or download the CSV.

    Frequently asked questions

    What is a user agent string?

    It is a short text that every browser sends to every website in the User-Agent request header, and that scripts can read as navigator.userAgent. It names the browser, its engine and the operating system. Almost every browser starts it with Mozilla/5.0 for historical reasons, and many name other browsers too, which is why a parser has to know the order of the tokens.

    Why does my Mac show macOS 10.15.7?

    Safari and Chrome send Intel Mac OS X 10_15_7 on every newer Mac. WebKit froze the version in 2020 because many sites were not ready for macOS 11, and Chrome did the same as part of its user agent reduction. Firefox caps the version at 10.15. The real version is only available through Client Hints in Chromium browsers.

    Why does Chrome show a version like 143.0.0.0?

    Since Chrome 101, Chrome and the browsers built on it replace the minor, build and patch numbers with zeros. The major version is real. The full version is available through User-Agent Client Hints, which this page shows for your own browser when it supports them.

    How can I tell Windows 11 from Windows 10?

    Not from the user agent string: both send Windows NT 10.0. In Chrome, Edge and Opera, the platformVersion Client Hint tells them apart. Microsoft documents that a major version of 13 or higher means Windows 11, and 1 to 10 means Windows 10. This page shows the result for your own browser.

    Can I trust a user agent that says Googlebot?

    No, not on its own. Any program can send any user agent. Google documents how to verify Googlebot: a reverse DNS lookup of the IP address must end in googlebot.com, google.com or googleusercontent.com and a forward lookup must lead back to the same IP, or the IP must be in the ranges Google publishes.

    Why is an iPad shown as a Mac?

    Since Safari 13, Safari on iPad shows the same desktop websites as Safari on a Mac, and when Safari on iPhone or iPad asks for the desktop site, it sends a Mac user agent. From the string alone, such an iPad looks like a Mac running Safari, so the parser adds a note to every Safari on Mac result.

    Is my user agent sent anywhere by this tool?

    No. The parser runs in your browser and sends nothing. Your browser already sends its user agent to every site you visit, including this one, as part of each request; this page only reads it locally to show you what it contains.