Firefox contains a feature known as Resist Fingerprinting that limits the personal characteristics of a user’s operating system and hardware exposed to websites and is not recommended for normal use. Resist Fingerprinting takes a very strict approach and often causes web pages to work improperly. Mozilla does not recommend enabling Resist Fingerprinting, and instead recommends using the supported Fingerprinting Protection mode which minimizes broken websites.
Resist Fingerprinting is exposed to add-ons to control, which means it may have been enabled without your explicit knowledge. It can also be set by altering the preference privacy.resistFingerprinting in the Firefox Configuration Editor (about:config page).
How to tell if you have Resist Fingerprinting enabled, and if so, disable it
Only proceed if you are comfortable with advanced settings and understand the potential impacts.
- Type about:config in the address bar and press EnterReturn.
A warning page may appear. Click to go to the about:config page. - In the search bar at the top, search for privacy.resistFingerprinting.
- A number of preferences will appear but see if either privacy.resistFingerprinting or privacy.resistFingerprinting.pbMode have a value of true.
- To tell if an extension is controlling this preference, you can click toggle the value back to false and restart your browser. After restarting, visit about:config again, and see if the value has been returned to true.
If it has been, you will need to determine which of your extensions is controlling the preference and disable or remove them. One way to do this is to disable the installed extensions one by one, and restart the browser, seeing if the preference is changed upon restarting Firefox. Please be aware that, in rare cases, multiple extensions might be setting the preference.
How might Resist Fingerprinting break web pages?
Resist Fingerprinting causes a number of strange behaviors that are commonly filed as bugs. While they do cause the website to behave strangely or incorrectly, these behaviors also mean that Resist Fingerprinting is working as intended, which is why we do not recommend this feature for the average Firefox user.
It is also important to note that if privacy.resistFingerprinting.pbMode is set, but privacy.resistFingerprinting is not - you will still get certain Resist Fingerprinting behaviors on normal windows, because it is not possible to separate these behaviors per-window. This includes using fixed instead of system colors and others.
The most common unexpected behaviors include:
- Times are displayed incorrectly or more accurately – they are displayed in the wrong timezone.
- Images, especially those created as a result of uploading/editing an image in the browser, may display random lines. For example:
- Certain animations or games may run sluggishly.
- Pages may not be localized in the expected language, and be in English instead.
- For users of macOS or Linux, you may receive information or downloads intended for the Windows operating system instead.
- Icons, maps or images may not be rendered in high fidelity, and appear blurry or low resolution.
- Gamepads do not work.
- Writing tablets, styluses or touchscreens do not work as expected.
- Display preferences such as Light/Dark Mode, Reduced Animations and Reduced Transparency are not respected.
- When new windows are opened, they are fixed to a specific size.
- The native system colors are replaced, and fixed values are used instead.
What does Resist Fingerprinting alter?
Resist Fingerprinting changes a lot of browser behavior – the list below is intended to be both technical in nature and as comprehensive as possible, but still may omit things by accident.
- The timezone is reported as UTC or Icelandic.
- Math operations in JavaScript may report slightly different values than regular.
- The locale is reported as en-US.
- The only fonts available to be used by websites are those pre-installed in the Operating System. This also excludes fonts in language packs.
- Several properties of the navigator object are fixed, including the hardware concurrency value, application version and build ID. The User Agent version is reported to be the major version (for example, 119.0 instead of 119.1).
- The Operating System reported in the HTTP header is Windows, the operating system reported in the navigator object in JavaScript is accurate.
- Without granting any permission, only one camera and microphone are reported as media devices. Certain device errors may be reported as “not allowed” instead of “not found”. Device Change events are not reported.
- Video and Audio Streams Labels are fixed to “Internal Camera” or “Internal Microphone”.
- Media Capabilities are reported as being supported, smooth and not power efficient.
- The Video Facing Mode is a fixed value.
- The preferred sample rate for Audio is reported as 44100, and the sample rate is reported as 48000.
- The Audio Context latency is fixed, and the number of maximum channels is reported as 2.
- No gamepads are ever reported as present.
- The Network Connection type is reported as “Unknown”.
- On macOS, the OS Font Smoothing preference is not respected.
- All Device Sensors are disabled.
- The frame rate is locked at 60 fps.
- The precision of all reported timestamps, timers and clocks are reduced to 16.67ms (to match 60fps.)
- The Outer Window dimensions are reported to be the same as the inner window dimensions.
- The window.screenX and screenY properties, as well as mozInnerScreenX and mozInnerScreenY, and event screen coordinates are always reported as 0,0.
- The screen top, left, width and height, and screen available top, left, width and height are all reported the same as the window inner dimensions.
- The Screen Pixel Depth is reported as 24.
- The device pixel ratio is reported as 2.0.
- The CSS Resolution is reported as the zoom level, instead of taking into account the true device pixel ratio.
- The screen orientation is set to Landscape, as the screen angle is set to 0. OrientationChanged events are suppressed.
- The Radius, Rotation and Force attributes of Touch Events are set to 0.
- The Max Touch Pointers for Pointer Events is set to 0.
- Several Pointer Event attributes, such as Tilt and Pressure, are set to constant values.
- All pointer events are set to come from a single primary pointing device.
- The pointer capabilities are reported to be Coarse (Android) or Fine & Hover (Desktop).
- The key codes for Keyboard Events are modified to avoid leaking the keyboard layout.
- The WebSpeech API does not report any available voices.
- CSS will report the preferred color scheme as Light.
- CSS will report preferred reduced motion as False.
- CSS will report preferred contrast as No Preference.