# User Agent String

Key: `technology.internet.user_agent`

HTTP User-Agent header string identifying the client application. Typically contains browser, OS, and version information.

Page: <https://meridian.online/docs/projects/finetype/types/technology/internet/user_agent>

Samples: `Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36`, `Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X)`, `curl/7.64.1`

## Background

### Origin

RFC 9110 says that, by convention, product identifiers are listed in decreasing order of their significance for identifying the user agent software.[[1]](https://www.rfc-editor.org/rfc/rfc9110.html) RFC 9110 encourages implementations not to use the product tokens of other implementations to declare compatibility with them.[[1]](https://www.rfc-editor.org/rfc/rfc9110.html)

WebAIM's history of the user-agent string records that NCSA Mosaic called itself NCSA\_Mosaic/2.0 (Windows 3.1).[[2]](https://webaim.org/blog/user-agent-string-history/) According to WebAIM's history, Netscape called itself Mozilla/1.0 (Win3.1), and webmasters began sending frames only to browsers identifying as Mozilla.[[2]](https://webaim.org/blog/user-agent-string-history/) WebAIM's history describes Internet Explorer declaring itself Mozilla compatible, with a string such as Mozilla/1.22 (compatible; MSIE 2.0; Windows 95), so that it would be sent frames.[[2]](https://webaim.org/blog/user-agent-string-history/) MDN says Mozilla/5.0 is a general token meaning the browser is Mozilla-compatible, and that for historical reasons almost every browser today sends it.[[3]](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/User-Agent) The history of impersonation is why a modern browser string reads like a list of every engine it has ever had to impersonate, and why the first token tells you almost nothing about which browser actually made the request. (Meridian's view)

### Use

RFC 9110 says servers often use the User-Agent field to identify the scope of reported interoperability problems, to work around user agent limitations, and for analytics on browser or operating system use.[[1]](https://www.rfc-editor.org/rfc/rfc9110.html) The Apache HTTP Server's Combined Log Format records the User-Agent request header as its final quoted field.[[4]](https://httpd.apache.org/docs/2.4/logs.html) Apache's documentation describes the logged User-Agent as the identifying information that the client browser reports about itself.[[4]](https://httpd.apache.org/docs/2.4/logs.html)

By default, curl sends a User-Agent of the form curl/VERSION.[[5]](https://curl.se/docs/manpage.html) MDN lists curl/7.64.1 and PostmanRuntime/7.26.5 as examples of library and network tool user-agent strings.[[3]](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/User-Agent) Wikipedia notes that user agent spoofing may make collected statistics of web browser usage inaccurate.[[6]](https://en.wikipedia.org/wiki/User-Agent_header)

Chrome's User-Agent Reduction plan replaces the minor, build and patch parts of the Chrome version with 0.0.0.[[7]](https://www.chromium.org/updates/ua-reduction/) Under User-Agent Reduction, Chrome's desktop platform token is one of a fixed set of literal values, such as Windows NT 10.0; Win64; x64 or Macintosh; Intel Mac OS X 10\_15\_7.[[7]](https://www.chromium.org/updates/ua-reduction/) The Chromium plan's final phase, in Chrome 113, gives all page loads the reduced user-agent string.[[7]](https://www.chromium.org/updates/ua-reduction/)

## Sources

1. [RFC 9110: HTTP Semantics](https://www.rfc-editor.org/rfc/rfc9110.html) — standard
2. [WebAIM: History of the browser user-agent string](https://webaim.org/blog/user-agent-string-history/) — secondary source
3. [User-Agent header - HTTP \| MDN](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/User-Agent) — secondary source
4. [Log Files - Apache HTTP Server Version 2.4](https://httpd.apache.org/docs/2.4/logs.html) — documentation
5. [curl - How To Use](https://curl.se/docs/manpage.html) — documentation
6. [User-Agent header - Wikipedia](https://en.wikipedia.org/wiki/User-Agent_header) — secondary source
7. [User-Agent Reduction](https://www.chromium.org/updates/ua-reduction/) — documentation
