User-Agent
Read your browser’s User-Agent and environment details. Include them when reporting a compatibility issue.
Quick start
- Review the estimated browser and OS.
- Read the original User-Agent.
- Compare it with the actual version and issue.
How detection works
The client sends a User-Agent string with the request. PPORT classifies it using rules; it does not inspect the physical device. The string can be changed or reduced for privacy.
Limits of detection
| Field | Caution |
|---|---|
| Browser | Products may share engines and compatibility strings. |
| OS version | Reported versions may differ from the real system. |
| Bot | A bot can use an ordinary browser string. |
| Mobile | This is not a measurement of screen size or touch capability. |
Compatibility checks
Prefer checking for the required browser API rather than relying only on the product name. Report the actual browser version, the failed action, and any error message together.
Reading a User-Agent string
Chrome on Windows usually sends a string like the one below. Each part means something different.
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36| Part | Meaning |
|---|---|
| Mozilla/5.0 | A fixed token almost every browser sends for historical compatibility. It is not the browser name. |
| (Windows NT 10.0; Win64; x64) | Operating system and CPU family. Windows 10 and Windows 11 both appear as NT 10.0. |
| AppleWebKit/537.36 (KHTML, like Gecko) | A rendering-engine compatibility token. Chrome uses the Blink engine but keeps this text. |
| Chrome/129.0.0.0 | The major version. The last three parts are frozen at 0 to reduce fingerprinting. |
| Safari/537.36 | A compatibility token, not a sign that the browser is Safari. Edge appends a part that starts with Edg/. |
Why Windows 11 looks like Windows 10
The User-Agent string stays at Windows NT 10.0 on Windows 11, so the string alone cannot tell the two apart. Chrome and Edge report the OS version separately through User-Agent Client Hints: if the first number of Sec-CH-UA-Platform-Version is 13 or higher it is Windows 11, and 1 to 10 means Windows 10.
This value is not sent by default. The server has to ask for it with the Accept-CH response header, or a page script has to read it with navigator.userAgentData.getHighEntropyValues(["platformVersion"]). Firefox and Safari do not support this, so when the exact version matters in a support request, ask the user to check Settings > System > About.
Checking the User-Agent on your server
In the default nginx combined log format, the User-Agent is the last quoted field of each line. To test how a server responds to a specific User-Agent, use the -A option of curl.
sudo tail -n 5 /var/log/nginx/access.log
curl -sI -A 'Mozilla/5.0 (compatible; MyCheck/1.0)' https://example.com/Anyone can send a string that looks like Googlebot. To confirm a real Google crawler, check that the reverse DNS name of the IP ends in googlebot.com, google.com or googleusercontent.com, and that a forward lookup of that name returns the same IP.