This is a practical hardening guide for Firefox — specific settings to change, what each does, and what trade-offs you accept. Not a theoretical list: each setting here has a concrete privacy benefit.
about:config Changes
Open about:config in Firefox's address bar. Click "Accept the Risk" to continue.
Telemetry (Disable Firefox's Data Collection)
datareporting.healthreport.uploadEnabled = false
app.shield.optoutstudies.enabled = false
browser.discovery.enabled = false
browser.newtabpage.activity-stream.feeds.telemetry = false
browser.newtabpage.activity-stream.telemetry = false
Effect: Firefox stops sending usage data and shield studies. No functional change.
Trade-off: You won't participate in feature studies (beneficial research, but opt-out is fine).
Tracking Protection
privacy.trackingprotection.enabled = true
privacy.trackingprotection.socialtracking.enabled = true
privacy.trackingprotection.cryptomining.enabled = true
privacy.trackingprotection.fingerprinting.enabled = true
Effect: Enables tracking protection for all windows (not just Private). Blocks social tracking, cryptominers, and fingerprinting scripts.
Trade-off: Occasional breakage on sites that use blocked third-party scripts for legitimate functionality.
DNS over HTTPS
network.trr.mode = 3
network.trr.uri = https://dns.quad9.net/dns-query
Mode 3 = DNS only over HTTPS (no fallback to OS resolver).
Effect: DNS queries go to Quad9 (privacy-respecting, DNSSEC-validating resolver). ISP can't see your DNS queries.
Trade-off: If Quad9 is down, no DNS resolution. Mode 2 (TRR with fallback) is more reliable.
Alternatives to Quad9:
-
https://cloudflare-dns.com/dns-query— fast, privacy policy -
https://dns.nextdns.io/YOURPROFILE— NextDNS with filtering -
https://doh.mullvad.net/dns-query— Mullvad, very private
Fingerprint Resistance
privacy.resistFingerprinting = true
Effect:
- Canvas fingerprint randomized per session
- Timezone reported as UTC
- Screen size generalized
- Font list restricted
- User-Agent simplified
- AudioContext fingerprint restricted
Trade-off: Sites using canvas for functionality may break. Scheduling apps with timezone auto-detection won't work correctly. Some captchas become harder. Worth enabling in Private Browsing mode specifically.
First-Party Isolation
privacy.firstparty.isolate = true
Effect: Cookies and storage are partitioned by the first-party domain. Prevents cross-site tracking via cookies even for cookies that weren't explicitly blocked.
Trade-off: Some OAuth/SSO login flows break. If you get stuck in login loops, this is why. Can usually fix by reloading the specific site.
Note: Firefox's dFPI (dynamic First Party Isolation) is now enabled by default in Firefox 86+ via network.cookie.cookieBehavior = 5. The manual privacy.firstparty.isolate setting uses a different implementation.
HTTPS
dom.security.https_only_mode = true
dom.security.https_only_mode_ever_enabled = true
Effect: HTTPS-Only mode. Firefox shows a warning page before loading any HTTP site.
Trade-off: Occasional breakage on sites that redirect incorrectly or don't support HTTPS. You can override per-visit.
Geolocation
geo.enabled = false
Effect: Browser won't reveal your location even with user permission. Sites asking for geolocation will get a "not available" response instead of a permission prompt.
Trade-off: Legitimate location-based services (maps, weather, local business search) won't work without manually entering location.
Camera/Microphone
permissions.default.camera = 2
permissions.default.microphone = 2
(2 = Block)
Effect: Camera and microphone access denied globally. No prompt.
Trade-off: Video calling (Zoom, Google Meet, etc.) requires changing this setting or setting per-site permissions.
WebRTC
media.peerconnection.enabled = false
Effect: Disables WebRTC entirely. Prevents WebRTC IP leaks (which can reveal your real IP even when using a VPN).
Trade-off: WebRTC-based calling (Jitsi, Google Meet, some voice features) won't work.
More nuanced alternative (don't disable, just use mDNS):
media.peerconnection.ice.default_address_only = true
media.peerconnection.ice.no_host = true
These limit which interfaces are exposed via WebRTC without disabling it entirely.
Referer Header
network.http.referer.XOriginPolicy = 2
network.http.referer.XOriginTrimmingPolicy = 2
Effect: Cross-origin referer headers send only the origin (scheme + domain), not the full URL. Prevents the destination site from seeing exactly what page you came from.
Trade-off: Some sites use the referer for navigation (back buttons, anti-CSRF). Occasional breakage.
PDF Viewer
pdfjs.enableScripting = false
Effect: Disables JavaScript in PDF files opened in Firefox's built-in PDF viewer. Prevents PDF-based JS attacks.
Trade-off: PDFs that require JavaScript for form functionality won't work fully.
Privacy Settings GUI Changes
These are in Settings → Privacy & Security, not about:config:
- Enhanced Tracking Protection → Strict
- Send websites a "Do Not Track" signal → Always (limited effectiveness, but costs nothing)
- Cookies and Site Data → Clear data → check Cookies and Site Data on close (optional, harsh)
- History → Firefox will: Use custom settings → Clear history when Firefox closes (optional)
- Security → Block dangerous and deceptive content → All three checked
Extensions to Complete the Setup
uBlock Origin (from AMO):
- Enable all default filter lists
- Add extra lists: EasyPrivacy, Malware Domain List, uBlock's built-in lists
LocalCDN or Decentraleyes (from AMO):
- Serves common CDN files (jQuery, Bootstrap) locally
- Prevents CDN providers (Cloudflare, Google, jsDelivr) from tracking you via CDN requests
The Privacy vs. Usability Spectrum
This table shows which settings are safe vs. which break things:
| Setting | Privacy Impact | Breakage Risk |
|---|---|---|
| Disable telemetry | Low | None |
| Strict ETP | High | Low |
| DNS over HTTPS | Medium | Low |
| resistFingerprinting | High | Medium |
| First-party isolation | High | Medium |
| HTTPS-only | Medium | Low |
| Disable geolocation | Medium | Low |
| Disable WebRTC | Medium | High (breaks video calls) |
Recommended minimum set (good privacy, low breakage):
- Disable telemetry
- Strict ETP
- DNS over HTTPS (mode 2 or 3)
- HTTPS-only mode
- uBlock Origin
For more privacy (accept some breakage):
- resistFingerprinting (especially in Private Browsing)
- First-party isolation
- Disable geolocation
Only if you know what you're doing:
- Disable WebRTC
- Disable camera/microphone globally
Your actual threat model should drive which settings you enable.
Top comments (0)