User Agent Parser
Read the clues inside a User-Agent string without treating them as ground truth: browser or software client, OS, device type, engine, architecture, bot tokens, and reduced/frozen values.
navigator.userAgent locally; no User-Agent lookup API receives the supplied string. Site-wide analytics or advertising scripts, if enabled, are separate from this parsing operation.Parsed Signals
Treat every field as a heuristic derived from self-declared text.
Browser/software client, OS, device, engine, architecture, bot, and reduction clues will appear here.
Why a User-Agent Can Say “Windows 10” on Windows 11
Modern User-Agent strings are not a clean hardware inventory. Chromium-based browsers deliberately freeze or reduce several values to limit passive fingerprinting. On Windows, the old Windows NT 10.0 token can represent both Windows 10 and Windows 11. On reduced Android strings, the platform may appear as Android 10 and the model as a generic K even when the real device is newer.
That means a careful interpretation should sometimes say “unknown” or “Windows 10/11” instead of manufacturing precision that the string does not contain.
Do not turn this into a security identity
User-Agent is supplied by the client and can be copied, modified, or completely fabricated. A browser-looking string does not prove that request came from that browser, and a Googlebot-looking string does not verify Googlebot. Authentication, authorization, fraud controls, and crawler verification need stronger evidence.
Browser Tokens Are Full of Historical Compatibility Baggage
Many browser User-Agents start with Mozilla/5.0 even though the browser is not Mozilla Firefox. Chromium browsers also contain AppleWebKit and Safari-looking tokens for compatibility. Edge, Opera, and Samsung Internet can contain Chrome tokens because they are Chromium-family browsers.
Detection order therefore matters. More specific Edge, Opera, Samsung Internet, Firefox, Chrome, Chromium, Safari, and Internet Explorer tokens are checked before a browser-like family is assigned.
Not Every User-Agent Belongs to a Browser
APIs and server logs often contain User-Agent values from command-line tools, SDKs, monitoring agents, crawlers, mobile apps, or HTTP libraries. A string such as curl/8.7.1 should remain a software-client result rather than being forced into a browser classification.
Common non-browser tokens such as curl, Wget, PostmanRuntime, python-requests, okhttp, Go’s HTTP client, and Apache HttpClient are reported as software clients rather than desktops or mobiles.
Good use: support diagnostics
A copied UA can help support staff understand the broad browser/OS family involved in a compatibility report.
Good use: coarse log analysis
User-Agent families can help group traffic by browser, bot, library, or broad device class when exact device identity is not required.
Poor use: feature gating
If you need to know whether a browser supports a web API or CSS feature, feature detection is generally more reliable than guessing from a UA version.
Bot Detection From the String Is Only a Hint
Recognizable crawler tokens are useful when scanning logs, but they are not verification. Anyone can send a request whose User-Agent contains Googlebot, bingbot, or another crawler name. Conversely, automation can use a normal browser UA and avoid obvious bot words.
For decisions such as allowing privileged crawler access or investigating SEO crawl behavior, use the verification method documented by the crawler operator rather than trusting this field alone.
iPhone Browsers Are a Special Parsing Case
Firefox, Chrome, and Edge on iOS use product tokens such as FxiOS, CriOS, and EdgiOS, but a product token is not a dependable engine identifier. Apple now provides alternative-browser-engine entitlements in some regions, so “Chrome on iOS” cannot safely be translated into either “Blink” or “WebKit” from the User-Agent alone. Apple describes that platform change in its alternative browser engine guidance.
When You Need More Detail Than the Reduced String Provides
Supporting browsers can expose additional User-Agent Client Hint data when the site requests appropriate hints. That is a different mechanism from parsing the legacy User-Agent string, and it comes with privacy considerations of its own. MDN’s User-Agent reduction guide documents the frozen and reduced patterns that explain why several legacy fields are intentionally imprecise.
