What's My User-Agent
Display and parse your browser's user-agent string.
This tool runs entirely in your browser. Your data is never uploaded, never stored, and never leaves your device.
Reads the user-agent string your browser announces itself with and splits it into browser and version, operating system, rendering engine and device type.
How to use it
- 1Open the page; the raw string appears in the grey box with no input needed.
- 2Copy it with the button underneath when a bug report or support form asks for it.
- 3Check the four parsed rows below for the interpretation.
Example
- Input
- Chrome on Windows 11
- Output
- Browser Chrome · Operating system Windows 10/11 · Rendering engine Blink · Device type Desktop
Windows 11 still identifies itself as "Windows NT 10.0", so nothing in the string can separate it from Windows 10 — hence the combined label. The parser also checks Edge and Opera before Chrome, because both of those strings contain "Chrome/" and would otherwise be misread. Device type is inferred from the string alone, so an iPad running Safari's default desktop-class request reports macOS and Desktop.
What happens to your data
The value comes from a single read of navigator.userAgent inside your tab, and every row below it is produced by regular expressions in the same component — there is no request to us or anyone else. Nothing extra is collected: no fonts, screen size or plugin list is sampled, so no fingerprint is assembled, and the string is held in React state that disappears when you close the tab.
Last updated August 2026
A support form asks which browser and version you are on, or a bug appears on one colleague's machine and nobody else can reproduce it. What settles that faster than a screenshot of an About box is the single line of text your browser already sends with every request — the line that names the browser, the platform and the engine in the form a server actually receives.
Before reading anything into it, be clear about which of two questions you are asking. What does my browser announce to servers is answered here exactly, because the string is the announcement. What is my browser really, or what can it do, is a different question the string was never able to answer: it is a declaration the browser makes about itself, not a measurement anyone took, and it can be rewritten in developer tools or by an extension.
The format is a pile-up of compatibility history. Nearly every browser still opens with Mozilla/5.0 for reasons that stopped mattering decades ago, Chromium browsers carry Safari and KHTML tokens they inherited rather than earned, and vendors have spent years deliberately removing detail from the string. Two different builds can therefore produce identical text, and any parser reading it has to work by precedence — test for the most specific token first — rather than by fact.
The common mistake follows from that: treating a parsed browser name as a capability test. If you need to know whether something is supported, ask for the feature itself. The string is for logging, reporting and reproducing a fault, not for deciding which code path to run.
How it works
Toolvore reads navigator.userAgent once, in the initialiser that creates the component's state rather than inside an effect, so the string is present in the first paint; the component is loaded with server rendering switched off, which is what makes that safe. Everything under the raw string is regular expressions run over the same line. Browser is a chain tested in order — Edg/, then OPR/, then Firefox/, then Chrome/ where Chromium/ is absent, then Safari/ only when a Version/ token is present — and the digits after whichever token matched become the version. Operating system is a similar chain, and rendering engine reads Gecko followed by a digit as Gecko, otherwise treating AppleWebKit as Blink when Chrome, Edg or OPR appear anywhere in the line and as WebKit when they do not. Device type is one test for Mobi, Android, iPhone or iPad. The weakness is inherent to that approach: nothing is measured, nothing is cross-checked against Client Hints, screen size or touch support, and a string it does not recognise is reported as Unknown rather than guessed at.
Common use cases
- Filling in the browser and version fields on a bug report or support form
- Pasting the exact string into a QA ticket so the environment is not in doubt
- Checking that a user-agent override set in developer tools has taken effect
- Telling whether a page opened in an in-app browser rather than the real one
- Seeing what a phone reports once a request-desktop-site setting is switched on
- Matching a line in a server log against the browser in front of you
Frequently asked questions
Why does every user-agent string start with Mozilla/5.0?+
Because of a compatibility habit from the 1990s that nobody has been able to break. Early servers checked for Mozilla before sending a page that used frames, so other browsers began claiming the name to be served the better version, and every browser since has copied the one before it. The token now carries no information at all: Chrome, Firefox, Safari and Edge all open the same way, and Chromium strings additionally drag along AppleWebKit, KHTML, like Gecko and Safari, none of which say anything useful about the browser in front of you. What actually identifies it is the more specific token nearer the end of the line.
How do I change or spoof my user agent?+
Chromium browsers offer it in developer tools, under the device toolbar or the network conditions panel, where you can pick a preset or type your own. Firefox exposes general.useragent.override in about:config, and Safari has a User Agent menu once the Develop menu is switched on. Extensions and command-line flags do the same thing more permanently. An override set that way changes what scripts on the page see as well as the request header, so reloading this page afterwards shows the substituted string — a quick way to confirm the override is live. Spoofing rarely fixes a site that has refused you, and an unusual string attracts more attention than the one it replaced.
Do User-Agent Client Hints replace the string?+
Not yet, and not everywhere. Client Hints are Chromium's replacement: a set of Sec-CH-UA request headers plus navigator.userAgentData in the page, splitting what used to be one line into low-entropy values sent by default — brand list, a mobile flag, platform name — and high-entropy ones such as full version, architecture and device model that a site has to ask for. Firefox and Safari have not adopted them, so anything that wants to work everywhere still reads the old string, which is also why Chrome now freezes most of its version digits at zero. This page reads only navigator.userAgent, so what appears is the legacy line rather than the hints.
Where does my user agent go when I use this page?+
The value is read once from navigator.userAgent inside your own tab, the four rows below it are worked out by expressions in the same component, and there is no request behind any of it — no upload, no API route, nothing written to storage. It sits in component state and disappears when the tab closes. Worth separating from that: your browser sends this string as a header to every site you load, including the one serving this page, so it is not a secret you are guarding. The point is that nothing further is done with it here, and the copy button hands it to you rather than to anyone else.
Can a website identify me from my user agent alone?+
On its own, almost never — a current Chrome-on-Windows string is shared by an enormous number of people, which is precisely why it carries little identifying weight. It becomes useful to a tracker only in combination: screen dimensions, timezone, language, installed fonts, canvas rendering quirks and a dozen other weak signals multiply into something close to unique. That is also why the intuitive defence backfires. A rare or self-invented string narrows the crowd you are hiding in instead of widening it, and a claim of Firefox on Linux coming from a browser that behaves like Chrome is itself a distinguishing signal.
Why does my browser report as Chrome when I use Brave or Samsung Internet?+
Because those browsers say Chrome on purpose. A distinctive token invites sites to treat you as an unknown quantity and serve a degraded page, so several Chromium browsers either keep the Chrome token alone or hide their own name behind it. The chain here tests Edg/ first, then OPR/, then Firefox/, then Chrome/, so Edge and Opera are caught by the tokens they do declare, while anything else built on Chromium falls through to Chrome. For most purposes that is the useful answer anyway, since the engine and the behaviour genuinely are Chrome's.
Why does the browser row say Unknown?+
The chain has five branches and no fallback, so anything none of them match ends up there. A build branded Chromium is deliberately excluded from the Chrome branch, and it carries no Version/ token either, so it misses Safari as well. The same happens to embedded webviews and in-app browsers that trim their strings, to command-line clients such as curl, to crawlers and bots, and to televisions and consoles. The version is left blank rather than filled with a guess, so the row reads Unknown on its own — while the raw line above stays complete, which is the part worth copying into a report.
Should I use the user agent to detect mobile devices?+
For logging and triage, yes. For deciding what to send someone, no. A test for Mobi, Android, iPhone or iPad is the standard shape and it is wrong in both directions: a tablet asking for the desktop version of a site vanishes from it, a Windows laptop with a touchscreen never appears in it, and a narrow desktop window is not caught at all. Layout questions are better answered by viewport width in a media query, input questions by pointer and hover queries, and capability questions by testing for the feature itself. Keep the string for describing what happened after the fact.
Related tools
IP Subnet Calculator
Calculate network, broadcast, and host ranges from CIDR notation.
HTTP Headers Checker
Inspect the response headers any URL returns.
WHOIS Lookup
Look up domain registration details from WHOIS servers.
My IP & Geolocation
See your public IP address and its approximate location.