User agent test
What's my User-Agent?
See your exact UA string, parsed into browser / OS / device, plus a verdict on whether it would trigger a bot detector.
Running fingerprint checks in your browser…
Anatomy of a User-Agent string
A modern Chrome on Windows UA looks like:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36- Mozilla/5.0, vestigial. Every browser claims this.
- (Windows NT 10.0; Win64; x64), OS and architecture.
- AppleWebKit/537.36 (KHTML, like Gecko), rendering engine. Also vestigial; Chrome uses Blink now.
- Chrome/120.0.0.0, the actually-meaningful version.
- Safari/537.36, kept for backward compatibility with sites that sniff Safari.
Bot tells in the UA
HeadlessChrome, unmodified Chrome launched with--headless.PhantomJS,Selenium,WebDriver, almost no real browser includes these.python-requests/x.y,curl/x.y,Go-http-client, default UAs of HTTP libraries.- UA claims Chrome 70 (5+ years old), likely synthetic or a very neglected botnet.
Frequently asked questions
→What is a User-Agent string?
A User-Agent (UA) is a header your browser sends with every HTTP request. It tells the server which browser, version, and operating system you're using, e.g. 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'. Sites use it for analytics, content negotiation, and bot detection.
→How do I change my User-Agent?
In requests/Python: pass a headers dict with 'User-Agent'. In Playwright/Puppeteer: page.setExtraHTTPHeaders or launch with --user-agent. In Selenium: ChromeOptions().add_argument('--user-agent=...'). But: changing only the UA is not enough, bot detectors cross-check it against navigator.platform, screen size, WebGL renderer, and timezone. Spoof everything together or don't bother.
→What's the best User-Agent for web scraping?
A current, popular Chrome on Windows UA is the safest default, it's the most common combination on the web, so it blends in. Refresh the string every few weeks as Chrome version numbers march forward. Avoid Python's default 'python-requests/x.y' UA, which is an instant block on most sites.
→How can a site detect a fake User-Agent?
Cross-correlation. If your UA claims Chrome on Windows but your navigator.platform says 'Linux x86_64', your WebGL says 'Mesa Intel', and your timezone is Asia/Kolkata while the IP is in Germany, you'll be flagged. The UA itself is rarely the deciding factor, the inconsistencies around it are.
→Is randomizing User-Agent a good idea?
Almost never. Real users keep the same UA for weeks. Rotating UAs per request looks far more bot-like than picking one realistic UA and sticking with it for the whole session. If you must rotate, do it per IP/proxy, not per request.
→What does 'HeadlessChrome' in my User-Agent mean?
It means Chrome was launched with the --headless flag without overriding the UA. Real Chrome reports 'Chrome/120.0.0.0', headless Chrome reports 'HeadlessChrome/120.0.0.0'. Every bot detector watches for this string. Use --user-agent to override it, and use 'new headless mode' (--headless=new) for a more browser-like environment.