The line your browser announces
Every time your browser requests a page, it sends a User-Agent header — a text string identifying the browser, its version, and the operating system. Servers use it to serve compatible content and gather analytics.
Why it looks like nonsense
A modern user-agent might read like Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/.... The mess is historical: browsers copied each other's identifiers over decades to avoid being served degraded content, so today's strings contain the names of browsers that aren't even running.
What it reveals — and doesn't
- Reveals: browser family and version, OS, and whether you're on mobile or desktop.
- Doesn't reveal: your identity, your name, or your exact device model in most cases.
It's one signal websites combine with others (IP, screen size) for analytics or fingerprinting, but on its own it's fairly generic — millions of people share the same string.
Can you change it?
Yes — browser dev tools and extensions let you spoof a user-agent, which is handy for testing how a site behaves on different devices. Note that user-agent is gradually being reduced by browsers in favor of more privacy-conscious 'client hints'.
How to read a user-agent, part by part
Take a typical desktop Chrome string (version numbers here and below are examples): Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36. Read left to right:
Mozilla/5.0 | A legacy token almost every browser sends. It carries no real information today. |
(Windows NT 10.0; Win64; x64) | The platform. Windows 11 still reports NT 10.0, so you cannot tell Windows 10 and 11 apart from this string. |
AppleWebKit/537.36 (KHTML, like Gecko) | The rendering engine family. Chrome's Blink engine forked from WebKit and kept the token for compatibility. |
Chrome/141.0.0.0 | The actual browser and its major version. The trailing zeros are deliberate (see below). |
Safari/537.36 | Another compatibility token, so sites that check for "Safari" still treat Chrome as a modern browser. |
Edge appends Edg/… and Opera appends OPR/… to a Chrome-style string, which is why detection code has to check for them before checking for Chrome. Firefox is the odd one out: its string contains Gecko/20100101 Firefox/… and no WebKit token at all.
Why newer user-agents say less
Chrome, Edge and other Chromium browsers now send a reduced user-agent: the minor version is always 0.0.0, the Windows version is fixed at 10.0, and the Android device model is replaced with a generic K. Safari and Firefox similarly freeze the macOS version at 10.15. The aim is to make the string less useful for fingerprinting.
Sites that genuinely need more detail can ask for User-Agent Client Hints. Chromium browsers send three low-detail hints by default — Sec-CH-UA (brand and major version), Sec-CH-UA-Mobile and Sec-CH-UA-Platform — and send more (full version, platform version, device model) only when the server requests them. In JavaScript the same data is on navigator.userAgentData. Firefox and Safari do not implement Client Hints, so the table above shows "not supported" there.
Other ways to find your user-agent
- This page: the box at the top shows exactly what your browser sends.
- Browser console: open developer tools (F12, or Cmd+Option+I on a Mac), go to Console and type
navigator.userAgent. - Network tab: in developer tools, select any request and look for
User-Agentunder Request Headers. This is the value the server actually receives. - Command line:
curlsends its own user-agent (curl/8.x) unless you pass-A "…"to set one.
Common user-agent examples
- Safari on iPhone:
Mozilla/5.0 (iPhone; CPU iPhone OS 18_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Mobile/15E148 Safari/604.1 - Firefox on Windows:
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:143.0) Gecko/20100101 Firefox/143.0 - Googlebot (smartphone):
Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/W.X.Y.Z Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)— Google substitutes the current Chrome version for W.X.Y.Z.
Version numbers in these examples change with every release; the structure is what stays the same. Because anyone can send any user-agent, never use it alone to verify that a visitor really is Googlebot — Google recommends a reverse DNS check of the IP instead. If you are curious what your network address says about you, try the IP & ISP lookup.
Frequently Asked Questions
Can a website identify me from my user-agent?
Not by itself — millions of people share identical user-agent strings. It's a generic signal, though it can be combined with others for fingerprinting.
Why does Chrome's user-agent mention Mozilla and Safari?
Historical compatibility. Browsers copied each other's identifiers over the years so servers wouldn't send them degraded content.
Is it safe to change my user-agent?
Yes, it's commonly done for testing. It only changes how sites perceive your browser, not your actual browser or device.
What is my user-agent string?
It is the text your browser sends with every request to identify its name, version, rendering engine and operating system. The box at the top of this page shows yours exactly as websites receive it.
Why does my user-agent show Windows NT 10.0 on Windows 11?
Browsers froze the Windows version at 10.0 to reduce fingerprinting. Windows 10 and 11 send the same value; sites that need to tell them apart use the Sec-CH-UA-Platform-Version client hint.