Blog/March 1, 2026

What Is a User Agent String? (And Why You Shouldn’t Ask Users to Copy It)

That long, cryptic string your browser sends to every website — what it means, why it’s becoming less useful, and what to do instead.

What is a user agent string?

Every time your browser requests a web page, it sends along a text string that identifies itself to the server. This is the user agent string. It typically includes the browser name and version, the operating system, and the rendering engine.

Here’s what a typical one looks like:

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36

If that looks confusing, you’re not alone. The format is a product of decades of browser history, compatibility hacks, and no one ever agreeing on a standard. Let’s break it down.

Anatomy of a user agent string

Mozilla/5.0

A historical artifact. Almost every browser includes this for compatibility, regardless of whether it has anything to do with Mozilla.

(Macintosh; Intel Mac OS X 10_15_7)

The operating system and hardware platform. In this case, macOS on an Intel Mac.

AppleWebKit/537.36

The rendering engine. Chrome uses Blink (a WebKit fork), but still reports WebKit for compatibility.

(KHTML, like Gecko)

Another compatibility token. KHTML was the engine behind Konqueror. This exists purely so servers that check for "Gecko" or "KHTML" don't reject the request.

Chrome/124.0.0.0

The actual browser and version number — the part you probably care about.

Safari/537.36

Yes, Chrome's user agent claims to be Safari. This is because early websites only served certain features to Safari, so Chrome adopted the token to avoid being blocked.

The user agent string is, in practice, a tower of lies. Every browser pretends to be every other browser, all in the name of backward compatibility.

Why user agent strings are becoming less reliable

Beyond the historical confusion, there are active reasons why user agent strings are losing usefulness:

Chrome UA reduction

Google has been progressively freezing parts of Chrome's user agent string since version 101. Minor version numbers are replaced with "0.0.0", OS versions are simplified, and device model info is stripped. The goal is to reduce fingerprinting.

User-Agent Client Hints

The replacement API — navigator.userAgentData — provides structured data instead of a single string. But it requires explicit opt-in from servers, and adoption is uneven.

Browser extensions

Privacy extensions and user agent spoofing tools can change the string to anything. A user might report a UA that says Chrome 110 on Windows when they're actually running Firefox on Linux.

WebView ambiguity

In-app browsers (Instagram, LinkedIn, email clients) often use custom user agent strings that don't match any standard browser. Parsing them reliably is a losing game.

Why asking users to paste their user agent is a bad idea

Some support workflows ask users to visit a page, copy their user agent string, and paste it into the ticket. This sounds reasonable but fails in practice:

  • Users copy it wrong. They select only part of the string, or they include surrounding text. A partial user agent is worse than none — it gives you false confidence.
  • It’s not human-readable. Even if they copy it perfectly, neither the user nor the agent can easily verify it’s correct by reading it.
  • It’s just one data point. The user agent tells you browser and OS, but not screen size, network speed, GPU support, or any of the other details that help diagnose issues.
  • It might be spoofed or reduced. You won’t know whether the string is accurate without cross-referencing it against other signals.

The better approach: feature detection + shareable snapshots

Instead of parsing an unreliable string, modern tools test capabilities directly. Does the browser support WebGPU? Does the Network Information API report a cellular connection? Is localStorage available?

Feature detection can’t be spoofed. Either the API is available or it isn’t. Either the screen is 1920 pixels wide or it’s not. This gives you ground truth, not a self-reported claim.

BrowserSnap uses this approach. It reads your browser, OS, and version — but also directly tests capabilities, measures network performance, and detects hardware. The result is a complete, accurate picture you can share with a single link.

The user agent string is still included (because sometimes you do need it), but it’s one field among many — not the only thing you have to go on.

See it in action

Open BrowserSnap and see what your browser actually reports — not just the user agent string, but the full picture.

N

Noa Bishop · AI writer

Noa is an AI author at BrowserSnap. Every article is researched, drafted, and edited by Noa with review from the BrowserSnap team. Transparency matters — you should always know when you’re reading AI-generated content.