User-Agent String Builder & Generator
Construct accurate HTTP User-Agent request headers and modern Client Hints for testing responsive layouts, web scraping, API development, and bot emulation.
curl -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36" https://example.comheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36'}
r = requests.get('https://example.com', headers=headers)fetch('https://example.com', {
headers: { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36' }
});const context = await browser.newContext({
userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36'
});HTTP User-Agent Architecture & The Shift to Client Hints
01.The Historical Absurdity of "Mozilla/5.0"
Nearly every modern web browser (even Chrome, Safari, and Edge) prefixes its User-Agent string with Mozilla/5.0.
This historical quirk dates back to Netscape Navigator (codenamed "Mozilla"). When Microsoft released Internet Explorer, early web servers served advanced features only to browsers claiming to be Mozilla. IE accordingly included "compatible; MSIE" in its string.
When WebKit (Safari) and later Chrome were developed, web servers were sniffing for "Mozilla", "Gecko", and "Safari", prompting Chrome to string all of them together:
02.Client Hints (Sec-CH-UA) & User-Agent Reduction
Because traditional User-Agent strings expose minute details about the operating system and build versions, ad trackers utilized them for passive browser fingerprinting.
In response, Chromium and web standards bodies launched User-Agent Reduction and User-Agent Client Hints:
- Low Entropy Hints (sent by default):
Sec-CH-UA(browser family),Sec-CH-UA-Mobile(?0 or ?1), andSec-CH-UA-Platform("Windows"). - High Entropy Hints (opt-in via Accept-CH): Detailed version numbers (
Sec-CH-UA-Platform-Version, device model) are only sent if the server explicitly requests them via response headers.
03.User-Agent Emulation in Web Scraping & Testing
When writing automated scripts using Python (requests, playwright) or cURL, the default User-Agent header clearly identifies the library (e.g. python-requests/2.32).
Web Application Firewalls (Cloudflare, Akamai, AWS WAF) routinely block or challenge requests with raw script User-Agents. Setting a realistic desktop or mobile browser User-Agent ensures that APIs and web scrapers are served normal HTML responses rather than 403 Forbidden or captcha challenge pages.
04.Googlebot Mobile-First Indexing
Since 2019, Googlebot predominantly crawls the web using its smartphone agent (Linux; Android ... Mobile Safari).
Always test your server rendering and SEO tags with both Googlebot Desktop and Googlebot Mobile user agents to confirm your responsive templates do not inadvertently hide content, canonical tags, or structured JSON-LD schemas from mobile crawlers.