11/******
22* name: arkenfox user.js
3- * date: 6 March 2025
4- * version: 135
3+ * date: 14 August 2025
4+ * version: 140
55* urls: https://github.com/arkenfox/user.js [repo]
66* : https://arkenfox.github.io/gui/ [interactive]
77* license: MIT: https://github.com/arkenfox/user.js/blob/master/LICENSE.txt
3131 - DON'T wait for arkenfox to update Firefox, nothing major changes these days
3232 * Each release
3333 - run prefsCleaner to reset prefs made inactive, including deprecated (9999)
34- * ESR
34+ * ESR (Extended Support Release)
3535 - It is recommended to not use the updater, or you will get a later version which may cause issues.
3636 So you should manually append your overrides (and keep a copy), and manually update when you
3737 change ESR releases (arkenfox is already past that release)
@@ -87,17 +87,18 @@ user_pref("_user.js.parrot", "0100 syntax error: the parrot's dead!");
8787 * [SETTING] General>Startup>Restore previous session ***/
8888user_pref ( "browser.startup.page" , 0 ) ;
8989/* 0103: set HOME+NEWWINDOW page
90- * about:home=Firefox Home (default, see 0105), custom URL, about:blank
90+ * about:home=Firefox Home (default, see 0105), custom URLs..., Blank Page
9191 * [SETTING] Home>New Windows and Tabs>Homepage and new windows ***/
92- user_pref ( "browser.startup.homepage" , "about:blank " ) ;
92+ user_pref ( "browser.startup.homepage" , "chrome://browser/content/blanktab.html " ) ;
9393/* 0104: set NEWTAB page
9494 * true=Firefox Home (default, see 0105), false=blank page
9595 * [SETTING] Home>New Windows and Tabs>New tabs ***/
9696user_pref ( "browser.newtabpage.enabled" , false ) ;
9797/* 0105: disable sponsored content on Firefox Home (Activity Stream)
9898 * [SETTING] Home>Firefox Home Content ***/
99- user_pref ( "browser.newtabpage.activity-stream.showSponsored" , false ) ; // [FF58+]
100- user_pref ( "browser.newtabpage.activity-stream.showSponsoredTopSites" , false ) ; // [FF83+] Shortcuts>Sponsored shortcuts
99+ user_pref ( "browser.newtabpage.activity-stream.showSponsored" , false ) ; // [FF58+] Sponsored stories
100+ user_pref ( "browser.newtabpage.activity-stream.showSponsoredTopSites" , false ) ; // [FF83+] Sponsored shortcuts
101+ user_pref ( "browser.newtabpage.activity-stream.showSponsoredCheckboxes" , false ) ; // [FF140+] Support Firefox
101102/* 0106: clear default topsites
102103 * [NOTE] This does not block you from adding your own ***/
103104user_pref ( "browser.newtabpage.activity-stream.default.sites" , "" ) ;
@@ -121,11 +122,8 @@ user_pref("extensions.htmlaboutaddons.recommendations.enabled", false);
121122 * [SETTING] Privacy & Security>Firefox Data Collection and Use>Allow personalized extension recommendations
122123 * [1] https://support.mozilla.org/kb/personalized-extension-recommendations ***/
123124user_pref ( "browser.discovery.enabled" , false ) ;
124- /* 0323: disable shopping experience [FF116+]
125- * [1] https://bugzilla.mozilla.org/show_bug.cgi?id=1840156#c0 ***/
126- user_pref ( "browser.shopping.experience2023.enabled" , false ) ; // [DEFAULT: false]
127125
128- /** TELEMETRY ***/
126+ /** ACTIVITY STREAM ***/
129127/* 0335: disable Firefox Home (Activity Stream) telemetry ***/
130128user_pref ( "browser.newtabpage.activity-stream.feeds.telemetry" , false ) ;
131129user_pref ( "browser.newtabpage.activity-stream.telemetry" , false ) ;
@@ -285,10 +283,11 @@ user_pref("browser.urlbar.suggest.searches", false);
285283user_pref ( "browser.urlbar.trending.featureGate" , false ) ;
286284/* 0806: disable urlbar suggestions ***/
287285user_pref ( "browser.urlbar.addons.featureGate" , false ) ; // [FF115+]
286+ user_pref ( "browser.urlbar.amp.featureGate" , false ) ; // [FF141+] adMarketplace
288287user_pref ( "browser.urlbar.fakespot.featureGate" , false ) ; // [FF130+] [DEFAULT: false]
289- user_pref ( "browser.urlbar.mdn.featureGate" , false ) ; // [FF117+] [HIDDEN PREF]
290- user_pref ( "browser.urlbar.pocket .featureGate" , false ) ; // [FF116+] [DEFAULT: false ]
291- user_pref ( "browser.urlbar.weather .featureGate" , false ) ; // [FF108+] [DEFAULT: false ]
288+ user_pref ( "browser.urlbar.mdn.featureGate" , false ) ; // [FF117+]
289+ user_pref ( "browser.urlbar.weather .featureGate" , false ) ; // [FF108+ ]
290+ user_pref ( "browser.urlbar.wikipedia .featureGate" , false ) ; // [FF141+ ]
292291user_pref ( "browser.urlbar.yelp.featureGate" , false ) ; // [FF124+]
293292/* 0807: disable urlbar clipboard suggestions [FF118+] ***/
294293 // user_pref("browser.urlbar.clipboard.featureGate", false);
@@ -330,7 +329,7 @@ user_pref("_user.js.parrot", "0900 syntax error: the parrot's expired!");
330329/* 0903: disable auto-filling username & password form fields
331330 * can leak in cross-site forms *and* be spoofed
332331 * [NOTE] Username & password is still available when you enter the field
333- * [SETTING] Privacy & Security>Logins and Passwords>Autofill logins and passwords
332+ * [SETTING] Privacy & Security>Passwords>Autofill logins and passwords
334333 * [1] https://freedom-to-tinker.com/2017/12/27/no-boundaries-for-user-identities-web-trackers-exploit-browser-login-managers/
335334 * [2] https://homes.esat.kuleuven.be/~asenol/leaky-forms/ ***/
336335user_pref ( "signon.autofillForms" , false ) ;
@@ -562,15 +561,19 @@ user_pref("network.IDN_show_punycode", true);
562561 * [1] https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=pdf.js+firefox ***/
563562user_pref ( "pdfjs.disabled" , false ) ; // [DEFAULT: false]
564563user_pref ( "pdfjs.enableScripting" , false ) ; // [FF86+]
565- /* 2624: disable middle click on new tab button opening URLs or searches using clipboard [FF115+] */
564+ /* 2624: disable middle click on new tab button opening URLs or searches using clipboard [FF115+] *** /
566565user_pref ( "browser.tabs.searchclipboardfor.middleclick" , false ) ; // [DEFAULT: false NON-LINUX]
567566/* 2630: disable content analysis by DLP (Data Loss Prevention) agents
568567 * DLP agents are background processes on managed computers that allow enterprises to monitor locally running
569568 * applications for data exfiltration events, which they can allow/block based on customer defined DLP policies.
570569 * 0=Block all requests, 1=Warn on all requests (which lets the user decide), 2=Allow all requests
571- * [1] https://github.com/chromium/content_analysis_sdk */
570+ * [1] https://github.com/chromium/content_analysis_sdk *** /
572571user_pref ( "browser.contentanalysis.enabled" , false ) ; // [FF121+] [DEFAULT: false]
573572user_pref ( "browser.contentanalysis.default_result" , 0 ) ; // [FF127+] [DEFAULT: 0]
573+ /* 2635: disable referrer and storage access for resources injected by content scripts [FF139+] ***/
574+ // user_pref("privacy.antitracking.isolateContentScriptResources", true);
575+ /* 2640: disable CSP Level 2 Reporting [FF140+] ***/
576+ user_pref ( "security.csp.reporting.enabled" , false ) ;
574577
575578/** DOWNLOADS ***/
576579/* 2651: enable user interaction for security by always asking where to download
@@ -633,7 +636,7 @@ user_pref("privacy.clearOnShutdown_v2.historyFormDataAndDownloads", true); // [D
633636 // user_pref("privacy.clearOnShutdown_v2.siteSettings", false); // [DEFAULT: false]
634637/* 2812: set/enforce clearOnShutdown items [FF136+] ***/
635638user_pref ( "privacy.clearOnShutdown_v2.browsingHistoryAndDownloads" , true ) ; // [DEFAULT: true]
636- user_pref ( "privacy.clearOnShutdown_v2.downloads" , true ) ;
639+ user_pref ( "privacy.clearOnShutdown_v2.downloads" , true ) ; // [HIDDEN]
637640user_pref ( "privacy.clearOnShutdown_v2.formdata" , true ) ;
638641/* 2813: set Session Restore to clear on shutdown (if 2810 is true) [FF34+]
639642 * [NOTE] Not needed if Session Restore is not used (0102) or it is already cleared with history (2811+)
@@ -693,9 +696,15 @@ user_pref("privacy.sanitize.timeSpan", 0);
693696 [NOTE] RFPTargets + granular overrides are somewhat experimental and may produce unexpected results
694697 - e.g. FrameRate can only be controlled per process, not per origin
695698
696- 1826408 - restrict fonts to system (kBaseFonts + kLangPackFonts) (Windows, Mac, some Linux)
699+ 1826408 - restrict to system fonts (kBaseFonts + kLangPackFonts) (Windows, Mac, some Linux) (FF119+)
700+ 1928705: android (FF134+)
697701 https://searchfox.org/mozilla-central/search?path=StandardFonts*.inc
698702 1858181 - subtly randomize canvas per eTLD+1, per session and per window-mode (FF120+)
703+ 1887682 - use fdlibm's sin, cos and tan in jsmath (FF134+)
704+ 1978414 - various (FF143+)
705+ 1954194: available screen resolution: return a fixed offset height from screen per platform when not full screen
706+ 1978414: hardwareConcurrency: return 2 (existing RFPTarget)
707+ 1977836: maxTouchPoints: return multi-touch as 5
699708***/
700709user_pref ( "_user.js.parrot" , "4000 syntax error: the parrot's bereft of life!" ) ;
701710/* 4001: enable FPP in PB mode [FF114+]
@@ -720,7 +729,7 @@ user_pref("_user.js.parrot", "4000 syntax error: the parrot's bereft of life!");
720729
721730 FF128+ Arkenfox by default uses FPP (automatically enabled with ETP Strict). For most people
722731 this is all you need. To use RFP instead, add RFP (4501) to your overrides, and optionally
723- add letterboxing (4504), spoof_english (4506), and webgl (4520).
732+ add letterboxing (4504), spoof_english (4506), and WebGL (4520).
724733
725734 RFP is an all-or-nothing buy in: you cannot pick and choose what parts you want
726735
@@ -730,8 +739,8 @@ user_pref("_user.js.parrot", "4000 syntax error: the parrot's bereft of life!");
730739 1360039 - spoof navigator.hardwareConcurrency as 2 (FF55)
731740 FF56
732741 1333651 - spoof User Agent & Navigator API
733- JS: spoofed as Windows 10, OS 10.15, Android 10, or Linux
734- HTTP Header: spoofed as Windows 10 or Android 10.15 until FF136 then matches JS spoof
742+ JS: spoofed as Windows 10, OS X 10.15, Android 10, or Linux
743+ HTTP Header: spoofed as Windows 10 or Android 10 until FF136 then matches JS spoof
735744 1369319 - disable device sensor API
736745 1369357 - disable site specific zoom
737746 1337161 - hide gamepads from content
@@ -750,7 +759,6 @@ user_pref("_user.js.parrot", "4000 syntax error: the parrot's bereft of life!");
750759 1222285 & 1433592 - spoof keyboard events and suppress keyboard modifier events (FF59)
751760 Spoofing mimics the content language of the document. Currently it only supports en-US.
752761 Modifier events suppressed are SHIFT and both ALT keys. Chrome is not affected.
753- 1337157 - disable WebGL debug renderer info (FF60)
754762 1459089 - disable OS locale in HTTP Accept-Language headers (ANDROID) (FF62)
755763 1479239 - return "no-preference" with prefers-reduced-motion (FF63)
756764 1363508 & 1826051 - spoof/suppress Pointer Events (FF64, FF132)
@@ -765,19 +773,25 @@ user_pref("_user.js.parrot", "4000 syntax error: the parrot's bereft of life!");
765773 1653987 - limit font visibility to bundled and "Base Fonts" (Windows, Mac, some Linux) (FF80)
766774 1461454 - spoof smooth=true and powerEfficient=false for supported media in MediaCapabilities (FF82)
767775 531915 - use fdlibm's sin, cos and tan in jsmath (FF93, ESR91.1)
768- 1756280 - enforce navigator.pdfViewerEnabled as true and plugins/mimeTypes as hard-coded values (FF100-115)
769776 1692609 - reduce JS timing precision to 16.67ms (previously FF55+ was 100ms) (FF102)
770777 1422237 - return "srgb" with color-gamut (FF110)
771778 1794628 - return "none" with inverted-colors (FF114)
772779 1787790 - normalize system fonts (FF128)
773780 1835987 - spoof timezone as Atlantic/Reykjavik (previously FF55+ was UTC) (FF128)
774781 1834307 - always use smooth scrolling (FF132)
775782 1918202 - spoof screen orientation based on spoofed screen size and platform (FF132)
776- previously it always returned landscape-primary and an angle of 0 (FF50+)
783+ previously FF50+ it always returned landscape-primary and an angle of 0
777784 1390465 - load all subtitles in WebVTT (Video Text Tracks) (FF133)
778785 1873382 - make spoofed devicePixelRatio and CSS media queries match (FF133)
779786 previously FF41+ devicePixelRatio was hardcoded as 1 and FF127+ as 2
780787 previously FF41+ CSS media queries were spoofed as zoom level at a devicePixelRatio of 1
788+ 1955425 - return 128 for WebGPU subgroupMaxSize (FF138)
789+ 1966860 - spoof WebGL debug renderer info (FF140)
790+ previously FF60+ it was disabled
791+ 1781277 - return 10GiB for storage estimate until persistent-storage granted (FF142, ESR140.1)
792+ 1972600 - spoof network connection for HTMLMediaElement preload (FF142, ESR140.1)
793+ 1975851 - return true for navigator.onLine (FF142, ESR140.1)
794+ 1973265 - disable WebCodecs API (FF142?)
781795***/
782796user_pref ( "_user.js.parrot" , "4500 syntax error: the parrot's popped 'is clogs" ) ;
783797/* 4501: enable RFP
@@ -799,23 +813,26 @@ user_pref("privacy.resistFingerprinting.block_mozAddonManager", true);
799813 * Dynamically resizes the inner window by applying margins in stepped ranges [2]
800814 * If you use the dimension pref, then it will only apply those resolutions.
801815 * The format is "width1xheight1, width2xheight2, ..." (e.g. "800x600, 1000x1000")
802- * [SETUP-WEB] This is independent of RFP (4501). If you're not using RFP, or you are but
803- * dislike the margins, then flip this pref, keeping in mind that it is effectively fingerprintable
816+ * [SETUP-WEB] This is independent of RFP (4501). If you're using RFP, but dislike the
817+ * margins, then don't enable this pref, keeping in mind that it is effectively fingerprintable
804818 * [WARNING] DO NOT USE: the dimension pref is only meant for testing
805819 * [1] https://bugzilla.mozilla.org/1407366
806820 * [2] https://hg.mozilla.org/mozilla-central/rev/7211cb4f58ff#l5.13 ***/
807821 // user_pref("privacy.resistFingerprinting.letterboxing", true); // [HIDDEN PREF]
808822 // user_pref("privacy.resistFingerprinting.letterboxing.dimensions", ""); // [HIDDEN PREF]
809823/* 4505: disable RFP by domain [FF91+]
810- * [NOTE] Working examples: "arkenfox.github.io", "*github.io"
811- * Non-working examples: "https://arkenfox.github.io", "github.io", "*arkenfox.github.io" ***/
824+ * [NOTE]: The pref takes comma separated values: e.g. "*domain1.tld, *domain2.tld"
825+ * Working domain examples: "arkenfox.github.io", "*github.io"
826+ * Non-working domain examples: "https://arkenfox.github.io", "github.io", "*arkenfox.github.io" ***/
812827 // user_pref("privacy.resistFingerprinting.exemptedDomains", "*.example.invalid");
813828/* 4506: disable RFP spoof english prompt [FF59+]
814829 * 0=prompt, 1=disabled, 2=enabled
815830 * [NOTE] When changing from value 2, preferred languages ('intl.accept_languages') is not reset.
816831 * [SETUP-WEB] when enabled, sets 'en-US, en' for displaying pages and 'en-US' as locale.
817832 * [SETTING] General>Language>Choose your preferred language for displaying pages>Choose>Request English... ***/
818833user_pref ( "privacy.spoof_english" , 1 ) ;
834+ /* 4507: skip browser.startup.blankWindow if RFP is used [FF136+] ***/
835+ // user_pref("privacy.resistFingerprinting.skipEarlyBlankFirstPaint", true); // [DEFAULT: true]
819836/* 4510: disable using system colors
820837 * [SETTING] General>Language and Appearance>Fonts and Colors>Colors>Use system colors ***/
821838user_pref ( "browser.display.use_system_colors" , false ) ; // [DEFAULT: false NON-WINDOWS]
@@ -964,7 +981,7 @@ user_pref("_user.js.parrot", "5500 syntax error: this is an ex-parrot!");
964981 // user_pref("javascript.options.wasm", false);
965982/* 5507: disable rendering of SVG OpenType fonts ***/
966983 // user_pref("gfx.font_rendering.opentype_svg.enabled", false);
967- /* 5508: disable all DRM content (EME: Encryption Media Extension)
984+ /* 5508: disable all DRM (Digital Rights Management) content (EME: Encryption Media Extension)
968985 * Optionally hide the UI setting which also disables the DRM prompt
969986 * [SETTING] General>DRM Content>Play DRM-controlled content
970987 * [TEST] https://bitmovin.com/demos/drm
@@ -1016,7 +1033,7 @@ user_pref("security.tls.version.enable-deprecated", false); // [DEFAULT: false]
10161033 * [WHY] To prevent wasting Mozilla's time with a custom setup ***/
10171034user_pref ( "extensions.webcompat-reporter.enabled" , false ) ; // [DEFAULT: false]
10181035/* 6012: enforce Quarantined Domains [FF115+]
1019- * [WHY] https://support.mozilla.org/kb/quarantined-domains */
1036+ * [WHY] https://support.mozilla.org/kb/quarantined-domains *** /
10201037user_pref ( "extensions.quarantinedDomains.enabled" , true ) ; // [DEFAULT: true]
10211038/* 6050: prefsCleaner: reset previously active items removed from arkenfox FF128+ ***/
10221039 // user_pref("privacy.clearOnShutdown.cache", "");
@@ -1120,7 +1137,7 @@ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies
11201137 // user_pref("privacy.trackingprotection.cryptomining.enabled", true); // [DEFAULT: true]
11211138 // user_pref("privacy.trackingprotection.fingerprinting.enabled", true); // [DEFAULT: true]
11221139/* 7017: disable service workers
1123- * [WHY] Already isolated with TCP (2701) behind a pref (2710) ***/
1140+ * [WHY] Already isolated with TCP (2701) behind a pref ***/
11241141 // user_pref("dom.serviceWorkers.enabled", false);
11251142/* 7018: disable Web Notifications [FF22+]
11261143 * [WHY] Web Notifications are behind a prompt (7002)
@@ -1166,7 +1183,6 @@ user_pref("_user.js.parrot", "8000 syntax error: the parrot's crossed the Jordan
11661183 // user_pref("general.platform.override", "");
11671184 // user_pref("general.useragent.override", "");
11681185 // user_pref("media.navigator.enabled", "");
1169- // user_pref("media.ondevicechange.enabled", "");
11701186 // user_pref("media.video_stats.enabled", "");
11711187 // user_pref("media.webspeech.synth.enabled", "");
11721188 // user_pref("ui.use_standins_for_native_colors", "");
@@ -1181,7 +1197,7 @@ user_pref("_user.js.parrot", "8000 syntax error: the parrot's crossed the Jordan
11811197 - Opt-in telemetry _does not_ work and results in data that is unrepresentative and may be misleading
11821198 Choice
11831199 - Every new profile on first use provides data collection/use policy and the abillty to opt-out
1184- - It can be disabled at any time (Settings>Privacy & Security>Data Collection and Use)
1200+ - It can be disabled at any time (Settings>Privacy & Security>Data Collection and Use)
11851201 Data
11861202 - no PII (Personally Identifiable Information)
11871203 - can be viewed in about:telemetry
@@ -1240,9 +1256,17 @@ user_pref("_user.js.parrot", "9999 syntax error: the parrot's shuffled off 'is m
12401256/* ESR128.x still uses all the following prefs
12411257// [NOTE] replace the * with a slash in the line above to re-enable active ones
12421258// FF132
1243- /* 2617: remove webchannel whitelist
1259+ // 2617: remove webchannel whitelist
12441260 // [-] https://bugzilla.mozilla.org/1275612
12451261 // user_pref("webchannel.allowObject.urlWhitelist", "");
1262+ // FF140
1263+ // 0323: disable shopping experience [FF116+]
1264+ // [-] https://bugzilla.mozilla.org/1964845
1265+ // [1] https://bugzilla.mozilla.org/show_bug.cgi?id=1840156#c0
1266+ user_pref("browser.shopping.experience2023.enabled", false); // [DEFAULT: false]
1267+ // 0806: disable urlbar suggestions
1268+ // [-] https://bugzilla.mozilla.org/1959497
1269+ user_pref("browser.urlbar.pocket.featureGate", false); // [FF116+] [DEFAULT: false]
12461270// ***/
12471271
12481272/* END: internal custom pref to test for syntax errors ***/
0 commit comments