Skip to content
Free tool · Follows every Firefox release

Firefox user agent strings

The User-Agent the current Firefox (158) sends on Windows, macOS, Linux, Android and iPhone, how Firefox builds it, and what it leaves out. Firefox sends no Client Hints, so the string is all a server gets.

Current release
Firefox 158.0
Extended Support Release
Firefox ESR 153.5.0
Firefox for iOS
158.1

From Mozilla's product-details feed and the App Store, checked every six hours.

Firefox 158 user agent on every platform

PlatformUser-AgentCopy
WindowsMozilla/5.0 (Windows NT 10.0; Win64; x64; rv:158.0) Gecko/20100101 Firefox/158.0
macOSIntel and Apple siliconMozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:158.0) Gecko/20100101 Firefox/158.0
LinuxMozilla/5.0 (X11; Linux x86_64; rv:158.0) Gecko/20100101 Firefox/158.0
Linux (Ubuntu Snap)Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:158.0) Gecko/20100101 Firefox/158.0
AndroidPhones and tablets; Android 16 shownMozilla/5.0 (Android 16; Mobile; rv:158.0) Gecko/158.0 Firefox/158.0
iPhoneFirefox for iOS 158.1Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) FxiOS/158.1 Mobile/15E148 Safari/604.1
ESR 153 (Windows)Extended Support Release 153.5.0Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:153.0) Gecko/20100101 Firefox/153.0

None of these comes with Client Hints: Firefox sends the User-Agent header and nothing else about itself. The strings follow Gecko's own code (nsHttpHandler.cpp) and, for iOS, the Firefox for iOS app (UserAgent.swift).

How Firefox builds its user agent

Desktop Firefox has one template, Mozilla/5.0 (platform; rv:version) Gecko/20100101 Firefox/version, and fills it with as little as it can:

TokenWhat it means
Windows NT 10.0; Win64; x64Hard-coded on Windows 10 and 11. 64-bit Windows, and ARM64 Windows 11, report x64; only 32-bit Windows (and ARM64 Windows 10) drop the Win64; x64 part.
Macintosh; Intel Mac OS X 10.15Every Mac since Firefox 87, whatever the macOS version or processor. Firefox writes 10.15 with a dot; Chrome and Safari write 10_15_7.
X11; Linux x86_64Every Linux; 32-bit x86 has reported x86_64 since Firefox 127. The Snap package on Ubuntu adds Ubuntu;.
rv:158.0The version again, as major.0. Firefox 110 to 119 wrote rv:109.0 instead.
Gecko/20100101A fixed date on desktop, the same in every version. On Android this is the version instead.
Firefox/158.0Major version only: a point release such as 158.0.1 still sends .0.

Firefox for Android follows the same template with Android N; Mobile as the platform, the real Android major version (versions below 10 report 10), and Gecko/158.0. Mozilla's reference page still shows a Tablet token; the current Gecko source writes Mobile on tablets as well.

Firefox and Client Hints

Chrome, Edge and the other Chromium browsers moved most of the detail out of their user agent into Client Hints: Sec-CH-UA on every request, and the platform version, model and full version when a site asks. Firefox implements none of it. There is no navigator.userAgentData in the current Gecko source, and no Sec-CH-UA header is ever sent.

That cuts both ways for anyone checking a request. A Firefox user agent with Client Hints attached is not Firefox. And a script that relies on navigator.userAgentData must fall back to the string, which, as the table above shows, no longer says which Windows or macOS version the visitor runs.

How to tell Firefox apart

  • Desktop: Gecko/20100101 together with Firefox/ and no Chrome/. Browsers built on Firefox (LibreWolf, Waterfox, Tor Browser and others) usually send the same string, sometimes an older version of it.
  • Android: Android N; Mobile; rv: and Gecko/ followed by the version, not a date.
  • iPhone: FxiOS/. The engine is WebKit, not Gecko, so it behaves like Safari, not like desktop Firefox; see iPhone user agents.
  • Beyond the string: the engine gives itself away. Gecko lacks Chromium-only APIs such as navigator.userAgentData, answers Mozilla for the WebGL vendor, and its TLS handshake differs from Chrome's (see the JA4 fingerprint checker). A Firefox string on a Chromium engine is easy to spot; the browser fingerprint test checks these pairs.

FAQ

What is the latest Firefox user agent?

Firefox 158 on Windows sends Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:158.0) Gecko/20100101 Firefox/158.0. On a Mac it is Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:158.0) Gecko/20100101 Firefox/158.0. Only the two version numbers change from one release to the next.

Does Firefox send Sec-CH-UA or other Client Hints?

No. Firefox does not implement User-Agent Client Hints: it sends no Sec-CH-UA, Sec-CH-UA-Mobile or Sec-CH-UA-Platform header, ignores Accept-CH for them, and has no navigator.userAgentData. A request that says Firefox and carries those headers did not come from Firefox.

Why does Firefox on my Apple silicon Mac say Intel Mac OS X 10.15?

Because Firefox writes that on every Mac. Since Firefox 87 the macOS version is capped at 10.15, and the processor always reads Intel, so a Mac on the newest macOS with an M-series chip sends the same string as an Intel Mac on Catalina.

Why does Firefox on Windows 11 say Windows NT 10.0?

Firefox hard-codes Windows NT 10.0 on Windows 10 and 11, so that a future change in the version Windows reports cannot break sites without Mozilla deciding to pass it on. A 64-bit Windows gets Win64; x64, also on ARM64 machines running Windows 11; the string cannot tell Windows 10 from 11.

Why does my Firefox say rv:109.0?

Firefox 110 to 119 kept rv:109.0 while the Firefox/ token moved on, because some sites looked for rv:11 to detect Internet Explorer 11 and would have mistaken Firefox 110 for it. Firefox 120 and later write their own version again. Firefox ESR 115, still updated for older systems, therefore sends Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0; the current ESR (153) is past the freeze.

What is the Firefox user agent on Android?

Mozilla/5.0 (Android 16; Mobile; rv:158.0) Gecko/158.0 Firefox/158.0 on Android 16. Unlike Chrome, Firefox writes the real Android version (anything below 10 is reported as 10), but no device model, and it says Mobile on tablets too.

What is the Firefox user agent on iPhone?

Firefox on iOS uses Apple's WebKit engine like every iOS browser, so its string is Safari's with FxiOS/ and the app version added. On an iPad it requests desktop sites by default and sends a Safari-like Mac string with no FxiOS token at all.

How do I change the user agent in Firefox?

Type about:config in the address bar, create a string preference general.useragent.override and set it to the string you want. It changes the header and navigator.userAgent, but not what the engine itself reveals; see how to change your user agent for what each method changes.

Clearcote puts this into practice

An open-source Chromium with fingerprint control compiled into the engine. A drop-in for Playwright & Puppeteer.

Free for one browser with GitHub. No card.