Skip to content

Browser Tools

What is my User-Agent?

See the raw User-Agent string your browser sends, and what it says about your setup.

User-Agent string

Your browser

Reading…

Analyse a different User-Agent

Paste a string from a server log, a header dump or a device you cannot open a browser on.

Enter analyses the string. Shift+Enter inserts a line break.

What it means

Browser
—
Browser version
—
Rendering engine
—
Operating system
—
Device type
—
Platform
—
Automated client
—

Platform comes from a browser API rather than from the string, so it is the one row that cannot be filled in for a pasted User-Agent.

What a User-Agent string actually contains

Take a typical desktop Chrome User-Agent:

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

Each token has a job, and most of them are historical baggage:

  • Mozilla/5.0 — a compatibility token every browser sends. It carries no real information.
  • (Macintosh; Intel Mac OS X 10_15_7) — the platform. Note that macOS has reported 10_15_7 regardless of actual version since Big Sur, deliberately, to reduce fingerprinting.
  • AppleWebKit/537.36 (KHTML, like Gecko) — the rendering engine lineage, frozen years ago.
  • Chrome/131.0.0.0 — the part that is genuinely informative. Minor version digits are zeroed on purpose.
  • Safari/537.36 — another compatibility claim, not an indication that Safari is involved.

Rendering engines, and why the browser name is not enough

The engine is the part that turns markup into pixels, and it is what decides which features work and which bugs you hit. It is also shared far more widely than the browser names suggest: Edge, Opera, Brave and Vivaldi are all Chrome's engine in different clothes, and every browser on an iPhone is Safari's engine whatever name is on the icon.

No User-Agent states its engine outright, so it has to be inferred from tokens that were chosen for compatibility rather than accuracy. Here is what each one means.

Engine Browsers Token that identifies it
Blink Chrome, Edge, Opera 15+, Brave, Vivaldi, Samsung Internet AppleWebKit/537.36 alongside a Chrome token
WebKit Safari, and every browser on iOS and iPadOS AppleWebKit at any other version
Gecko Firefox and the browsers built on it An rv: version followed by Gecko/
EdgeHTML Edge 12–18, from 2015 until 2020 Edge/ — Chromium Edge dropped the final "e"
Trident Internet Explorer 8–11 Trident/
Presto Opera 7–12, before it moved to Blink Presto/

Chrome on an iPhone is not Blink

Apple has required every iOS browser to use the system WebKit, so Chrome, Firefox and Edge on an iPhone are WebKit with a different interface and sync service bolted on. The Digital Markets Act now permits alternative engines in the EU, but nothing has shipped widely enough to change what the strings say.

They admit it quietly. The Chrome token becomes CriOS, Firefox becomes FxiOS, Edge becomes EdgiOS, and the AppleWebKit version is Safari's own rather than the 537.36 that Blink froze at when it forked in 2013. A parser that only looks for the word "Chrome" gets this wrong, and the consequence is a site shipping a Blink-only feature to a browser that cannot run it.

Analysing a string you did not send

The box above takes any User-Agent — from a request log, a bug report, an analytics export, or a device you cannot get a browser open on — and runs it through the same parser as your own. It is ordinary JavaScript in this page, so the string is never uploaded and never recorded.

Every row except Platform is derived from the text alone. Platform reads navigator.platform, which describes the machine you are sitting at rather than the string you pasted, so it is blanked instead of being carried over and misread as a property of someone else's browser.

Why User-Agent detection is unreliable

The string is supplied by the client, so it is a claim rather than a fact. Anyone can change it in one line of configuration, and plenty of software does — privacy extensions, corporate proxies, crawlers imitating browsers, and testing tools all rewrite it routinely.

This is why feature detection has replaced browser detection in good front-end practice. Ask whether the capability you need exists rather than guessing from a name and version. Reserve the User-Agent for analytics, debugging and coarse decisions where being wrong is harmless.

User-Agent Client Hints

Chromium browsers now expose the same information through a structured mechanism instead. Low-entropy values such as the browser brand and whether the device is mobile are sent by default; anything more specific — full version, platform version, model — has to be requested explicitly by the server. The result is that sites which genuinely need detail can ask for it, while passive fingerprinting gets meaningfully harder.

User-Agents and privacy

Your User-Agent is one input to a browser fingerprint: combined with your screen size, timezone, language and installed fonts, it can identify a browser without any cookie at all. See exactly what your browser exposes on the browser info page.

The counterintuitive part is that trying to hide can make you easier to track. A common, unmodified User-Agent blends into millions of others. A rare or self-contradictory one — claiming Windows while exposing macOS font metrics, say — stands out immediately.

Frequently asked questions

What is a User-Agent string?

A User-Agent is a line of text your browser sends with every request, describing itself and the platform it runs on. Servers use it to decide things like whether to send a mobile layout or which download to offer. It is self-reported, so it can be changed or faked at will.

Why does my User-Agent mention browsers I do not use?

For historical compatibility. Almost every User-Agent begins with "Mozilla/5.0" because 1990s servers checked for it before serving modern pages, and browsers have never been able to drop it. Chrome also claims to be Safari and KHTML, and Edge claims to be Chrome, for the same reason: nobody can afford to be excluded by a badly written server check.

What is a rendering engine, and why does it matter more than the browser name?

The engine is the component that turns HTML, CSS and JavaScript into a page. It decides which features exist and which bugs you meet, and it is shared: Chrome, Edge, Opera, Brave, Vivaldi and Samsung Internet are all Blink, so a page that works in one almost always works in the rest. Testing one browser per engine covers far more ground than testing six browsers on one engine.

Why does Chrome on my iPhone report WebKit rather than Blink?

Because it genuinely is WebKit. Apple has required every iOS browser to use the system engine, so Chrome, Firefox and Edge on an iPhone are Safari underneath with a different interface and sync service on top. The string admits it: the Chrome token becomes CriOS and the AppleWebKit version is Safari’s rather than the 537.36 that Blink has frozen at since 2013.

Can I analyse a User-Agent other than my own?

Yes — paste any string into the box on this page. It is parsed by JavaScript running in your browser, exactly as your own string is, so nothing is uploaded and nothing is stored. Platform is the one value that cannot be filled in for a pasted string, because it comes from a browser API rather than from the text.

Is the User-Agent being phased out?

It is being frozen rather than removed. Chromium browsers now report reduced detail and offer User-Agent Client Hints as a structured replacement, where a site must explicitly ask for specific fields. Expect the string to keep existing but to become progressively less specific.