Skip to content
Free tool · No signup · Nothing to install

Free user agent parser

Paste any user agent string to see the browser, version, operating system, device type and rendering engine. Your own user agent is filled in already.

Showing a sample string until your browser's own is read.

Parsed user agent
Browser Chrome 128.0.0.0
Rendering engine Blink 128.0.0.0
Operating system Windows 10
Device type desktop
Device Unknown
CPU architecture amd64
Bot or automation No known bot token

What a user agent string tells you

Chrome 128 on Windows, split into its six parts
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36
1 Mozilla/5.0
A compatibility token every major browser still sends. Servers in the 1990s only served advanced pages to Netscape, whose codename was Mozilla, so everyone else copied it.
2 (Windows NT 10.0; Win64; x64)
The platform. Windows NT 10.0 is Windows 10 or 11, Win64 and x64 say the browser and the processor are both 64-bit.
3 AppleWebKit/537.36
The engine token. Chrome froze this number at 537.36 in 2013 when it forked WebKit into Blink, so the value no longer changes.
4 (KHTML, like Gecko)
A claim of compatibility with Firefox's Gecko engine, inherited from Konqueror's KHTML by way of Safari.
5 Chrome/128.0.0.0
The real browser and its major version. Since Chrome 101 the minor, build and patch numbers are zeroed for privacy.
6 Safari/537.36
A second compatibility token, kept so that sites which look for Safari also serve Chrome.

How to read a user agent string

  1. 1

    Find the fixed tokens first

    Mozilla/5.0, AppleWebKit/537.36 and (KHTML, like Gecko) appear in almost every string and carry no information on their own.

  2. 2

    Read the parentheses for the platform

    The first parenthesised group names the operating system and CPU: Windows NT 10.0, Macintosh; Intel Mac OS X 10_15_7, Linux; Android 14, or iPhone; CPU iPhone OS 17_5.

  3. 3

    Take the last product token as the browser

    Chrome/128, Edg/128, OPR/113 or Firefox/129 near the end is the real browser. Safari is the browser only when no other product token follows it.

Why user agent strings look so strange

Every major browser claims to be Mozilla, most claim to be Safari, and Chrome mentions KHTML, an engine it never used. The reason is thirty years of browsers copying each other so that servers would send them the good version of a page.

  • 1993 to 1996: Mosaic and Mozilla

    NCSA Mosaic sent NCSA_Mosaic/2.0. Netscape Navigator, built by Mosaic's authors and codenamed Mozilla for "Mosaic killer", sent Mozilla/1.0. Servers began sending frames only to strings containing Mozilla.

  • 1996: Internet Explorer joins in

    Internet Explorer 3 wanted those frames too, so Microsoft shipped Mozilla/2.0 (compatible; MSIE 3.0; Windows 95). Every browser since has started with Mozilla.

  • 2000s: KHTML, like Gecko

    Konqueror's KHTML engine was refused Gecko-only pages, so it added (KHTML, like Gecko). Apple built Safari on KHTML, kept the phrase and added AppleWebKit.

  • 2008: Chrome claims Safari

    Chrome used WebKit and needed the pages served to Safari, so it appended Chrome/x and kept Safari/x at the end. Edge and Opera later added Edg/x and OPR/x after Chrome/x.

  • 2022 onward: reduction

    Chrome now freezes the OS and minor version parts and moves the detail into Client Hints headers such as Sec-CH-UA-Platform, so the classic string keeps shrinking.

User agents and web scraping

  • Default strings are refused first

    python-requests/2.32, curl/8.7, Go-http-client/1.1 and axios/1.7 name the library outright. Many WAF rules block them before any other check.

  • A realistic string looks like current Chrome

    The sample above is what Chrome 128 on Windows sends. Keep the version current, because a Chrome 90 string in 2026 is its own signal.

  • The rest of the request has to agree

    Accept-Language, header order, the Sec-CH-UA headers and the TLS handshake all have to match what that browser really sends.

When changing your user agent is not enough

  • Necessary but not sufficient. Sites read the user agent together with the other request headers, the TLS handshake and the rate of requests, so it is one signal among several.

  • An honest name is the better default. A clear, descriptive user agent with a contact URL tells site owners who you are, and many sites publish rules for identified crawlers.

  • Respect the site’s rules. A user agent does not grant access. Check robots.txt and the terms of service, and keep request rates polite.

If you would rather not manage user agents and the browser behind them at all, that is what MrScraper's Web Scraper API handles.

How to parse user agents in code

Python
from user_agents import parse

ua = parse("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36")
print(ua.browser.family, ua.browser.version_string)
print(ua.os.family, ua.os.version_string)
print(ua.is_mobile, ua.is_bot)
JavaScript
import { UAParser } from 'ua-parser-js'

const { browser, engine, os, device } = UAParser(navigator.userAgent)
console.log(browser.name, browser.version)
console.log(engine.name, os.name, os.version, device.type ?? 'desktop')

User agent parser FAQ

What is a user agent string?

A user agent string is a line of text a browser or HTTP client sends with every request, identifying its name, version, operating system and rendering engine. Chrome on Windows sends a string of about 110 characters that begins with Mozilla/5.0 and ends with Safari/537.36. Servers read the string to decide what content and layout to return.

How do I parse a user agent string?

A user agent string is parsed by matching its tokens against known patterns for browsers, engines, operating systems and devices. The MrScraper user agent parser runs the ua-parser-js library in the browser to do that matching and shows the result as a table. Developers can run the same library in JavaScript, or the user-agents package in Python.

What does a user agent string tell a website?

A user agent string tells a website the browser family and version, the operating system and its version, the rendering engine, and often the device type such as mobile or tablet. The string carries no name, email address or location. Modern browsers also send Client Hints headers that repeat the same facts in a structured form.

What is my user agent?

Your user agent is the string your browser sent when it loaded this page, and the parser above fills it into the box automatically. Chrome, Edge and Safari all start the string with Mozilla/5.0 for historical reasons. The exact value depends on the browser version and the operating system, and the value changes with every browser update.

Why do websites block certain user agents?

Websites block certain user agents because the string identifies the client as an automated tool rather than a browser. Default strings such as python-requests/2.32 or curl/8.7 are refused outright by many sites. Many sites also publish which crawlers they allow in robots.txt, so an identified client that follows those rules is the safer choice.

What user agent should I use for web scraping?

A scraper should send an accurate user agent that names the tool and, ideally, a URL or email where site owners can reach you, and keep it fixed for the length of a session. Pair it with polite request rates and the rules in robots.txt. When you collect data through a rendered browser, the browser sends its own user agent.

What is the difference between a user agent and Client Hints?

A user agent is a single header that describes the browser, the engine and the operating system in one string. Client Hints are separate Sec-CH-UA headers that send the same details as structured values, and since Chrome 101 they carry the precise version numbers that the user agent string no longer includes.

What should I do if a site refuses my requests?

A refusal usually means the site does not want automated traffic on that page or that requests arrived too fast. Slow down, check robots.txt and the terms of service, and look for an official API or data feed. If the data is public and allowed, a managed scraping API handles rendering and retries for you.

Read about 429 Too Many Requests

Your choices

Cookie preferences

Necessary cookies keep your selection. Switch each optional category on or off.

Strictly necessary

Remembers your privacy selection and keeps the site working.

Always on