ToolActToolAct

UA Parser

Parse User-Agent strings online to identify browser, OS, and device information

User-Agent
Characters: 0

Parsed Results

Paste a User-Agent string here...

What is User-Agent?

The User-Agent Parser breaks a User-Agent string into readable details such as browser, operating system, device type, rendering engine, and sometimes bot or client hints. These strings appear in logs, analytics, support tickets, compatibility testing, and security investigations because they can show what kind of client made a request. The data is not a reliable identity signal: User Agents can be spoofed, shortened, privacy-filtered, frozen, or supplemented by modern Client Hints. This tool supports quick inspection and comparison, but it should not be the only basis for permissions, fraud decisions, personalization, or critical device targeting. When accuracy matters, combine it with server logs, feature detection, and client-side checks.

How to Use

How to use

  1. Paste the User-Agent string you want to parse in the input box
  2. Or click "Parse My UA" to auto-detect your current browser's UA
  3. Parsed results will display below with browser, system, and device details
  4. Click "Copy UA" to copy the original UA string

Parsing Limits

  • User-Agent strings can be spoofed, frozen, or reduced by modern browsers, so treat parsed results as hints.
  • For feature decisions, prefer capability detection over browser-name checks whenever possible.

Use Cases

Inspect an unknown User-Agent from a support ticketPaste a User-Agent string copied from server logs, browser DevTools, or an analytics dashboard and read the breakdown of browser, OS, device, and rendering engine. This is the fastest way to start a compatibility investigation when a customer reports a layout, font, or feature gap and you only have the raw UA to work with. Cross-check the parsed engine version with feature-detection results to rule out spoofed or frozen values.
Check your own browser UA against current standardsThe parse-my-UA action fills the input with navigator.userAgent and immediately parses it. Compare the result against Sec-CH-UA, the frozen/reduced UA lists published by major browsers, and your feature-detection logic to make sure analytics segmentation and feature gating line up with the actual capabilities of the client. Mismatch between the parsed UA and feature detection is usually the first sign of a UA reduction policy.
Flag likely bots and crawlersIn addition to library parsing, the tool checks common bot patterns such as bot, crawler, spider, Googlebot, Bingbot, Baiduspider, YandexBot, DuckDuckBot, facebot, and ia_archiver. The bot field makes automated traffic easier to identify. Pair the bot flag with server-side rate limits because keyword-based detection can be evaded by a determined scraper that imitates a real browser UA.
Diff two User-Agent stringsPaste a desktop Chrome UA and a mobile Safari UA, then compare engine, OS, and device type fields side by side to spot why a responsive branch fires on one client but not the other. The same approach reveals frozen or reduced UA strings from Chromium browsers that share an empty version segment. A side-by-side diff is often faster than re-running the same page on two devices to confirm a layout regression.
Detect Chrome reduction, Client Hints, and mobile tokensModern Chrome 100+ ships a reduced UA string that freezes the minor version to 0.0.0 and shifts real version data to Sec-CH-UA-Full-Version-List; cross-check the parsed major version with Client Hints headers to catch the reduction. Mobile detection relies on token keywords (iPhone, Android, Mobile) rather than screen size, and modern Client Hints provide a more reliable Sec-CH-UA-Mobile boolean than the UA string itself. Always combine UA parsing with Client Hints and feature detection before making a device-class decision.

Technical Principle

