Skip to content
FizzKit

User-Agent Parser

Decode a User-Agent string into browser, engine, OS, device and CPU, with in-app webview detection (Facebook FBAN/FBAV, Instagram, TikTok, Android WebView, iOS WKWebView) and a 100+ entry sample library covering desktop, mobile, connected TV (Roku, Samsung Tizen, LG webOS, Fire TV, Android TV, Apple tvOS, Vizio, Comcast X1, PlayStation, Xbox), crawlers (Googlebot, Googlebot-Video, AdsBot, bingbot, GPTBot, ClaudeBot) and HTTP clients. Paste Sec-CH-UA* Client Hints headers to override the frozen UA fields, or pull your own high-entropy hints from navigator.userAgentData. The OpenRTB card derives device.devicetype, make, model, os, osv and a structured sua object and hands them to the OpenRTB Request Builder. "My headers as the server saw them" shows the UA, Client Hints and Accept-Language the relay received. Compare two UAs side by side or classify a pasted batch and export CSV.

Fetches URLs via the FizzKit relay — nothing is stored
Chrome128.0.0.0
macOS 10.15.7 · Apple Macintosh
Desktop (inferred)Blink 128.0.0.0

Frozen UA: macOS always reports 10_15_7, Chrome minor version is 0.0.0. Real versions live in Client Hints.

Browser
NameChrome
Version128.0.0.0
Major128
Type—
Engine
NameBlink
Version128.0.0.0
OS
NamemacOS
Version10.15.7
Device
Type—
VendorApple
ModelMacintosh
CPU—
OpenRTB device suggestion
devicetype2 — Personal Computer
makeApple
modelMacintosh
osmacOS
osv10.15.7
sua.source3 — parsed from UA string

Desktop / laptop browser → 2 (Personal Computer).

device object (OpenRTB 2.6)
{
  "device": {
    "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36",
    "devicetype": 2,
    "make": "Apple",
    "model": "Macintosh",
    "os": "macOS",
    "osv": "10.15.7",
    "sua": {
      "browsers": [
        {
          "brand": "Chrome",
          "version": [
            "128",
            "0",
            "0",
            "0"
          ]
        },
        {
          "brand": "Blink",
          "version": [
            "128",
            "0",
            "0",
            "0"
          ]
        }
      ],
      "source": 3,
      "platform": {
        "brand": "macOS",
        "version": [
          "10",
          "15",
          "7"
        ]
      },
      "mobile": 0,
      "model": "Macintosh"
    }
  }
}
Length
117 chars
Type
Desktop
Browser
Chrome
OS
macOS
Engine
Blink
In-app
no
OpenRTB devicetype
2
Parsed result (JSON)
{
  "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36",
  "browser": {
    "name": "Chrome",
    "version": "128.0.0.0",
    "major": "128"
  },
  "engine": {
    "name": "Blink",
    "version": "128.0.0.0"
  },
  "os": {
    "name": "macOS",
    "version": "10.15.7"
  },
  "device": {
    "model": "Macintosh",
    "vendor": "Apple"
  },
  "cpu": {},
  "kind": "desktop",
  "webview": null
}

How to use User-Agent Parser

  1. 1Paste a User-Agent string, click "Use my browser’s UA", or open the sample library and pick a browser, webview, CTV device or bot.
  2. 2Read the browser, engine, OS, device and CPU rows; webview and bot detection appear as tags on the header card.
  3. 3Open the Client Hints tab and paste Sec-CH-UA* headers (or use "My high-entropy hints" in Chrome) — the merged table shows which fields the hints override.
  4. 4Copy the OpenRTB device object or click "Open in OpenRTB Builder" to drop it into a bid request.
  5. 5Use Compare for two UAs side by side, or Batch to classify a column of UAs from your logs and download CSV.

About User-Agent Parser

Decode a User-Agent string into browser, engine, OS, device and CPU, with in-app webview detection (Facebook FBAN/FBAV, Instagram, TikTok, Android WebView, iOS WKWebView) and a 100+ entry sample library covering desktop, mobile, connected TV (Roku, Samsung Tizen, LG webOS, Fire TV, Android TV, Apple tvOS, Vizio, Comcast X1, PlayStation, Xbox), crawlers (Googlebot, Googlebot-Video, AdsBot, bingbot, GPTBot, ClaudeBot) and HTTP clients. Paste Sec-CH-UA* Client Hints headers to override the frozen UA fields, or pull your own high-entropy hints from navigator.userAgentData. The OpenRTB card derives device.devicetype, make, model, os, osv and a structured sua object and hands them to the OpenRTB Request Builder. "My headers as the server saw them" shows the UA, Client Hints and Accept-Language the relay received. Compare two UAs side by side or classify a pasted batch and export CSV.

User-Agent Parser is part of FizzKit — a collection of focused developer and ad-tech tools. This tool uses the FizzKit relay to fetch public URLs on your behalf (so browser CORS rules do not get in the way); fetched content is returned to your browser and not stored.

Frequently asked questions

Reasonably reliable for mainstream browsers, but UA strings can be spoofed trivially and Chromium freezes the OS version and device model. Use it for analytics and targeting hints, never for security decisions.