SpeedDrain
HTTP Headers · Client Hints (Sec-CH-UA) · Web Crawlers · cURL & Python

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.

Select Profile:
Active User-Agent Header Value:
Modern Client Hints (Sec-CH-UA Headers):
Sec-CH-UA: "Google Chrome";v="131", "Chromium";v="131", "Not_A Brand";v="24"
Sec-CH-UA-Mobile: ?0
Sec-CH-UA-Platform: "Windows"
cURL CLI Request
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.com
Python (requests)
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'} r = requests.get('https://example.com', headers=headers)
JavaScript (Fetch API)
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' } });
Playwright / Headless Browser
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:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36

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), and Sec-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.