Summary
A user agent parser reads the User-Agent text that a browser or other HTTP client sends with every request and splits it into browser, operating system, device, rendering engine, CPU and bot status. To parse one free and privately, paste the string into Parse a User Agent String; the result cards update as you type. Your own browser's string is already filled in when the page opens. Parsing runs in your browser with the open-source UAParser.js library, so strings copied from server logs are never uploaded, and the Network tab in DevTools shows no request when you paste.
Treat the answer as a well-informed guess. Any client can send any string, and modern Chromium browsers freeze parts of theirs, so this tool says so when a value is a placeholder. To see what your own server sends back, use the HTTP header viewer.
Table of Use: What You Get for Common Strings
| Paste this | Browser | Operating system | Device and notes |
|---|---|---|---|
| Chrome 120 on Windows | Chrome 120.0.0.0 (Blink engine) | Windows 10 or 11 | Desktop, CPU amd64, plus a note that this is a frozen Chromium string |
| Safari on iPhone | Mobile Safari 17.2 (WebKit) | iOS 17.2 | Mobile, Apple iPhone |
| Chrome on a Pixel 8 | Mobile Chrome 120.0.0.0 (Blink) | Android 14 | Mobile, Google Pixel 8 |
| Reduced Chrome on Android | Mobile Chrome 120.0.0.0 | Android 10 | Model shown as K; a blue notice says the OS version and model are placeholders |
| Googlebot | None (automated client) | Not detected | Automated client: Googlebot 2.1 (crawler) |
| GPTBot | None (automated client) | Not detected | Automated client: GPTBot 1.2 (crawler), marked as an AI crawler |
| curl/8.4.0 | None (automated client) | Not detected | Automated client: curl 8.4.0 (cli) |
A browser user agent is a run of tokens, most of them left over from old compatibility fixes:
| Part | Example | What it tells you |
|---|---|---|
| Product token | Mozilla/5.0 | A historical prefix nearly every browser sends; it identifies nothing |
| Platform block | (Windows NT 10.0; Win64; x64) | The operating system and CPU; NT 10.0 covers Windows 10 and 11 |
| Engine tokens | AppleWebKit/537.36 (KHTML, like Gecko) | Compatibility labels that Chrome, Edge and Opera also send |
| Browser token | Chrome/120.0.0.0 | The browser name and version; Edge adds Edg/ and Opera adds OPR/ after it |
Features of the User Agent Parser
- Your own user agent loaded when the page opens, with a one-line summary. In Chromium browsers that expose User-Agent Client Hints, the summary is refined with the real OS version and device model.
- Six result cards: Browser (name, version, major version), Operating System, Device (type, vendor, model), Rendering Engine, CPU and Bot Detection. A field the string does not state reads Not detected.
- Bot detection for search crawlers, link and page fetchers, command-line tools such as curl and Wget, HTTP libraries such as python-requests, and headless browsers, with AI crawlers and AI assistants marked.
- Frozen-value labels: Windows NT 10.0 is shown as 10 or 11, macOS 10.15 is flagged as frozen, and reduced Chromium strings get a notice that the OS version and Android model are placeholders.
- Device types Mobile, Tablet, Smart TV, Game console, Wearable, XR headset and Embedded come from the string. When it names none, a desktop operating system is labelled Desktop, which is an inference.
- Copy result as JSON with the original string and every parsed field, plus Clear and a table of 13 example strings with a Parse link on each row.
Parsing is local and instant. Results come from UAParser.js rules, so a brand-new browser or an unusual device may be reported only partly. The 64-bit Intel and AMD CPU appears as amd64, 64-bit ARM as arm64 and 32-bit ARM as arm.
How to Use the User Agent Parser
- Read Your browser's user agent at the top. Press Copy User Agent to copy it, or Parse my user agent to analyse it below.
- To check another string, paste it into Parse a User Agent String. Press Clear to empty the box, or use Try an example and the Parse links in Example User Agent Strings.
- Read the browser, OS and device summary, then the cards beneath it. An amber box means an automated client; a blue box means a frozen Chromium string.
- Press Copy result as JSON to take the parsed fields into a ticket, script or spreadsheet.
Who Can Use It
Web developers and QA testers paste a string from a bug report to see which browser and OS a customer used, then reproduce it. Log strings sometimes arrive percent-encoded; decode them with the URL decoder first, and find patterns across thousands of lines with the regex tester.
SEO and security teams use it to tell crawlers from people. When a hit claims to be Googlebot, look up the visitor's address with the IP address lookup and run a reverse query in the DNS lookup tool. If you decide to set crawl rules, the robots.txt generator writes them by user-agent name, and the .htaccess generator can block unwanted agents on Apache.
To find out who runs a domain that keeps appearing in your logs, use the WHOIS lookup. The copied JSON is already indented, and the JSON formatter can reformat or check it before you share it.
FAQs
How do I parse a user agent string?
Paste the string into Parse a User Agent String. The browser, operating system, device, rendering engine, CPU architecture and bot status update as you type, and Copy result as JSON copies every field to your clipboard. Your own browser's user agent is filled in when the page opens, and the Try an example buttons load typical strings for Chrome on Windows, Safari on macOS, Safari on iPhone, Chrome on Android, Googlebot and curl.
How do I find my own user agent?
Open this page: the Your browser's user agent panel shows it straight away, and Copy User Agent puts it on your clipboard. In any browser you can also type navigator.userAgent in the DevTools console, or look for the User-Agent line under Request Headers in the Network tab. The string describes the browser you are using now, not your device in general.
Why do all user agents start with Mozilla/5.0?
The "Mozilla/5.0" prefix is a historical artifact. When Netscape Navigator, code-named Mozilla, was dominant, servers checked for "Mozilla" before sending modern pages, so other browsers copied the prefix to avoid being served simpler content. Almost every browser still sends it today, which is why the prefix says nothing about which browser you are using.
How can I tell if a user agent belongs to a bot?
Paste it in. If it matches the crawler, fetcher, command-line, HTTP-library or headless-browser lists that ship with UAParser.js, an amber notice names the client and its kind, and marks AI crawlers such as GPTBot and AI assistants such as ChatGPT-User. A user agent can be faked, so confirm a real search-engine crawler with a reverse DNS lookup of its IP address.
Why does my Windows 11 PC or new Mac show an old version?
Browsers stopped updating those parts of the string. Every Windows 10 and Windows 11 browser sends "Windows NT 10.0", and Chrome, Safari and Firefox on any recent Mac report macOS 10.15. The parser labels these as frozen values. In Chromium browsers the Your browser's user agent panel also reads User-Agent Client Hints, which report the real OS version.
What are User-Agent Client Hints?
Client Hints are the newer way for Chromium-based browsers to describe themselves. Basic values such as the browser brand, mobile flag and platform are always available; detailed values such as the full OS version, device model and CPU architecture are sent only when a site asks for them, through HTTP headers or navigator.userAgentData.getHighEntropyValues(). As of October 2026, MDN lists the API as limited availability: Firefox and Safari do not support it.
How reliable is user agent detection?
Good enough for analytics and debugging, but never for security. Any client can send any user agent, some browsers deliberately copy others (Edge and Opera include "Chrome"), and modern Chromium browsers freeze parts of the string. To decide which features to use, test for the feature in JavaScript instead of reading the user agent.
Is the user agent I paste sent anywhere?
No. Parsing runs entirely in your browser with the UAParser.js library, so strings copied from your server logs or analytics stay on your device. The tool makes no network request when you paste or type, which you can confirm in the Network tab of DevTools. Your own user agent is read from your browser when the page opens and is not uploaded.