Every browser still claims to be Mozilla/5.0 for reasons that stopped mattering twenty years ago. Analytics code has to untangle that, and testing it needs agents from every platform — including the bots, which look nothing like the rest.
What you can control
- Desktop, mobile and bot agents, each with the correct platform token.
- Parsed browser, version and OS columns alongside the raw string, so you can check your parser against them.
- Bot agents include the real crawler strings plus
curlandpython-requests, which is what most scraping traffic actually sends. - Optional Sec-CH-UA client hints, the header set that is gradually replacing the User-Agent string.
What this is not
Browser versions here are a fixed recent set and will age. Do not use them to test version-gating logic that depends on the current release.
Questions
Why does every user agent start with Mozilla/5.0?
A 1990s compatibility hack that never got removed. Servers checked for 'Mozilla' before serving modern HTML, so every browser started claiming it, and none has dared stop.
What are client hints?
A set of Sec-CH-UA headers that report browser and platform as structured fields instead of one string to parse. They are the intended replacement for the User-Agent header.
Should I detect features or browsers?
Features. Browser detection based on these strings breaks on every release. Use it for analytics, not for deciding what code to run.