What is my user agent?
Your browser sends a user agent string with every request. Below is yours, what a server reads from it, and the Client Hints that are gradually replacing it. Everything is read locally in your browser and copied only when you press the button.
Reading…
How to read a user agent string
The format is a historical accident, and that is the honest explanation for why it looks the way it does. Nearly every browser claims to be several others. A current Chrome string starts with Mozilla/5.0, mentions AppleWebKit and KHTML, like Gecko, then Chrome, then Safari. None of that is a lie the browser tells for fun: each token was added so that servers written for an older browser would keep serving the page.
What is actually informative is the small part at the end: the product name and version of the browser, the platform token in brackets, and whether Mobi appears. That is what the table above extracts.
Client Hints: what is replacing the string
Because the user agent string is a fingerprinting surface, Chromium browsers have been freezing it — the version numbers stop being precise and the platform detail gets coarser. The replacement is User-Agent Client Hints: instead of one string that carries everything, the browser sends a small set by default and the server has to ask for more.
Firefox and Safari have not implemented them, so if the panel above is empty, that is why. In practice this means server-side detection built on the user agent string is getting less reliable every year, and anything important should be built on feature detection instead.
Why user agents matter when you fetch pages
If you request pages programmatically, the user agent you send is part of how sites decide what to do with you. Three points worth knowing:
- Identify yourself honestly if you are a bot. A crawler with its own named user agent can be allowed or blocked deliberately in robots.txt, which is the outcome you want.
- A user agent alone does not make you look like a browser. Sites also see the TLS handshake, the header order and the HTTP/2 settings. A Python client claiming to be Chrome is trivially distinguishable from Chrome.
- Do not send a stale one. A three-year-old Chrome version is a stronger bot signal than an honest client string.
Questions about user agents
What is a user agent string?
Why does my user agent say Mozilla when I use Chrome?
How do I change my user agent?
general.useragent.override in about:config. For scripted requests you set the header on the client.What are Client Hints and why is my browser not showing any?
Can a website see more than my user agent?
What user agent should a scraper send?
When the user agent is not enough
Fetching pages at scale means matching TLS fingerprints, header order and IP reputation, not just a header. Our API does that and returns the page as Markdown.
Get my free API keyFree key, $2 of usage credit every month, no credit card.