# Sec-CH-UA-Arch on an Apple silicon Mac: arm

> Chrome on an Apple silicon Mac sends Sec-CH-UA-Arch "arm". Our profile records said "x86", read by nothing, so we fixed the record, not the browser.

Source: https://mosaicbrowser.com/blog/ua-architecture-x86-arm

## Our profiles said x86 and the browser said arm

Chrome on an Apple silicon Mac sends Sec-CH-UA-Arch "arm". Our profile records said "x86", read by nothing, so we fixed the record, not the browser.

![Record: x86 versus Browser: arm, each name in its own tile: The record said x86 and the browser said arm](https://mosaicbrowser.com/covers/ua-architecture-x86-arm.webp)

On an Apple silicon Mac, Chrome sends `Sec-CH-UA-Arch: "arm"` and `navigator.userAgentData.getHighEntropyValues(['architecture'])` resolves to `"arm"`, while the User-Agent string beside it still says `Intel Mac OS X 10_15_7`. That pairing is normal. For a while Mosaic's own profile records said `"x86"` instead, the browser kept saying `arm`, and nothing in between had ever read the record.

## What Sec-CH-UA-Arch says on a Mac

`Sec-CH-UA-Arch` is a high-entropy client hint. Chrome does not send it on every request; a site has to ask with an `Accept-CH` response header, or read it from JavaScript through `getHighEntropyValues()`. On a desktop it has two values in Chrome's vocabulary, `arm` and `x86`. `Sec-CH-UA-Bitness` carries the `64`.

So on a Mac there are two answers, one per processor family:

| Mac | `Sec-CH-UA-Arch` | User-Agent string |
| --- | --- | --- |
| Apple silicon | `"arm"` | `Intel Mac OS X 10_15_7` |
| Intel | `"x86"` | `Intel Mac OS X 10_15_7` |

The User-Agent column is the same in both rows on purpose. Chrome froze the platform part of the string, so the processor and the macOS version are in the hints and nowhere else. A site that wants the truth asks for the hints, and an Apple silicon Mac answering `arm` under an Intel User-Agent is simply what Chrome looks like there.

Mosaic is a desktop app

Email yourself the link and open it on your computer.

[How it works: Machines that exist](https://mosaicbrowser.com/features/real-fingerprints)

## The field that reached nothing

Every Mosaic profile stores the values its browser will present, and one of them was `uaArchitecture`. The generator wrote the string `'x86'` into it for every desktop profile it ever drew.

On 19 September 2026 we measured one freshly drawn macOS profile through the app:

```
the profile record            uaArchitecture "x86"
navigator.userAgentData       architecture   "arm"

```

The record and the browser disagreed, and the browser was right. Tesseract Chrome, our engine, has no `--fingerprint-ua-architecture` switch, so it answers from the machine it runs on, the same way stock Chrome does. No launch had ever passed the stored value anywhere. All 344 profiles on that install carried the opposite of what their own browser reported, and the editor and the API showed the wrong one.

That is a shape we keep finding: a stored value that reaches no consumer looks exactly like a working one. It is the same fault as a [rotation setting that was saved and ignored by three launches](https://mosaicbrowser.com/blog/setting-saved-launch-ignored), just quieter, because nothing a site saw was wrong.

## Why we report arm instead of spoofing x86

The obvious fix was to make the browser say what the record said: add a switch, patch the hint, send `x86`. We did the opposite and made the record say what the browser says, and that is the right answer, not a concession.

A macOS profile's fonts, its text rasterisation and its GPU already come from the Mac it runs on. On Apple silicon the GPU is an Apple GPU. A browser claiming `x86` beside an Apple GPU renderer would be inventing a contradiction, which is exactly what a consistency scanner looks for. Answering `arm` is coherent with everything else the page can read, and it is the same answer stock Chrome gives on that Mac, so it separates our profiles from nobody.

What the profile must not do is disagree with itself, and the record was the only place it did.

## What changed in Mosaic

The generator now asks the computer. `hostArchitecture()` reads Node's `process.arch` and translates it into Chrome's vocabulary: `arm64` becomes `arm`, and anything else becomes `x86`. It does not pass Node's string through, because `arm64` is not a value any client hint carries.

The repair reaches the profiles that already existed. A rule that only acts when a profile is drawn leaves every older profile behind, and on that install the older ones were all 344 of them. Repair hardware, whose job is to make a profile agree with the machine it runs on, now rewrites `uaArchitecture` to the host's value, alongside the other hardware fields it already corrected.

Android profiles are left alone. Chrome on Android sends an empty `Sec-CH-UA-Arch` and an empty bitness, so a phone profile stores the empty string; answering the desktop value there would be a phone contradicting itself in one field.

## Checking it on your own Mac

Open DevTools on any https page and run:

```
await navigator.userAgentData.getHighEntropyValues(['architecture', 'bitness'])

```

An Apple silicon Mac in stock Chrome answers `architecture: "arm"`, `bitness: "64"`. Run it in a browser profile you are testing and compare. If the two disagree on the same machine, that is the finding. The full list of hints a page can ask for, and which ones must agree with the headers, is in [getHighEntropyValues explained](https://mosaicbrowser.com/blog/gethighentropyvalues-explained). Another hint we once got wrong, a full version with no build number, is in [a full Chrome version no Chrome shipped](https://mosaicbrowser.com/blog/full-version-without-build-number), and how Mosaic draws the rest of the hardware is on [real fingerprints](https://mosaicbrowser.com/features/real-fingerprints).

## Questions

### What does Sec-CH-UA-Arch say on an M1, M2 or later Mac?

"arm". Chrome reports the processor it is running on, and on Apple silicon that is arm. Sec-CH-UA-Bitness beside it says "64". On an Intel Mac the same header says "x86".

### Why does my User-Agent say Intel Mac OS X on an Apple silicon Mac?

Because Chrome freezes that part of the User-Agent string. Every Mac Chrome sends Intel Mac OS X 10_15_7 whatever the processor and macOS version. The real architecture is only in the client hints, which a site has to ask for.

### Is an arm architecture with an Intel User-Agent a fingerprint mismatch?

No. It is what stock Chrome sends on every Apple silicon Mac, so a detector that flagged it would flag every ordinary Chrome on those Macs. A mismatch is a hint that disagrees with the rest of the same browser, such as arm beside a Windows GPU.

### What does Mosaic report for the architecture?

The computer's own: arm on Apple silicon, x86 on Intel. Android profiles report an empty string, which is what Chrome on Android sends.

## Related

[getHighEntropyValues: what a page can ask for and what it gets](https://mosaicbrowser.com/blog/gethighentropyvalues-explained): getHighEntropyValues hands a page architecture, bitness, model and full versions on request, and each answer must match the headers Chrome sends.

[The setting was saved, and three launches ignored it](https://mosaicbrowser.com/blog/setting-saved-launch-ignored): Our rotation setting was stored, reported back by the API, and ignored by three launches. A mapper had copied every field of the proxy except the new one.

[A full Chrome version with no build number is one no Chrome shipped](https://mosaicbrowser.com/blog/full-version-without-build-number): Our engine reported uaFullVersion as "153". Real Chrome always sends four numbers. Sending the full build moved FingerprintJS's confidence to stock's 0.99.

[Machines that exist: fingerprints drawn from real hardware](https://mosaicbrowser.com/features/real-fingerprints): Mosaic draws each profile's GPU, screen, CPU, memory and fonts from one real device, so the parts of a fingerprint agree with each other and with the host.









## Mosaic, on your own computer

The browser this blog is about: its own Chromium, fingerprints from real machines and a proxy exit per profile. Free holds 3 profiles. Pro is $49 a month for any number.

Mosaic is a desktop app

Email yourself the link and open it on your computer.
