User Agent Parser
Decode browser, OS, device type, and bot signals from any User-Agent string. Bulk mode for access-log analysis.
User Agent Parser Tool
| Browser | OS | Device | Bot |
|---|
How to use the User-Agent parser
Pick a mode
"Single" parses one UA at a time and shows the full breakdown. "Bulk" accepts hundreds of UAs (e.g. from an access log) and returns a tabular summary you can download as CSV.
Paste or use a sample
In Single mode, paste your string, click "Use my current User-Agent" to test your own browser, or click one of the sample pills (Chrome, Safari, iPhone, Pixel, UC Browser, Googlebot, Bingbot, AhrefsBot).
Review browser, OS, device, and bot signal
The result card shows browser name + version, OS name + version, device type (desktop / mobile / tablet), rendering engine, and a bot detection flag with the bot name where matched.
Bulk-analyse access logs
In Bulk mode, paste up to a few thousand UA strings; the tool builds a table you can sort visually and download as CSV for Excel or your analytics stack.
User-Agent strings — the legacy that won't die
The HTTP User-Agent header was introduced in 1992 to let servers identify the browser making a request. Thirty-four years later it is still sent by every major browser, but the string itself has accreted so many compatibility layers that modern UAs read like an archaeological dig. Today's Chrome on Windows sends Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36 — claiming to be Mozilla, then claiming to be AppleWebKit, then claiming to be like Gecko, then finally identifying as Chrome at the end. None of these are lies in a deep technical sense; they are historical compatibility hacks layered on top of each other for thirty years.
Why parsing is unreliable
The strings have no formal grammar. Every browser invented its own format, then copied bits from competitors to dodge user-agent sniffing rules. The result is that any UA parser is a collection of heuristics, not a parser in the formal sense. The major libraries (ua-parser-js, ua-parser-rs) maintain regex tables that are updated frequently as new browsers and devices ship. The tool above uses a slimmer regex set covering the top ~95% of real-world traffic — Chrome, Safari, Firefox, Edge, Opera, Samsung Internet, UC Browser, plus the major search and SEO bots. For 100% accuracy you'd need a full ua-parser-js install, which we plan to wire in via Vite-bundled JS in a future update.
The Sec-CH-UA replacement (Client Hints)
Google has been deprecating UA strings since 2022, replacing the information they convey with HTTP Client Hints — a set of structured headers like Sec-CH-UA-Platform: "Windows" and Sec-CH-UA-Mobile: ?1. These are easier to parse (no string-mangling) and let browsers volunteer only the information the server actually requests. Chrome already sends a reduced UA string by default, with the full version available only via Client Hints. Firefox and Safari have not adopted Client Hints, so for the foreseeable future you need both UA parsing and Client Hint reading.
Browser distribution in Southeast Asia
One regional quirk worth knowing: Southeast Asia, particularly Malaysia, Indonesia, and Vietnam, has historically had a much higher share of UC Browser (Alibaba-owned, optimised for slow networks) than the global average. As of 2026 the share is declining as Android phones get faster and Chrome ships pre-installed on most devices, but UC Browser still represents 2-4% of mobile traffic in those markets — far higher than its sub-1% global share. Singapore is the regional outlier with browser distribution closer to North America (Chrome 70%, Safari 22%, Edge 5%, Firefox 2%). Bulk-parsing access logs from ASEAN sites with this tool will surface the regional UC Browser traffic that generic global parsers sometimes miss.
Don't sniff UAs for feature detection
The most-common UA-parser misuse is feature detection — checking the UA string to decide whether the browser supports a feature, then enabling or disabling code on that basis. Don't. Use feature detection (if ('IntersectionObserver' in window)) which actually checks whether the feature is available, instead of inferring it from a string that can be spoofed and that lies for compatibility reasons. UA parsing is appropriate for analytics ("what browsers visit my site"), bot detection ("is this a search crawler"), and content variation ("show iOS users the App Store link") — not for deciding whether to call a JavaScript API.
10 User-Agent facts
Every modern browser's UA starts with "Mozilla/5.0" — a compatibility ghost from Netscape Navigator (Mozilla) in the 1990s when servers checked for it to enable advanced features.
Chrome's UA claims "AppleWebKit", "KHTML, like Gecko", and "Safari" all in one string — none of which Chrome actually is. This is pure historical compatibility cruft.
iPad UAs from iOS 13+ identify as desktop Safari by default. Apple changed this to reduce mobile-only redirects; detecting iPad now requires checking navigator.maxTouchPoints.
Googlebot uses two different user agents: the regular crawler ("Googlebot/2.1") and a smartphone variant ("Googlebot Mobile") that's now the primary crawler for mobile-first indexing.
UC Browser, popular in Indonesia, Malaysia, and Vietnam, has a UA that contains "UCBrowser" — easy to detect but easy to miss in generic parsers that don't include Alibaba browsers.
Bot UAs include a URL pointing to documentation — Googlebot includes +http://www.google.com/bot.html. This convention is intentional so admins can identify the bot's purpose.
Chrome's "reduced UA string" project (started 2022) removed exact version numbers from the default UA and moved them to Client Hints — making fingerprinting harder.
WhatsApp, Telegram, and Facebook in-app browsers all use heavily-modified UAs derived from WebView, which is why in-app links often render differently from external browser opens.
UA spoofing is trivially easy in every major browser — DevTools → Network conditions → User agent. This is why feature detection should always replace UA-based feature gating.
The longest real-world UA string on record is over 800 characters, from a Samsung Knox-enrolled enterprise Galaxy device with all device-management identifiers appended.
Frequently asked questions
if ('IntersectionObserver' in window)). UA strings lie for compatibility reasons and can be spoofed trivially. UA parsing is for analytics and bot detection only.navigator.maxTouchPoints > 1 in JavaScript.Related News
You may be interested in these recent stories from our newsroom.
-
One Generated Prompt Beat Up to 63 Per Cent of a Top Conference's LLM Techniques
A University of Virginia team reproduced 35 ICSE 2026 techniques and outperformed 37 to 63 per cent of them with a single prompt to a newer...
-
The Sixth Exploited Langflow Flaw This Year Is Not a Vulnerability Story
VulnCheck has recorded 360 attacks on a Langflow flaw fixed in January. It is the sixth separately identified Langflow vulnerability exploit...
-
Broadcom Already Maintains Spring and RabbitMQ. Now It Will Sell You Clean Builds.
A reproducible build proves the binary matches the source. It says nothing about whether the source is safe, which is where the damaging inc...
Pick up where you left off
Stored only in this browser — never sent to our servers.