Free tool
What is my user agent?
Your user agent is the User-Agent header your browser sends with every request. It is shown below, parsed into browser, engine, operating system and device, along with the client hints Chromium browsers send. Paste any other UA string to parse it too.
Free · no sign-up · runs in your browser, nothing is uploaded
Reading your browser…
Reading client hints…
The parsed browser, engine, OS and device appear here.
How to read a user agent string
RFC 9110 defines User-Agent as a list of product tokens (name/version) with optional comments in parentheses. Browsers pack a lot of history into it. Here is a Chrome on Windows string, token by token:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36
| Token | What it means |
|---|---|
| Mozilla/5.0 | Kept for compatibility. Every modern browser sends it. |
| (Windows NT 10.0; Win64; x64) | The platform: Windows, 64-bit. Windows 10 and 11 both say NT 10.0. |
| AppleWebKit/537.36 | Blink forked from WebKit, and Chrome still reports this frozen WebKit version. |
| (KHTML, like Gecko) | Also for compatibility: WebKit came from KHTML, and sites once sniffed for Gecko. |
| Chrome/141.0.0.0 | The real browser and its major version. The rest is zeroed. |
| Safari/537.36 | Added so sites that look for Safari treat Chrome as a WebKit browser. |
Order matters when you sniff. Edge adds Edg/141.0.0.0 after the Chrome token, Opera adds OPR/ and Samsung Internet adds SamsungBrowser/, so a check for "Chrome" alone also matches all of them. That is why this tool uses a parser (Bowser) rather than one regex.
Why your user agent looks out of date
Browsers now freeze parts of the string to make fingerprinting harder. A parser that trusts these tokens gets the wrong answer:
| Token you see | Why | Where the real value is |
|---|---|---|
Chrome/141.0.0.0 | Chromium zeroes the minor, build and patch version (since Chrome 101). | Sec-CH-UA-Full-Version-List |
Windows NT 10.0 | Sent on Windows 10 and Windows 11. | Sec-CH-UA-Platform-Version (13+ means Windows 11) |
Mac OS X 10_15_7 | Chrome and Safari freeze macOS at 10.15.7, Firefox at 10.15, even on newer macOS and Apple silicon. | Sec-CH-UA-Platform-Version (Chromium only) |
Linux; Android 10; K | Chrome on Android sends the same Android version and a "K" model for every phone (since Chrome 110). | Sec-CH-UA-Platform-Version, Sec-CH-UA-Model |
Macintosh | Safari on iPadOS asks for desktop sites by default, so an iPad looks like a Mac. | No exact value. navigator.maxTouchPoints greater than 1 is a strong hint. |
When your browser supports client hints, the parsed result at the top uses them, and the notes under it say which tokens were frozen.
User-Agent Client Hints in JavaScript and HTTP
Chromium browsers such as Chrome, Edge and Opera expose navigator.userAgentData on HTTPS pages. The low-entropy values are there right away; the rest come from a promise:
const ua = navigator.userAgentData;
if (ua) {
console.log(ua.brands, ua.mobile, ua.platform);
const hints = await ua.getHighEntropyValues([
'platformVersion', 'fullVersionList', 'architecture', 'bitness', 'model',
]);
const win11 = ua.platform === 'Windows' && parseInt(hints.platformVersion) >= 13;
} else {
// Firefox and Safari: fall back to navigator.userAgent
}On the server, every request carries Sec-CH-UA, Sec-CH-UA-Mobile and Sec-CH-UA-Platform. To get the others, reply with an Accept-CH header and the browser adds them to its next requests:
Accept-CH: Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Model Vary: Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Model
Brands like "Not)A;Brand" in the list are added on purpose ("GREASE") so servers don't hard-code the list. Ignore them.
Read the User-Agent header in code
| Where | Code |
|---|---|
| Browser JavaScript | navigator.userAgent |
| Node.js (Express) | req.get('User-Agent') |
| Node.js (http) | req.headers['user-agent'] |
| Python (Flask) | request.headers.get('User-Agent') |
| Python (Django) | request.META.get('HTTP_USER_AGENT') |
| Go (net/http) | r.UserAgent() |
| PHP | $_SERVER['HTTP_USER_AGENT'] |
To send a custom user agent from a script or the command line:
curl -A "MyBot/1.0 (+https://example.com/bot)" https://example.com
fetch(url, { headers: { 'User-Agent': 'MyBot/1.0' } }) // Node.js
requests.get(url, headers={'User-Agent': 'MyBot/1.0'}) # Python requestsBuilding a crawler? Name it and add a URL, like the bots in the sample list, so site owners can find you and allow or block you in robots.txt. The robots.txt generator writes rules per user agent, and the curl converter turns a curl command with -A into fetch, Python or Go.
Prefer feature detection to UA sniffing
MDN advises against using the user agent to decide what a page can do. Browsers lie on purpose (iPad as Mac, frozen versions), and new browsers appear. Test the feature instead:
if ('share' in navigator) { /* Web Share API */ }
if (CSS.supports('container-type', 'inline-size')) { /* container queries */ }
const touch = matchMedia('(pointer: coarse)').matches;The user agent is still the right tool for analytics, bug reports, telling bots apart and serving the right download. For bug reports, the download button above saves the UA, the parsed result and the client hints as JSON. Testing keyboard input instead? The JavaScript keycode finder shows what each key press sends. More testing tools are in the testing tools directory.
More free developer tools
FAQ
What is a user agent?+
A user agent is the program that makes a web request for you, usually your browser. It names itself in the User-Agent HTTP header, a line of text such as "Mozilla/5.0 (Windows NT 10.0; Win64; x64) ... Chrome/141.0.0.0 Safari/537.36" that lists the browser, its engine and the operating system. JavaScript can read the same string from navigator.userAgent.
How do I find my user agent?+
Open this page: the string at the top is exactly what your browser sends. You can also type navigator.userAgent in the DevTools console, or open DevTools, go to the Network tab, click any request and look for User-Agent under Request Headers.
Does my user agent reveal who I am?+
Not by name. It shows your browser, version, operating system and sometimes the device model, but no name, email, IP address or location. Combined with other signals, such as screen size, time zone and installed fonts, it can help sites fingerprint a browser, which is one reason browsers now freeze parts of the string.
Why does my user agent say Windows 10 when I use Windows 11?+
Browsers send "Windows NT 10.0" on both Windows 10 and Windows 11. The only reliable way to tell them apart is the Sec-CH-UA-Platform-Version client hint: Microsoft documents 13 and above as Windows 11. This page reads that hint when your browser supports it.
Why does Chrome show a version like 141.0.0.0?+
Since Chrome 101, the minor, build and patch numbers in the user agent are always 0.0.0 as part of user agent reduction. Sites that need the full version ask for the Sec-CH-UA-Full-Version-List client hint, or call navigator.userAgentData.getHighEntropyValues(["fullVersionList"]).
How do I change my user agent in Chrome?+
Open DevTools, open the menu (three dots), choose More tools, then Network conditions. Under User agent, untick "Use browser default" and pick a preset or type your own. It applies only while DevTools is open, to that tab. Firefox has general.useragent.override in about:config, and Safari has Develop, then User Agent.
Why does every user agent start with Mozilla/5.0?+
For compatibility. Early sites sent their best pages only to Netscape (code name Mozilla), so other browsers started claiming to be Mozilla too, and the token stuck. Today it carries no meaning, and the real browser is named later in the string.
What are User-Agent Client Hints?+
A newer way for Chromium browsers to share browser details. By default they send only the brand, whether the device is mobile and the platform, as Sec-CH-UA, Sec-CH-UA-Mobile and Sec-CH-UA-Platform headers. A server that needs more (OS version, model, CPU architecture) asks with an Accept-CH response header. Firefox and Safari do not support them.
Sources: RFC 9110 §10.1.5 User-Agent · MDN: User-Agent header · MDN: NavigatorUAData · Chromium: User-Agent Reduction · Microsoft: Detect Windows 11 with client hints · WICG: User-Agent Client Hints · Bowser. Checked 2026-10-31.