User Agent String Examples — What UA Strings Look Like in 2025
User agent strings identify browsers, operating systems, and devices. Here's what UA strings look like for Chrome, Firefox, Safari, mobile browsers, bots, and crawlers — with...
A user agent string is a text identifier that browsers and bots send in HTTP request headers. It tells servers what software is making the request. Here’s what real UA strings look like and how to read them.
Use the User Agent Parser to parse and decode any user agent string.
Desktop browser examples
Chrome on Windows
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36
Reading this:
Windows NT 10.0— Windows 10 or 11Win64; x64— 64-bit architectureChrome/124.0.0.0— Chrome version 124AppleWebKit/537.36— Blink engine (WebKit-compatible)Safari/537.36— legacy compatibility token
Firefox on macOS
Mozilla/5.0 (Macintosh; Intel Mac OS X 14.4; rv:124.0) Gecko/20100101 Firefox/124.0
Macintosh; Intel Mac OS X 14.4— macOS Sonomarv:124.0 Gecko/20100101— Gecko engineFirefox/124.0— Firefox version 124
Safari on macOS
Mozilla/5.0 (Macintosh; Intel Mac OS X 14_4_1) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4.1 Safari/605.1.15
AppleWebKit/605.1.15— WebKit engine versionVersion/17.4.1— Safari versionSafari/605.1.15— Safari token
Edge (Chromium)
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36 Edg/124.0.0.0
Looks like Chrome UA + Edg/124.0.0.0 token at the end.
Mobile browser examples
Chrome on Android
Mozilla/5.0 (Linux; Android 14; Pixel 8) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.6367.82 Mobile Safari/537.36
Linux; Android 14— Android versionPixel 8— device modelMobile— indicates mobile browser
Safari on iPhone
Mozilla/5.0 (iPhone; CPU iPhone OS 17_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4.1 Mobile/15E148 Safari/604.1
iPhone; CPU iPhone OS 17_4_1— iOS versionMobile/15E148— iOS buildSafari/604.1— Safari
Samsung Internet
Mozilla/5.0 (Linux; Android 14; SM-S928B) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/24.0 Chrome/117.0.0.0 Mobile Safari/537.36
SM-S928B— Samsung device model (Galaxy S24 Ultra)SamsungBrowser/24.0— Samsung Internet version
Crawler and bot examples
Googlebot
Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
Googlebot (rendering)
Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/W.X.Y.Z Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
Googlebot uses a Chrome-like UA for rendering JavaScript.
Bingbot
Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)
Twitter/X card preview bot
Twitterbot/1.0
Facebook link preview
facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)
Common monitoring/testing tools
curl/8.6.0
python-requests/2.31.0
Go-http-client/2.0
Wget/1.21.4
PostmanRuntime/7.37.0
The “Mozilla/5.0” mystery
Every modern browser starts with Mozilla/5.0. This is historical: browsers claimed to be “Mozilla compatible” for server compatibility, and it stuck. It no longer means Netscape or Firefox.
Reading OS from the UA string
| Pattern | OS |
|---|---|
Windows NT 10.0 | Windows 10/11 |
Windows NT 6.3 | Windows 8.1 |
Macintosh; Intel Mac OS X | macOS |
Linux; Android | Android |
iPhone; CPU iPhone OS | iOS (iPhone) |
iPad; CPU OS | iPadOS |
Linux; Ubuntu | Ubuntu (rare in UA) |
CrOS | ChromeOS |
Parsing UA strings in JavaScript
// Modern approach: User-Agent Client Hints (when available)
if (navigator.userAgentData) {
const { brands, mobile, platform } = navigator.userAgentData;
console.log({ brands, mobile, platform });
// Get detailed hints:
const data = await navigator.userAgentData.getHighEntropyValues([
'architecture', 'model', 'platform', 'platformVersion', 'fullVersionList'
]);
console.log(data);
}
// Fallback: parse the UA string
const ua = navigator.userAgent;
const isChrome = /Chrome/.test(ua) && !/Chromium|Edge/.test(ua);
const isSafari = /Safari/.test(ua) && !/Chrome/.test(ua);
const isFirefox = /Firefox/.test(ua);
const isMobile = /Mobile|Android|iPhone|iPad/.test(ua);
// Better: use a library
import UAParser from 'ua-parser-js';
const parser = new UAParser(ua);
const result = parser.getResult();
// { browser: { name: 'Chrome', version: '124' }, os: { name: 'Windows', version: '10' }, ... }
Related tools
- User Agent Parser — parse and decode UA strings online
- User Agent Detection Guide — server-side UA parsing
- Bot Detection Guide — identifying bots vs humans
Related posts
- Bot Detection Using User Agent Strings — Googlebot, Bingbot, and Crawlers — Identify search engine crawlers, social media bots, and malicious scrapers from …
- Browser Detection in JavaScript — Feature Detection vs User Agent Parsing — Detect browsers, OS, and device type in JavaScript using user agent strings, fea…
- User-Agent Client Hints — Modern Browser Detection Without UA Sniffing — User-Agent Client Hints replace UA string parsing with structured HTTP headers. …
- User Agent Detection — Parse Browser and Device from User-Agent String — User agent strings identify the browser, OS, and device making an HTTP request. …
Related tool
Parse any User-Agent string into browser, OS, device, and engine. Or detect your own. Built on the maintained ua-parser-js dataset.
Written by Mian Ali Khalid. Part of the Dev Productivity pillar.