Chrome user agent strings
The User-Agent and Sec-CH-UA headers the current Chrome sends on every platform, the list for every recent version, and a generator. Computed the way Chromium computes them, and checked against real Chrome 151, 152, 153, 154, 155, 156, 157.
- Current stable
- Chrome 157, since November 3, 2026
- Full version
- 157.0.8103.51 (Windows)157.0.8103.51 (Mac)157.0.8103.50 (Linux)157.0.8103.50 (Android)
- Next release
- Chrome 158, stable November 17, 2026early rollout from November 4, 2026
From Google's Chromium Dash, checked every six hours.
Chrome 157 user agent on every platform
| Platform | User-Agent | Platform / Mobile hints | Copy |
|---|---|---|---|
| Windows | Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/157.0.0.0 Safari/537.36 | "Windows" / ?0 | |
| macOS | Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/157.0.0.0 Safari/537.36 | "macOS" / ?0 | |
| Linux | Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/157.0.0.0 Safari/537.36 | "Linux" / ?0 | |
| ChromeOS | Mozilla/5.0 (X11; CrOS x86_64 14541.0.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/157.0.0.0 Safari/537.36 | "Chrome OS" / ?0 | |
| Android (phone) | Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/157.0.0.0 Mobile Safari/537.36 | "Android" / ?1 | |
| Android (tablet) | Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/157.0.0.0 Safari/537.36 | "Android" / ?0 | |
| Headless (Linux) | Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/157.0.0.0 Safari/537.36 | "Linux" / ?0 |
On every platform, Chrome 157 also sends Sec-CH-UA: "Not-A.Brand";v="99", "Google Chrome";v="157", "Chromium";v="157", and when a site asks for it, Sec-CH-UA-Full-Version-List: "Not-A.Brand";v="99.0.0.0", "Google Chrome";v="157.0.8103.51", "Chromium";v="157.0.8103.51" (Windows build 157.0.8103.51).
Generate the headers for any version
Pick a version, platform and browser; the headers follow Chromium's own rules, including the ones for versions not released yet.
- User-Agent
- Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/157.0.0.0 Safari/537.36
- Sec-CH-UA
- "Not-A.Brand";v="99", "Google Chrome";v="157", "Chromium";v="157"
- Sec-CH-UA-Mobile
- ?0
- Sec-CH-UA-Platform
- "Windows"
GREASE for Chrome 157: Not-A.Brand, version 99 (99.0.0.0 in Sec-CH-UA-Full-Version-List). Setting these headers alone does not make a browser look like Chrome 157: navigator.userAgentData, workers and the rest of the engine keep telling their own story, which is what the user agent checker compares.
Sec-CH-UA by Chrome version
The brand list Chrome sends, version by version. The same list serves Microsoft Edge and Brave with their own name in place of Google Chrome. Versions marked measured were read from real builds on the Chrome release pages; the rest are computed.
| Chrome | Sec-CH-UA | Source |
|---|---|---|
| 159upcoming | "Google Chrome";v="159", "Not/A)Brand";v="8", "Chromium";v="159" | computed |
| 158upcoming | "Chromium";v="158", "Not.A/Brand";v="24", "Google Chrome";v="158" | computed |
| 157current | "Not-A.Brand";v="99", "Google Chrome";v="157", "Chromium";v="157" | measured |
| 156 | "Not:A-Brand";v="8", "Chromium";v="156", "Google Chrome";v="156" | measured |
| 155 | "Google Chrome";v="155", "Chromium";v="155", "Not(A:Brand";v="24" | measured |
| 154 | "Chromium";v="154", "Google Chrome";v="154", "Not A(Brand";v="99" | measured |
| 153 | "Google Chrome";v="153", "Not_A Brand";v="8", "Chromium";v="153" | measured |
| 152 | "Chromium";v="152", "Not?A_Brand";v="24", "Google Chrome";v="152" | measured |
| 151 | "Not=A?Brand";v="99", "Google Chrome";v="151", "Chromium";v="151" | measured |
| 150 | "Not;A=Brand";v="8", "Chromium";v="150", "Google Chrome";v="150" | computed |
| 149 | "Google Chrome";v="149", "Chromium";v="149", "Not)A;Brand";v="24" | computed |
| 148 | "Chromium";v="148", "Google Chrome";v="148", "Not/A)Brand";v="99" | computed |
| 147 | "Google Chrome";v="147", "Not.A/Brand";v="8", "Chromium";v="147" | computed |
| 146 | "Chromium";v="146", "Not-A.Brand";v="24", "Google Chrome";v="146" | computed |
| 145 | "Not:A-Brand";v="99", "Google Chrome";v="145", "Chromium";v="145" | computed |
| 144 | "Not(A:Brand";v="8", "Chromium";v="144", "Google Chrome";v="144" | computed |
| 143 | "Google Chrome";v="143", "Chromium";v="143", "Not A(Brand";v="24" | computed |
How Chrome picks the brand list
All three steps use the major version as their only input, in components/embedder_support/user_agent_utils.cc (read at the 157.0.8103.51 tag):
- The fake brand's name is
Not, a character,A, a character,Brand. Both characters come from the list[" ", "(", ":", "-", ".", "/", ")", ";", "=", "?", "_"], at positionsmajor % 11and(major + 1) % 11. For Chrome 157:Not-A.Brand(source). - Its version is
["8", "99", "24"][major % 3]: 99 for Chrome 157, and99.0.0.0in the full version list. - The order: the list starts as fake brand, Chromium, Google Chrome, and is shuffled with the permutation at
major % 6of Chromium's six-entry table, which says where each entry goes (GetRandomOrder, GenerateBrandVersionList).
This has been Chrome's algorithm since at least Chrome 110, which is where the table above stops. The code on this site reproduces the lists measured on Google Chrome 152, 153, 154, 155, 156 and 157, Microsoft Edge 153 and Brave 154.
What the frozen parts no longer tell
Since Chrome's User-Agent reduction, the string is the same on every machine of a platform (GetUnifiedPlatform). The real values moved to Client Hints that a site has to request:
| Chrome/157.0.0.0 | Sec-CH-UA-Full-Version-List | the full version, e.g. 157.0.8103.51 |
| Windows NT 10.0 | Sec-CH-UA-Platform-Version | 13.0.0 and higher means Windows 11 |
| Intel Mac OS X 10_15_7 | Sec-CH-UA-Platform-Version, Sec-CH-UA-Arch | the macOS version, and arm on Apple silicon |
| Android 10; K | Sec-CH-UA-Platform-Version, Sec-CH-UA-Model | the Android version and the device model |
Other browsers' user agents
FAQ
What is the latest Chrome user agent?
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. On a Mac: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/157.0.0.0 Safari/537.36. The table above has every platform; only the major version (157) changes from one release to the next.
What is the Sec-CH-UA header for Chrome 157?
"Not-A.Brand";v="99", "Google Chrome";v="157", "Chromium";v="157", on every platform. Microsoft Edge and Brave 157 send the same list with their own name in place of Google Chrome.
Why do the brands in Sec-CH-UA change order between versions?
On purpose. Chrome shuffles the three entries (Chromium, the browser's own name and a fake GREASE brand) with a permutation chosen by the major version, and changes the fake brand's name and version the same way, so that servers cannot rely on a fixed list. All six orders come round every six releases.
What is the headless Chrome user agent?
Chrome's headless mode replaces Chrome/ with HeadlessChrome/: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/157.0.0.0 Safari/537.36 on Linux. The Client Hints stay those of Google Chrome, so the two disagree, and any site can see both.
What is the Chrome user agent on iPhone and iPad?
Chrome on iOS runs on Apple's WebKit engine and uses a different string, with CriOS/ and the full Chrome version, a real iOS version, and no Client Hints. It is not covered here, because none of the rules above apply to it.
How do I find my own Chrome user agent?
Open what is my user agent, which shows the string together with the Client Hints your Chrome sends and checks that they agree, or type chrome://version in the address bar and read the User Agent line.
How do I set the Chrome user agent in Puppeteer, Playwright or Selenium?
Puppeteer: page.setUserAgent(ua). Playwright: the userAgent option of browser.newContext(). Selenium: the --user-agent=… Chrome argument. All three change the header and navigator.userAgent but leave the Client Hints and the engine reporting the real version; the examples and the caveats are in how to change your user agent.
Should I put these headers in my scraper?
Only if everything else agrees with them. A request that says Chrome 157 but comes from an HTTP library has a TLS fingerprint no Chrome has (see the JA4 fingerprint checker), and a browser whose User-Agent was changed still reports its real version through Client Hints, workers and its engine features (see what is my user agent).
Related free tools
What is my user agent?
Your User-Agent and Client Hints, and whether they agree with each other.
Random user agent generator
Current Chrome, Edge and Firefox user agents, each with its Client Hints.
JA4 fingerprint checker
Your TLS and HTTP/2 fingerprints next to Chrome's and common HTTP clients'.
Chrome releases
What each Chrome version changed that a page or server can observe.
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