piapia123
en

Random User-Agent Generator

Web

Everything runs locally in your browser — nothing is uploaded

Output

Draw random User-Agent strings from a curated dataset — up to 100 at a time, one per line. ⚠️ It only draws from the dataset; it never assembles a string. That is deliberate: a hand-assembled UA looks plausible while its version numbers and platform tokens do not match real patterns (putting iOS’s `CriOS` into a desktop Chrome string, say), and servers recognise it as an obvious forgery. Every entry in the dataset is cross-checked against this site’s UA parsing. ⚠️ This is not a stealth tool. A UA is one request header; changing it alters none of the other identifying characteristics (TLS fingerprint, header order, request timing). Anyone hoping to evade anti-bot systems should know that switching a UA from curl to Chrome is one of the easiest disguises to spot. The legitimate use here is compatibility testing — seeing how your server behaves across a range of real clients. ⚠️ The data is a September 2026 snapshot and does not update itself. For today’s exact version, copy it from your own browser’s developer tools.

Features

  • Drawn from a real dataset, never assembled (assembled strings drift from real patterns)
  • Filter by browser, platform and era
  • Up to 100 per run, one per line, ready to paste into a script
  • Includes mobile and in-app browsers (WeChat, QQ, Douyin)
  • Includes crawler and command-line client strings
  • Generated by the browser’s RNG — no network

How to use

  1. Pick a browser, platform and era (all by default)
  2. Pick how many you need
  3. Click “Generate again” for a fresh batch
  4. Copy the result

FAQ

Will these UAs get past anti-bot detection?
Usually not, and this tool is not built for that. A UA is one header; anti-bot systems look at much more: TLS fingerprint (HTTP libraries differ visibly in how they handshake), header order, which browser-only headers are present, request timing, and whether JavaScript ran. The clearest counterexample: a Chrome UA generated here, sent by curl, still carries curl’s TLS fingerprint and header order — to any serious detector that combination (“claims Chrome, behaves like curl”) looks more suspicious than plain curl. The legitimate use is compatibility testing: making sure your server works across a range of real clients.
Why is Brave missing?
Because Brave’s UA is byte-for-byte identical to Chrome’s — it deliberately does not identify itself. The dataset asserts that every string is unique, so adding Brave would insert an exact duplicate carrying no information. In the same spirit, no string here is invented for a browser that does not have one: the dataset holds real shapes only, and every entry must agree with UA parsing or that test fails.
What if my filters leave fewer entries than I asked for?
Repetition is allowed. Filter down to 6 entries and ask for 20, and you get repeats — asking for 20 rows should produce 20 rows. It will not de-duplicate (that would hand you fewer rows than requested), and it will not invent strings to make up the count (which is the worst option described above). If nothing matches at all, the tool reports an error listing your filters rather than returning an empty result.

Related tools