Skip to content
Free tool · Follows every browser release

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.

Browsers

    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.

    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