Parse a User-Agent
Paste any User-Agent string, or detect the one your browser is sending. UAParse returns the browser, OS, device type, engine, and whether it is a known bot, search crawler, or AI crawler (GPTBot, ClaudeBot, PerplexityBot, CCBot, Google-Extended, Bytespider, … 43 on list 2026-10-08), including AI agents acting for a user (ChatGPT-User, Claude-User, Perplexity-User, Google-Agent, …).
Free: about 20 lookups per minute. Tip: paste a crawler UA from your access logs to see if it is an AI trainer or a search indexer.
JSON
How it works
- Browser / OS / device / engine: parsed with ua-parser-js 1.0.41 (MIT). The AGPL 2.x line is not used.
- Bots & crawlers: a curated list of 151 known bots kept in this repo (43 of them are AI crawlers). The first matching token wins; more specific names (Googlebot-Image, Applebot-Extended) come before the tokens they contain.
- AI purpose: when the operator documents it, we label an AI crawler as
training,search,user_fetch, oragent. - AI agents (acting for a user): 9 User-Agent names (8 current plus the retired Google-NotebookLM) that the operator's own docs describe as fetching or browsing on an individual user's request (ChatGPT-User, Claude-User, Perplexity-User, MistralAI-User, Meta-ExternalFetcher, Amzn-User, Google-Agent, …) get
is_ai_agent: true. AI agents that browse in a real browser and publish no token (e.g. Meta Muse; Meta publishes no Muse User-Agent) are indistinguishable from people here. See AI agents. UAParse is independent and not affiliated with Meta, OpenAI, Google, Anthropic, Amazon, Perplexity or Mistral AI. - No lookups: everything runs inside the Worker. UAParse does not resolve DNS, check IP ranges, or call any third party per request, so a match is never "verified" — anyone can spoof a User-Agent.
- robots.txt is a sibling product: to generate Allow/Disallow rules for these AI tokens, use RobotsGate. UAParse does not build robots.txt.
Wrongly flagged? Report a false positive.
API
curl -X POST -H "content-type: application/json" \
-d '{"ua":"Mozilla/5.0 … GPTBot/1.1"}' "https://<host>/v1/parse"
curl "https://<host>/v1/parse" # parses YOUR User-Agent
API keys are issued by request during early access (free tier: 1,000 lookups/day); email digitalpromohub.support@gmail.com. Bulk parse (up to 100 UAs, paid-plan shape) needs a key. See the API docs.
Using an AI assistant or agent? UAParse is also a remote MCP server: see For AI agents.
For AI agents (MCP)
UAParse is also a remote Model Context Protocol (MCP) server, so AI assistants and agents can parse a User-Agent for you with the parse_user_agent tool. Most MCP clients accept this config; some use a different format (for example, VS Code uses a servers key). Clients with a settings screen just need the URL https://uaparse.mike-tusa.workers.dev/mcp.
{
"mcpServers": {
"uaparse": {
"type": "http",
"url": "https://uaparse.mike-tusa.workers.dev/mcp"
}
}
}
Same limits as the API (about 20 lookups per minute without a key; each tool call is one lookup). An API key goes in an Authorization: Bearer header. Bulk parsing stays in the JSON API. Machine-readable docs: llms.txt · OpenAPI 3.1 spec · MCP endpoint POST /mcp (Streamable HTTP, stateless JSON responses).