USER AGENT PARSER

Paste a User-Agent string from a log, a header dump, or analytics, or read your own browser's. The parser names the browser, rendering engine, operating system, device class, and any bot, crawler, or HTTP library behind it.

Zero retention: your headers never leave this browser. Verify it yourself in DevTools.

Loading the workbench.

About the User-agent parser

How Can You Verify That Nothing Leaves This Browser?

You do not have to take our word that the User-Agent you paste stays here. Developer tools show every request a page makes, so you can watch this page work and confirm that nothing is sent. The check takes under a minute.

  1. Open your browser developer tools with F12, or Cmd+Option+I on a Mac, and select the Network tab.
  2. Reload the page and let it finish. You will see the page's own files, its web fonts, and one anonymous page-view request. Nothing has been typed yet, so none of them can contain the User-Agent you paste.
  3. Click the clear icon in the Network tab so that the log is empty.
  4. Paste real headers into any lane and read the result.
  5. Look at the Network tab again. It is still empty. For extra proof, turn on offline mode after the page loads and every lane keeps working.

Only two things can add a line to that log, and neither carries the User-Agent you paste. Submitting the feedback form sends the vote and comment you typed. Typing characters in a script the page has not displayed yet, such as Cyrillic or Greek, can make the browser fetch the matching font file, and that request names only the font.

2http never sends a request on your behalf: the request builder writes code for you to run, and the meta inspector reads source you paste instead of fetching a URL. The production site also sends a Content-Security-Policy header that tells your browser to refuse connections to anywhere except this site and the anonymous analytics endpoint.

What Does a User-Agent String Contain?

A User-Agent is a free-text header that names the client. Browser strings are long and historical: almost all start with Mozilla/5.0 and mention AppleWebKit, KHTML, Gecko, Chrome, and Safari, whatever the real browser is. The parser reads past that history to find the tokens that matter, such as Edg/ for Edge, OPR/ for Opera, or CriOS/ for Chrome on iOS.

  • Browser and version, and the rendering engine: Blink, WebKit, Gecko, EdgeHTML, Trident, or Presto.
  • Operating system and version, including iOS, iPadOS, Android, ChromeOS, macOS, Windows, and Linux.
  • Device class: desktop, mobile, tablet, TV, game console, bot, or script.
  • CPU architecture where the string states it.

Why Did the Old Parser Get Browsers Wrong?

Every Chromium browser also says Chrome in its User-Agent, and the original parser tested for Chrome first, so Edge, Opera, Vivaldi, Samsung Internet, and Yandex Browser were all reported as Chrome. 2http tests the specific browsers before the generic ones. It also removed patterns for Brave and Arc that could never match: neither browser puts its name in the User-Agent, and the result now says so honestly instead.

Which Bots and Crawlers Are Recognized?

The list covers current agents, with specific tokens tested before generic ones so that, for example, OAI-SearchBot is not mistaken for GPTBot.

  • Search crawlers such as Googlebot, Bingbot, DuckDuckBot, Applebot, YandexBot, and Baiduspider.
  • AI crawlers and assistants such as GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-User, PerplexityBot, CCBot, Bytespider, and Meta-ExternalAgent.
  • Link-preview fetchers for Facebook, X, LinkedIn, Slack, Discord, Telegram, and WhatsApp, plus SEO tools and uptime monitors.
  • HTTP libraries and tools such as curl, Wget, python-requests, Go, OkHttp, axios, and Postman.

What Can a User-Agent Not Tell You?

  1. Windows 11 still reports Windows NT 10.0, so only client hints can tell it from Windows 10.
  2. Browsers freeze macOS at 10.15.7 and Chrome hides Android versions behind "Android 10; K".
  3. iPads request desktop sites with a Mac Safari User-Agent.
  4. Any client can claim to be Googlebot. Confirm important bots by IP, using reverse DNS or published ranges.

What Other Lanes Are in the Decode Section?

  • Header decoder: Paste raw request or response headers and get every header explained, with secrets masked.
  • Cookie decoder: Decode a Cookie header or Set-Cookie lines: lifetime, scope, SameSite, prefixes, and risks.
  • Cache-Control decoder: Cache-Control directives, freshness math for browser and CDN, and ETag revalidation.
  • CORS checker: Describe a cross-origin request, paste the response, and get the browser's verdict.

Elsewhere in 2http: Security header audit, Request builder, Meta tag generator, HTTP status codes, MIME types, and all eleven lanes on the 2http home page. Part of the 2suite.io privacy-first ecosystem.

Frequently Asked Questions

Can the parser detect Brave or Arc?

No, not from the User-Agent string alone. Both send the same string as Chrome. Brave can be detected in JavaScript through navigator.brave, but nothing in the header distinguishes them.

How do I verify that a request really came from Googlebot?

Do a reverse DNS lookup on the IP address and check that it ends in googlebot.com or google.com, then a forward lookup to confirm the same IP. The User-Agent alone can be faked.

What are client hints?

Client hints are structured headers such as Sec-CH-UA and Sec-CH-UA-Platform that browsers send instead of putting everything in the User-Agent. They give accurate versions that the reduced User-Agent hides.

Is the User-Agent I paste stored?

No. Parsing happens entirely in this tab. The Use my browser button reads your own User-Agent locally and sends nothing anywhere.

Was this helpful?