What Is a User Agent?

A user agent is a string sent in the User-Agent HTTP header on every request, identifying the client's browser, application, operating system, and version to the server. MDN defines it as "a characteristic string that lets servers and network peers identify the application, operating system, vendor, and/or version of the requesting user agent" (MDN Web Docs (Mozilla), 2025). Servers read this value to decide how to format a response, and bot-detection systems treat it as an early filter.

How Does the User-Agent Header Work?

Every HTTP client, whether a browser, a mobile app, or a scraping script, attaches a User-Agent header to each outbound request. A desktop Chrome string typically includes the browser name and major version, the operating system, and a platform token. The server can then return a mobile-optimized page, a full desktop layout, or block the request if the string matches a known crawler pattern.

The format is loosely standardized but inconsistent in practice. Browser vendors have historically included compatibility tokens from earlier browsers, which is why most modern UA strings still contain "Mozilla/5.0" regardless of the actual browser in use.

How User-Agent Reduction Changes the Signal

Chromium-based browsers have been reducing the detail exposed in the UA string. User-Agent Reduction strips three identifying pieces: the exact platform and OS version, the device model, and the minor browser version (MDN Web Docs - User-Agent reduction, 2025). The goal is to cut the string's usefulness as a passive fingerprinting signal.

Servers that need detailed client information can request it through User-Agent Client Hints, a set of Sec-CH-UA-* headers the browser sends only when the server opts in. This shifts the model from passive broadcast to an active, structured exchange.

Use Cases

Content negotiation. Servers use the UA to detect mobile versus desktop clients and serve the appropriate layout or image size without a separate subdomain or redirect chain.

Bot detection and filtering. Automation tools like curl, Python's requests library, and headless browsers expose distinctive default strings. Detection layers flag requests whose UA matches known non-browser patterns, is missing entirely, or mismatches other signals such as TLS fingerprints or header ordering.

Web scraping and automation. Scrapers and browser-automation tools often set realistic UA strings to reduce early-stage blocks. A well-matched UA should align with the actual browser being emulated, and consistent Sec-CH-UA-* headers help avoid signal mismatch. Massive's Web Render API manages these headers at the infrastructure level, returning clean page content without requiring clients to tune per-request strings manually.

Frequently Asked Questions

A typical Chrome desktop string looks like: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36. It encodes the platform, layout engine, and browser family in a single line.

Yes. Any HTTP client can send any string in the User-Agent header. Browsers expose developer tools to override it per-tab, and automation libraries set it programmatically. Spoofing the UA alone is rarely enough to bypass detection because servers correlate it with other signals such as TLS fingerprints and header order. See user agent spoofing for a full treatment.

User-Agent Client Hints are a set of Sec-CH-UA-* headers that give servers a structured, opt-in way to request specific client details. Instead of broadcasting everything in one string, the browser sends only what the server explicitly asks for, which reduces passive fingerprinting exposure.

Many detection systems treat an absent User-Agent header as an immediate signal of an automated client, because legitimate browsers always send one. A missing or blank header narrows the traffic to scripts or misconfigured tools, making it a cheap and reliable early filter.