Every time you open a website, your browser introduces itself.
Not with a name. With a sentence. And that sentence is one of the strangest things on the internet.
Here's what a normal Chrome browser says:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/152.0.0.0 Safari/537.36
Read that again.
Chrome claims to be Mozilla. Then it claims to be AppleWebKit. Then it says it's like Gecko, which is Firefox's engine. Then it mentions Safari. At the very end, almost apologetically, it admits it's Chrome.
That's a real user agent string. Yours looks just as ridiculous. You can see it right now on our what is my user agent page.
Why It's Such a Mess
This is my favourite bit of internet history, so bear with me.
In the nineties, websites started checking which browser you had before deciding what to send you. Fine idea. Terrible execution.
Sites would check for Mozilla, and if they didn't see it, they'd serve a stripped-down page. So the next browser along added Mozilla to its introduction to avoid being punished.
Then the next one copied that. Then the next.
Thirty years later, every browser pretends to be every browser that came before it, because nobody could ever safely stop.
It's a fossil record. Each generation of lie, preserved in a single line of text.
What It Actually Contains
Underneath the historical baggage, it does carry real information:
- Which browser you're using, and roughly which version
- Your operating system
- Whether you're on desktop or mobile
- Sometimes your device type
That's genuinely useful. It's how a site knows to send you a mobile layout.
It's also how a site knows you're not a browser at all.
Where This Matters: Scraping
Here's where it stops being trivia.
If you write a script to fetch a page, most tools announce themselves honestly. Python's requests library says python-requests. Curl says curl.
Which is polite, and also a flashing sign that reads “I am a bot”.
Plenty of sites block on that alone. No clever detection, no fingerprinting, just a lookup: does this say curl? Then no.
People spend hours debugging a 403 that a single header would have fixed. We cover the wider version of this in how to scrape websites without getting blocked.
The Trap Nobody Warns You About
So you set a user agent. Problem solved, surely.
Not quite.
Three ways people get this wrong:
1. Using an ancient one. Copy a string from a 2019 tutorial and you're now claiming to be Chrome 78. Nobody runs Chrome 78. That's more suspicious than being honest.
2. Mixing things that don't go together. Claiming Safari on Windows, or an iPhone user agent with a desktop screen size. The pieces have to agree.
3. Using the exact same one for ten thousand requests. Real traffic is varied. A perfect, unchanging string across thousands of hits is its own signal.
We keep a set of current, verified strings on our user agent list, including real ones we've collected. Worth grabbing a fresh one rather than trusting an old blog post.
The Uncomfortable Part
Your user agent is also a tracking signal.
On its own it's not much. Millions of people share yours.
But combine it with your screen size, your timezone, your fonts, your language, and suddenly you're not one of millions. You might be one of very few.
That's browser fingerprinting, and it works whether or not you hide your IP. You can route through a proxy in another country and still be recognisable because everything else about your browser stayed the same.
Which is why using a proxy safely is about more than just the IP address.
The Bots That Tell You Honestly
Not everything hides. Some of the biggest crawlers on the internet announce themselves clearly, on purpose.
Googlebot says it's Googlebot. Bingbot says Bingbot. The newer AI crawlers do the same, with names like GPTBot and ClaudeBot sitting right there in the string.
That's deliberate. They want you to recognise them so you can allow or block them in your robots file. A crawler that lied would be a crawler you couldn't manage.
It also means your server logs are more readable than you'd expect. A quick look at your user agents will tell you exactly who has been visiting, and how much of your traffic isn't human at all.
The Slow Replacement
There's a plot twist to all this.
Browsers are quietly moving away from the user agent string. It's too messy, too easy to abuse for tracking, and nobody wants to maintain the fiction forever.
The replacement is called client hints. Instead of one long sentence shouted at every site, your browser sends a few small pieces by default and only reveals the detailed stuff if a site specifically asks.
So a site gets the basics for free, and has to request your exact platform version rather than being handed it automatically.
It's a better design. It's also a slow transition, which means for now you get both. The old string is still there, frozen and increasingly vague, sitting alongside the new system.
You can see both on our user agent page, which shows the classic string and the client hints your browser is willing to share.
Should You Change It?
If you're scraping or testing, yes. Set something current and sensible.
If you're just browsing, probably not. A weird user agent makes you more distinctive, not less. Blending in beats standing out.
Either way, it's worth knowing what you're announcing. Go look at yours on the user agent checker and enjoy the fact that your browser has been lying politely since before some of its users were born.