Why a generated string has to be checked against a parser
Anyone can concatenate tokens. The difficulty is producing a string that a real browser could have produced, and the only honest test of that is to parse the result back. Every string this generator emits is required to parse into exactly the browser, system and device class it was asked for — the parser is the generator's test suite, not a neighbouring tool.
The second rule is refusal. Impossible combinations — Safari on Windows, Chrome for Android presented as a desktop — are not produced at all. A generator that invents them is worse than no generator, because it hands you a string that identifies your traffic as synthetic in one line.
What it is for
Test data for code that parses or branches on User-Agent strings, including the edge cases you would not think to type.
Fixtures for analytics, device detection and responsive-layout tests across a spread of browsers and systems.
Filling a device matrix in QA without owning every device in it.
Seeing how your own site responds to an old browser, a mobile one, or a crawler.
The limits of rotating the string
Changing a User-Agent changes one claim among dozens. Client hints still report the real browser, the engine still renders the way it renders, and canvas, WebGL, fonts and time zone do not move at all — the fingerprint test shows how much is left after the string is replaced. A rotated User-Agent over a fixed fingerprint and a fixed IP is not anonymity; it is a set of requests that look like the same machine claiming to be different machines, which is more conspicuous than not rotating at all.
Everything here runs in your browser. Nothing is generated on our server and nothing is logged.
Frequently asked questions
Are the generated strings real?
They are built from the version and token patterns real browsers use, and each one is verified by parsing it back into the browser, system and device it was requested for. They are plausible rather than copied from a specific machine.
Can I use them for scraping?
You can, and they help a little. They do not make a scraper look like a browser on their own, because sites read client hints, TLS behaviour, JavaScript-visible properties and request timing alongside the string.
Why can I not generate Safari on Windows?
Because the combination does not exist — Apple stopped shipping Safari for Windows in 2012. Emitting it would produce a string no real user has, which is the opposite of what a plausible User-Agent is for.
How often should a User-Agent be rotated?
Rarely, and never on its own. Real browsers keep one string for weeks between updates, so a session that changes it every request is anomalous. If you rotate, the fingerprint and the IP have to move with it.
Do the strings include the right browser versions?
They follow current version patterns, but a fixed list ages. If you need a specific version for a test, set it rather than trusting the default, and re-check the list when browsers ship a major release.
Are the generated strings sent to your server?
No. Generation happens entirely in your browser; nothing about what you generate reaches us or is stored.