The User-Agent header is defined by RFC 7231 §5.5.3 as a sequence of product tokens (product/version) and parenthesized comments, but in practice every modern browser sends a string that begins with the literal Mozilla/5.0 token. That prefix dates back to 1993, when sites detected NCSA Mosaic by checking for Mozilla; Netscape adopted Mozilla, Internet Explorer 3 added it for compatibility, and every fork since (Safari, Chrome, Edge, Opera) has kept the lie. There is no formal grammar that says where the OS sits, where the engine version goes, or which token wins when several browsers list each other for compatibility, so parsing is done with a prioritized list of regular expressions against the four classic axes: browser, engine, OS, device. Open-source libraries such as ua-parser-js, bowser, and the UAParser Lua/Python ports all maintain the same pattern files. Since 2022 Chrome has shipped UA Reduction: the browser version is frozen to MAJOR.0.0.0 and platform-specific minor tokens are dropped, so a parsed Chrome 120.0.0.0 on Windows really means Chrome 120-something on Windows 10 or 11, with the precise build hidden behind Client Hints. The modern replacement is User-Agent Client Hints (draft-ietf-httpbis-client-hints), which exposes Sec-CH-UA, Sec-CH-UA-Mobile, and Sec-CH-UA-Platform on every request and the high-entropy values (model, full version, architecture) through navigator.userAgentData.getHighEntropyValues(). A UA parser is still useful for log review and bot triage, but feature detection and Client Hints should drive any runtime branching.

  • RFC 7231 §5.5.3 defines User-Agent as product tokens plus comments, with no grammar for OS or device — every parser ships its own regex list
  • The Mozilla/5.0 prefix is a 1993 compatibility hack from the Mosaic era; Safari, Chrome, and Edge all keep it to avoid breaking browser-sniffing sites
  • Chrome UA Reduction (rolled out 2022–2023) freezes the minor version to 0.0.0 and pins the platform string — real build numbers live in Sec-CH-UA-Full-Version-List
  • User-Agent Client Hints expose Sec-CH-UA, Sec-CH-UA-Mobile, Sec-CH-UA-Platform on every request; high-entropy fields require navigator.userAgentData.getHighEntropyValues(['model','platformVersion','architecture'])
  • Bot detection by keyword (bot, crawler, spider, Googlebot, Bingbot, Baiduspider, YandexBot) catches polite crawlers but not adversarial scrapers that copy a real Chrome UA — pair with rate limits and behavioural signals
  • Mobile vs tablet is decided by tokens (Mobile, Tablet, iPhone, iPad) not screen size; an Android UA without the Mobile token is treated as a tablet by most parsers
  • Caches and CDNs that key on Vary: User-Agent can fragment a single resource into thousands of cache entries — prefer Vary: Sec-CH-UA-Mobile or accept low hit rates

Examples

Chrome Browser

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/120.0.0.0 Safari/537.36

iPhone Safari

Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15 Version/17.0 Mobile/15E148 Safari/604.1

Google Bot

Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)

FAQ

What does User-Agent parsing extract?

Browser name and version (e.g. 'Chrome 124'), operating system and version, device type (desktop/mobile/tablet), CPU architecture, rendering engine (Blink/Gecko/WebKit), and bot/crawler classification when the UA matches a known crawler pattern.

How accurate is UA parsing?

Good for common, well-known browsers. Struggles with: brand-new versions before the parser library updates; browsers that mimic Chrome/Safari to bypass detection; bots that spoof a real UA; embedded WebViews where the UA names the host app instead of the engine.

Why has the User-Agent string become less useful?

Browser vendors (Chrome leading) are 'freezing' UA strings to limit fingerprinting and pushing UA Client Hints (Sec-CH-UA-* headers) instead. Within a few years, UA strings will report stable, low-entropy values; real device data will live in client hints. Your code should migrate accordingly.

Should I use UA detection for feature gating?

Almost never. UA can lie, and feature support varies by version, even within the same browser. Feature-detect using `if ('serviceWorker' in navigator)` style checks. UA detection is okay for analytics, support tickets, and bug-report classification - not for choosing which API to call.

Can I parse my own UA?

Yes. The page shows your browser's current UA at the top and parses it into the components. Useful when you want to know exactly what version your browser is reporting to servers.

What about bot detection?

The parser flags well-behaved bots that identify themselves (Googlebot, Bingbot, Slackbot). Malicious bots usually impersonate real browsers, so UA-only bot detection is weak. Combine with rate limits, CAPTCHA, and behavioural signals for real protection.

Is the UA uploaded anywhere?

No. Parsing runs in your browser using a JS library (typically ua-parser-js). Pasted UA strings are not sent to a server.