What is a User-Agent string?
The User-Agent header identifies the client making a request — browser family and version, operating system, device class, or a crawler name. Its format grew by accretion, so most strings contain historical tokens such as "Mozilla/5.0"; parsing it is useful for compatibility testing and analytics, but it is self-declared and easy to spoof, so never use it for security decisions.
Mozilla/5.0, AppleWebKit and Safari are history: only Chrome/ names the browser and engine, and the platform and version tail are frozen.One User-Agent header value
Part 1:Mozilla/5.0
- 1Historical tokenMost strings carry it; it says nothing about the browser
- 2PlatformOperating system reported as sent;
Kis a placeholder, so no model is shownAndroid 10frozen - 3Compatibility tokensIgnored for Chrome: the engine, Blink 126.0.0.0, is read from the
Chrome/token - 4Browser and major versionThe only real part of the version
Google Chrome 126.0.0.0 (major 126) - 5Minor, build and patchFrozen at 0.0.0 since Chrome 101frozen
- 6Device classDevice type:
mobile; withoutMobile, an Android string counts as a tablet - 7Compatibility tokenIgnored: Chrome is matched before Safari
The page’s example, a reduced User-Agent; each value is what the tool reports for it. The real version and model are available only through Client Hints.
How to use User-Agent Parser
- Paste a User-Agent string from logs, analytics or a bug report — or leave the field empty to analyse your own browser.
- Click Parse (or "Use my browser's User-Agent").
- Read the browser, engine, OS and device rows; check the bot row before trusting traffic.
- Review the notes for caveats such as reduced UA strings before drawing conclusions.
User-Agent Parser features
- Browser family and version for Chrome, Edge, Firefox, Safari, Opera, Samsung Internet, Brave, Vivaldi, UC, in-app browsers and more
- Rendering engine (Blink, WebKit, Gecko, Trident, EdgeHTML) with the Blink/WebKit split at Chrome 28
- Operating system and version with friendly Windows names, iOS/iPadOS underscores normalised, macOS, Android, Chrome OS, Linux distributions, consoles and TVs
- Device type (desktop, mobile, tablet, TV, console, wearable, bot) plus Android vendor and model when present
- Detection of 70+ crawlers, social previewers, AI bots, SEO spiders, monitoring services and headless browsers
- Programmatic clients (curl, python-requests, okhttp, Go, Postman, axios…) recognised as tools rather than browsers
- Notes about reduced/frozen User-Agent strings and other ambiguities
User-Agent Parser example
Parse a current Chrome on Android string
Input:
Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Mobile Safari/537.36Output:
Browser: Google Chrome 126.0.0.0 (major 126)
Rendering engine: Blink 126.0.0.0
Operating system: Android 10
Device type: mobile
Is bot: No
Note: Reduced User-Agent (Chrome 101+): only the major version is real; minor/build/patch are frozen to 0.0.0.
Note: Reduced User-Agent: Android version and device model are frozen ("Android 10; K").Frequently asked questions about User-Agent Parser
How do I see my own User-Agent?
Leave the input empty and click Parse, or click "Use my browser's User-Agent". The string is read from navigator.userAgent in your browser and analysed locally.
Why does Chrome report version 126.0.0.0 and Windows 10 on Windows 11?
Chrome "reduces" its User-Agent in phases. Since Chrome 101 only the major version is real (minor, build and patch are frozen at 0.0.0); since Chrome 107 on desktop and 110 on Android the platform is frozen too (Windows NT 10.0, macOS 10.15.7, "Android 10; K"). The tool flags these cases; the exact values are only available through Client Hints.
Which bots are detected?
Search engines (Googlebot, Bingbot, Baiduspider, Yandex, DuckDuckBot, Applebot), social previewers (Facebook, Twitter, LinkedIn, Slack, Discord, WhatsApp), AI crawlers (GPTBot, ClaudeBot, PerplexityBot, CCBot, Bytespider), SEO crawlers (Ahrefs, Semrush, MJ12), monitoring services and headless browsers, plus a generic bot/crawler/spider fallback.
Why is iPad reported as macOS?
Since iPadOS 13, Safari on iPad sends the desktop macOS User-Agent by default. Only touch detection in JavaScript can tell the difference, so the tool notes this ambiguity.
Can I trust the result for security decisions?
No. User-Agent strings are freely spoofable. Use them for analytics and progressive enhancement; verify crawlers with reverse DNS and never use the UA for authorisation.
Technical notes
Parsing is regex based and ordered from most to least specific: tools first (they start the string), then bots, then browsers whose tokens shadow others (Edge before Chrome, Chrome before Safari, CriOS/FxiOS before Safari on iOS). Safari's Safari/6xx token is a WebKit build number, so the version is taken from Version/x.y instead.
The engine, OS and device rule tables are unit-tested against 30+ real-world strings, including reduced UA strings and bots that impersonate browsers.
References
- User-Agent header — MDNThe User-Agent header format and the strings sent by the major browsers and crawlers.
- RFC 9110: HTTP SemanticsThe meaning of HTTP methods, header fields, status codes and content negotiation, independent of the wire version.