How to use it
The User-Agent string box fills with your own browser’s string once the page loads. Paste any other over it, or pick a sample chip; Yours puts your own back. The string is read in the page and never sent anywhere.
A one-line summary comes first, then a table: Browser, Engine, Operating system, Device (desktop, mobile, tablet, TV, bot, or CLI or library, with vendor and model when the string names them) and Known crawler. An OS version browsers are known to freeze is marked approximate, and the notes say what the string can’t tell you.
Examples
The Chrome on Windows sample:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36
The summary is Chrome 124.0.0.0 on Windows 10.0, desktop. The system is marked approximate: Windows 10 and 11 both report "Windows NT 10.0"; the string cannot tell them apart. The engine is Blink: AppleWebKit, Gecko and Safari are compatibility tokens.
Safari on an iPhone running iOS 26:
Mozilla/5.0 (iPhone; CPU iPhone OS 18_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.0 Mobile/15E148 Safari/604.1
The summary is Safari 26.0 on iOS 18.6, mobile., and Operating system reads iOS 18.6 — approximate. Safari 26 stopped updating the iOS version in the string, so Version/26.0 is the number that tells you the release.
Chrome on Android, in the reduced form Chrome sends to every site:
Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Mobile Safari/537.36
The summary is Chrome 124.0.0.0 on Android 10, mobile., with the note Chrome reduces Android User-Agents to "Android 10; K": the version and the model "K" are placeholders.
Googlebot’s smartphone crawler sends a Chrome-on-Android string ending in (compatible; Googlebot/2.1; +http://www.google.com/bot.html). The summary is Googlebot, a known crawler., and Device reads Bot.
curl sends only curl/8.7.1: the summary is curl 8.7.1, an HTTP client or library rather than a browser., Browser becomes Client, and Device reads CLI or library.
Good to know
- The format is a list of products and comments. RFC 9110 defines
User-Agentas product tokens likeChrome/124.0.0.0, with comments in parentheses such as(Windows NT 10.0; Win64; x64). Browsers copy each other’s tokens so old sniffing code keeps working, which is why every string starts withMozilla/5.0and Edge’s containsChromeandSafaritoo. - Chrome freezes most of its string. Since its User-Agent reduction, Chrome sends
MAJOR.0.0.0as its version and fixed platforms:Windows NT 10.0,Mac OS X 10_15_7,Android 10; KandCrOS x86_64 14541.0.0. Safari and Firefox also stop macOS at 10.15, and Safari 26 stops iOS at 18. - Client hints carry what the string dropped. Chromium-based browsers send
Sec-CH-UAheaders, and a server can ask for more withAccept-CH: Sec-CH-UA-Platform-Version. In script,navigator.userAgentData.getHighEntropyValues(['platformVersion'])does the same. Firefox and Safari don’t support client hints. - iOS strings are read as WebKit. In most countries Apple requires iOS browsers to use WebKit, so Chrome on an iPhone sends
CriOSand shows here as Chrome with engine WebKit. - An iPad usually looks like a Mac. Safari on iPadOS asks for desktop sites by default and sends a macOS string, so it reads as a desktop.
- In-app browsers are their own browser. Instagram, Facebook and TikTok add their own tokens and are named as such, and any other Android app’s embedded view, marked
; wv), reads as Android WebView. - Many browsers send Chrome’s exact string. Brave and Vivaldi do on computers and Android, so “Chrome” there can be either.
- Crawlers are matched by name against a list of about 60 tokens, including Googlebot, Bingbot, GPTBot, ClaudeBot, Applebot and the social preview fetchers. So are ChatGPT-User, Claude-User and Perplexity-User, which fetch a page when a person asks an AI assistant. A string is limited to 2,000 characters.
Questions
What is my user agent?
It’s the string in the box when the page loads, read from your browser’s navigator.userAgent. The same text goes out in the User-Agent header of every request your browser makes, so a server logs it too. In a browser console, type navigator.userAgent to print it.
Why does my user agent say Windows 10 on Windows 11?
Because Windows 11 kept the Windows NT 10.0 token, and browsers froze it there. To tell them apart, read Sec-CH-UA-Platform-Version in a Chromium-based browser: 13.0.0 and above is Windows 11, and 1.0.0 to 10.0.0 is Windows 10.
How do I know a request really comes from Googlebot?
Check the IP address, not the string, since anyone can send Googlebot’s User-Agent. Run a reverse DNS lookup on the IP: the name must end in googlebot.com, google.com or googleusercontent.com, and a forward lookup of that name must return the same IP. Google also publishes its crawlers’ IP ranges as JSON.
Should I detect browsers from the user agent?
Rarely: strings are frozen, copied and easy to fake, so test for the feature itself, with 'share' in navigator in script or @supports in CSS. The string still helps with analytics, bug reports and spotting crawlers.