Random user agent generator
Real, current user agents for Chrome 157, Edge 157 and Firefox 160 on Windows, macOS, Linux and Android, each with the Client Hints the same browser sends alongside it.
How these are generated
Each entry is a browser, a platform and a version drawn at random, turned into the exact string that browser sends: Chrome's and Edge's frozen platform tokens and .0.0.0 version, Firefox's rv: and Gecko/20100101. For Chrome and Edge, the Sec-CH-UA brand list is computed with Chromium's own algorithm, the same one on the Chrome user agent page. Every combination this page can produce passes the consistency checks of the user agent checker; the site's tests generate a few hundred and verify each one.
The list is made in your browser and never sent anywhere. Versions: Chrome 157 (Chromium Dash), Edge 157 (Microsoft), Firefox 160 (Mozilla).
Use these user agents in your code
Copy the list as JSON and each entry is a ready set of headers: the User-Agent and, for Chrome and Edge, the Client Hints that belong with it. Pass the whole set, not only the user agent, and keep one set for a session:
import json
import random
import requests
# "Copy JSON" above: a list of header sets, each a User-Agent with its Client Hints.
with open("user-agents.json") as f:
header_sets = json.load(f)
session = requests.Session()
session.headers.update(random.choice(header_sets)) # one identity for the whole session
r = session.get("https://example.com")
print(r.status_code, session.headers["User-Agent"])For a real browser (Playwright, Puppeteer, Selenium), it is usually better to keep the browser's own user agent: overriding it changes the header and navigator.userAgent, while the Client Hints, workers and engine features keep reporting the real version. See how to change a user agent and what each method changes.
What a user agent cannot change
A User-Agent header describes a browser; it does not turn a client into one. Servers compare it with things it cannot touch: the TLS and HTTP/2 handshake, the header order, and, once a page runs JavaScript, the engine's own features and the values in workers. That is why the same string from an HTTP library and from a real Chrome gets different treatment, and why a browser that only rewrites the header keeps its real version everywhere else.
FAQ
What is the most common user agent?
Chrome on Windows: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/157.0.0.0 Safari/537.36. Chrome accounts for about two thirds of browser use worldwide, and every Chrome on Windows of the same version sends exactly this string.
What is a random user agent?
A User-Agent string picked at random from those real browsers send, typically to make automated requests look like they come from different people's browsers. The ones here are the exact strings current Chrome, Edge and Firefox send on each platform, not made-up combinations.
Why do the Chrome and Edge entries come with extra headers?
Because a real Chrome or Edge never sends its User-Agent alone: every request also carries Sec-CH-UA, Sec-CH-UA-Mobile and Sec-CH-UA-Platform, and their values follow from the version and the platform. A Chrome User-Agent with no Client Hints, or with the brand list of another version, is something a server can spot at once. Firefox sends no Client Hints.
Will rotating user agents stop my scraper from being blocked?
Rarely on its own. The User-Agent is one line of many: the TLS handshake of an HTTP library does not match any browser (see the JA4 fingerprint checker), and a real browser whose User-Agent was changed still reports its true version through Client Hints, workers and its engine (see what is my user agent). A different browser identity on every request is also unlike any real visitor.
Where do the versions come from?
From each vendor's own release feed, checked every six hours: Chromium Dash for Chrome, Microsoft's Edge update feed, and Mozilla's product details for Firefox. Older versions (if you choose them) are the current one minus one or two, because real browsers lag a little behind a release.
Why is Safari not included?
Safari's version follows Apple's operating system releases and has no public, machine-readable release feed, so any Safari string here would be a guess. The same goes for mobile Firefox, whose Android version token we have not verified.
How many user agents should I rotate?
Fewer than most people expect. A real visitor keeps one browser for a whole visit, so keep one user agent, with its Client Hints, for a session or an account, and change it between sessions rather than between requests. Then make the rest of the request (headers, TLS, language) fit it.
Is it legal to change your user agent?
Changing your own browser's user agent is an ordinary setting: browsers build it into their developer tools. Whether a particular use is allowed is a separate question, which depends on the site's terms and the country you are in. This is not legal advice.
Related free tools
Chrome user agent strings
The latest Chrome user agents and Sec-CH-UA headers, and a generator for any version.
What is my user agent?
Your User-Agent and Client Hints, and whether they agree with each other.
curl converter
A curl command as Python, curl_cffi, Node.js fetch or Go code.
What browser am I using?
Your browser and version, and whether it is up to date.
This page read your user agent and client hints.
In Clearcote the header, the client hints and JavaScript all report the same browser.
Pro build: 240 patches · 35,915 lines added · 345 Chromium files
What Clearcote sets in the engine
- Canvas
- WebGL
- WebGPU
- Audio
- Fonts
- Screen and window
- WebRTC
- TLS
- Client hints
- Input timing
- Voices and codecs