What a user-agent string is, why it lies, and how to read one
Every request your browser makes carries a line like Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36. It says Mozilla, WebKit, KHTML, Gecko, Chrome and Safari β and it is Chrome. The user-agent string is thirty years of compatibility hacks in one line, and reading it is easier than it looks. The user agent tool parses yours; here's the history and the reading.
What the header is
User-Agent is an HTTP request header identifying the software making the request: browser, version, operating system, sometimes device. Sites use it to serve mobile layouts, log which browsers visitors use, work around specific bugs, and β controversially β to fingerprint. Non-browser clients send their own: Googlebot/2.1, curl/8.4.0, a mail client, an app's name. It is sent by the client and can say anything; nothing enforces truth.
Why every browser says Mozilla
In 1994 Netscape's browser called itself Mozilla; sites sent Netscape the good, frames-capable pages and everyone else the plain ones. Microsoft made Internet Explorer claim "Mozilla/4.0 (compatible; MSIEβ¦)" to get the good pages. Every browser since has kept the prefix so scripts checking for "Mozilla" keep working. WebKit added "KHTML, like Gecko" so sites sniffing for Firefox's engine would treat it well; Chrome added "Safari" for the same reason toward WebKit sites; Edge adds "Edg/". The string is an archaeology of who was dominant when.
Reading one
- Mozilla/5.0 β ignore; every browser has it.
- The parenthesised part β platform: Windows NT 10.0 (Windows 10 or 11), Macintoshβ¦, X11; Linux, Android 14; Mobile, iPhone; CPU iPhone OS 17_5.
- AppleWebKit/537.36 (KHTML, like Gecko) β the engine family for Chrome, Edge, Opera, Safari; Firefox says Gecko/20100101.
- The real name is the last specific token: Chrome/129 with nothing after it but Safari means Chrome; Edg/129 means Edge; OPR/ means Opera; Firefox/130 means Firefox; Version/17 Safari/605 (no Chrome) means Safari; CriOS is Chrome on iOS (which is WebKit underneath β Apple requires it).
Libraries encode these rules; the tool applies them and shows what a site would conclude.
Freezing and client hints
Because the string enabled fingerprinting and brittle sniffing, Chrome began freezing it in 2021: the OS version is now a fixed "10_15_7" on macOS and "10.0" on Windows regardless of reality, and the minor version numbers are zeros. Detailed information moved to User-Agent Client Hints, headers a site must ask for (Sec-CH-UA-Platform-Version and friends), which browsers send only to sites that request them and only to the top-level page by default. Safari and Firefox froze parts of the string as well. The practical upshot: don't parse OS versions from it, and use feature detection in code rather than browser detection.
Privacy and the bot question
On its own the string identifies a browser family, not a person; combined with screen size, fonts, time zone and a dozen other signals it becomes a fingerprint, which is what the freezing aims to blunt. On the server side it is the first line of bot management: legitimate crawlers announce themselves (Googlebot, Bingbot, GPTBot β see the robots.txt generator), and anyone can forge those names, so serious verification checks the requesting IP against the crawler's published ranges. For curiosity, the tool shows what your browser is sending right now; the screen resolution tool shows the next signal in the fingerprint, and the status code reference the server's replies.
Sources and further reading
The claims in this guide rest on these references, which were checked when the guide was last updated. Spotted an error? The contact page says how to report it.