You need Firefox on a computer — Windows, macOS or Linux — and about twenty minutes. Part 1 is nothing but clicks inside Firefox and needs nothing else.
Part 2 is optional and goes further: a small file of settings, and a check that proves Firefox took every line. It needs Python 3 and a terminal. If you have never used either, Introduction to Python installs Python and opens a terminal in a few minutes; come back here afterwards.
Every label below is quoted exactly as Firefox 157 showed it in October 2026. To see your version, type about:support into the address bar and read the row Version. If yours is higher and a label has changed, the word each step gives you for Settings’ search box still finds it.
What you will be able to do: switch on the protections Firefox leaves off, stop what it sends to Mozilla by default, keep the sites you choose signed in while everything else is cleared — and prove, rather than hope, that each change took effect, including the ones made in a file.
Websites still see your internet address, and the sites you sign in to still know who you are. If you need to hide who you are — from the sites you visit or from your own network — use Tor Browser instead.
The Recipe Card
All of Part 1 on one screen. Open Settings, type the word into Find in Settings, set what the line says. If this is your first time, skip it — the walkthrough below shows what each screen will look like.
tracking→ Enhanced Tracking Protection card → Advanced settings → Strictcookies→ Browsing data card → tick Clear cookies and site data every time you close Firefoxhistory→ Choose what you want Firefox to remember → untick Remember search and form history; Manage Exceptions → Allow the sites that must stay signed insell→ tick Tell websites not to sell or share my datahttps-only→ Connection and software security card → Advanced settings → Enable HTTPS-Only Mode in all windowsdns→ DNS over HTTPS card → Advanced settings → Customdata collection→ untick Send technical and interaction data to Mozilla and Send daily usage ping to Mozillarecommend→ untick both Recommend … as you browse; thensearch engine→ Default search engine
Before Your First Click
Every step works the same way, so learn it once here.
- Open Settings: click the ☰ menu at the top right of Firefox, then Settings. Or type
about:preferencesinto the address bar and press Enter. - Find in Settings is the search box at the top of every Settings page. Each step gives you a word to type there; the setting appears without any scrolling or hunting.
- A yellow tag on a button in the results means the setting is behind this button. Three different cards have a button called Advanced settings, so each step names the card as well — click the one in that card.
- Where am I? On a page behind a button, the line above the title shows the way back, such as Privacy and security › DNS over HTTPS. Click its first part, or the arrow beside the title.
- There is no Save button. A tick or a choice in Settings takes effect the moment you make it.
The Words You Need
- Tracker — a hidden part of a web page whose job is to recognise you again on other websites.
- Cookie — a small note a website keeps in your browser. It is how a site remembers that you are signed in, and how many trackers remember you.
- DNS — the internet’s address book. Before Firefox opens a website it asks for the site’s numeric address, and normally that question travels unencrypted, readable by your network.
- HTTPS — the encrypted way of loading a page. Plain HTTP can be read, and changed, on the way.
- Preference — one setting by its internal name, such as
network.prefetch-next. Settings shows some of them as boxes to tick;about:configshows all of them. - Profile folder — where Firefox keeps your settings, history and passwords. Part 2 works there.
Part 1: The Settings Everyone Should Change
Fourteen steps in all. This part is step 1 to step 9 and needs only Firefox; Part 2, step 10 onwards, is optional.
Go: Firefox, on your computer.
Do: click the ☰ menu at the top right, then Settings.
✏️ Change: nothing — this step only looks.
You should see: the Settings page, with a list down the left that starts Account and sync, Home and startup, Search, Privacy and security, and the search box Find in Settings at the top.
If not: • a line says “Your browser is being managed by your organization.” → usually a work or school computer. Settings it controls appear greyed out and cannot be changed from here; change what you can, and ask whoever manages it about the rest
• no ☰ menu → type about:preferences into the address bar and press Enter
Go: Settings. Type tracking into Find in Settings.
Do: in the Enhanced Tracking Protection card, click Advanced settings — it carries a yellow tag. On the page that opens, choose Strict.
You should see: Strict selected, with “Stronger protections that block more trackers, but may cause some sites to break.” under it, and a bar reading “Reload your tabs to apply these changes.” Click Reload all tabs beside it.
If not: • a website stops working properly → that is the cost the label warns about. On that site, click the shield at the left of the address bar: its panel says “Enhanced Tracking Protection is ON for this site”. Switch it off there — for that one site only
• no Strict on the page → you opened Advanced settings in another card. Go back and use the one in the Enhanced Tracking Protection card
Go: Settings. Type cookies.
Do: in the Browsing data card, tick Clear cookies and site data every time you close Firefox.
You should see: the box ticked. From now on, every time Firefox closes, it deletes cookies and other website data, the cache, and what you typed into web forms and search boxes; your browsing history stays. We checked each of those by closing and reopening Firefox. Below, the History card has switched to Customize history by itself — expected, and the next step explains it.
🔴 The catch: it signs you out of every website, every time you close Firefox. Step 4 keeps the sites you choose signed in. Do not use the Manage exceptions button in this card for that: in our test a site allowed there was signed out anyway.
If not: the box is greyed out → Firefox is set never to remember history, which clears everything anyway; or your organisation has locked it
Go: Settings. Type history. The History card shows Customize history selected — step 3 did that. Click Choose what you want Firefox to remember under it.
Do: 1. Untick Remember search and form history, so Firefox stops saving what you type into forms and search boxes.
2. Under Clear history when Firefox closes, click Manage Exceptions. Type the address of a site you want to stay signed in to, click Allow, repeat for each site, then click Save changes.
✏️ Change: the address — type what your address bar shows when you are signed in to that site, such as your email’s. Either its full form (mail.example.com) or its main part (example.com) keeps the whole site; we tested both.
You should see: the page Privacy and security › History, where Clear history when Firefox closes is already ticked. That is expected, and it does not delete your browsing history: it is the switch behind step 3’s box. The dialog you opened is titled “Exceptions - Clear History on Shutdown” and lists each address you allowed.
If not: • History says Remember history and there is no button → step 3 is not done yet. Do it first
• Manage Exceptions is greyed out → Clear history when Firefox closes is unticked. Tick it
• still signed out after restarting Firefox → the address went into the Manage exceptions of the Browsing data card instead. It looks the same and does not keep anything at close. Add the address here
Go: Settings. Type sell.
Do: in the Additional protections card, tick Tell websites not to sell or share my data.
You should see: the box ticked. Firefox now sends every website a request called Global Privacy Control. A website either honours it or ignores it; it costs you nothing. It replaces Do Not Track: Firefox says “We no longer support the “Do Not Track” signal”, so a guide telling you to switch Do Not Track on is out of date.
If not: no such box → your Firefox is older than this page. Update it, then look again
Go: Settings. Type https-only — with the hyphen. Plain https fills the screen with unrelated results first.
Do: in the Connection and software security card, click Advanced settings (yellow tag). In the HTTPS-Only Mode card, choose Enable HTTPS-Only Mode in all windows.
You should see: that choice selected instead of Don’t enable HTTPS-Only Mode. From now on, when a site has no encrypted version, Firefox does not load it unencrypted: it shows a page titled “Secure Site Not Available” with Continue to HTTP Site and Go Back. Go back unless you trust the network you are on.
If not: a site you need will not open → on that page, Continue to HTTP Site; or add the site under Manage Exceptions… in the same card so Firefox stops asking
Go: Settings. Type dns. Two cards appear, each with an Advanced settings button: use the one in the DNS over HTTPS card.
Do: choose Custom. Under it, Always warn me if secure DNS isn’t available is already ticked. Leave it ticked.
You should see: Custom selected, and a line at the top of the card beginning “DNS over HTTPS is using the provider”, followed by the provider’s name. Because Always warn me is ticked, Firefox never quietly falls back to the unencrypted way: when it cannot reach the provider, it tells you.
Some networks block secure DNS — a hotel or café connection that wants you to log in first, or a company network. There, pages show “Hmm. We’re having trouble finding that site.” with, under it, “Firefox can’t protect your request for this site’s address through our secure DNS provider.” The page offers only Try Again and Change DNS settings — see If not below.
If not: • that page appears on a network you trust → click Change DNS settings. Settings opens at Privacy and security: click Advanced settings in the DNS over HTTPS card and untick Always warn me if secure DNS isn’t available. Firefox then uses the unencrypted way only when the encrypted one fails
• you would rather not choose → select Default instead, which Firefox describes as “Use secure DNS in regions where it’s available”
• Choose provider: shows Custom with an empty box → that is how it looked when we tested with no internet connection; the line at the top of the card still names the provider in use
Go: Settings. Type data collection.
Do: in the Firefox data collection and use card, untick Send technical and interaction data to Mozilla, then untick Send daily usage ping to Mozilla.
You should see: both unticked. The two boxes indented under the first one untick themselves, and the line under the first one now reads “Data reporting is disabled for this build configuration.” — odd wording, but it is what Firefox shows after this change. A bar appears: “You’re no longer allowing Mozilla to capture technical and interaction data. All past data will be deleted within 30 days.”
Leave Allow Firefox to improve features, performance, and stability between updates as it is: it is about changes Firefox receives between versions, not data it sends.
If not: the boxes are greyed out → your organisation sets them; there is nothing to do here
Go: Settings. Type recommend.
Do: in the Recommendations card, untick Recommend extensions as you browse and Recommend features as you browse. Then type search engine and, under Default search engine, choose the one you want.
You should see: both recommendation boxes unticked, and your choice shown under Default search engine. Everything you search for from the address bar goes to that engine, so choose one whose privacy policy you have read; the list differs from country to country.
If not: the engine you want is not listed → use Add search engine in the Additional search engines card on the same page
Firefox now blocks more trackers, clears cookies when it closes but keeps the sites you chose, asks sites not to sell your data, refuses unencrypted pages and DNS without asking you, and sends Mozilla nothing about how you use it. Part 2 is optional — it goes beyond what Settings offers, and teaches you to check any privacy guide instead of trusting it.
Part 2: Settings in a File, and Proof They Took Effect
Settings shows only some of Firefox’s preferences. The rest live in about:config, and the dependable way to set them is a small file Firefox reads every time it starts: user.js. A file can be checked line by line and copied to your next computer, which clicks cannot. You will write one, prove every line took effect, and then make the two mistakes that fail without a word — on purpose.
You need Python 3 and a terminal (see Before you start). Nothing here can harm your profile: every change can be undone, and Undo Everything shows how.
Go: Firefox. Type about:support into the address bar and press Enter.
Do: find the row Profile Folder — on Linux it is called Profile Directory. Click its button: Open Folder on Windows, Show in Finder on macOS, Open Directory on Linux. Keep that window open.
✏️ Change: nothing.
You should see: a window showing a folder full of Firefox’s files, among them prefs.js. The same row in about:support shows this folder’s path as text. Check before you change: is there already a file called user.js here? If there is, something you installed or followed earlier created it. Do not replace it — add the lines from step 11 to its end instead.
If not: no prefs.js in the window → you are in a different folder; click the button in about:support again
Go: a plain-text editor: Notepad on Windows, TextEdit on macOS, Text Editor on Linux.
Do: save the lines below as user.js in your home folder, the same way you saved files in Introduction to Python. In Notepad’s Save dialog, set Save as type to All Files first, or Windows quietly names it user.js.txt. Then copy the file (right-click → Copy) and paste it into the profile folder window from step 10 (right-click → Paste).
// user.js: Firefox reads this file every time it starts. Each line sets one preference.
// Keep your computer's local network addresses away from websites that use WebRTC (video calls):
user_pref("media.peerconnection.ice.default_address_only", true);
user_pref("media.peerconnection.ice.no_host", true);
// Do not contact websites before you have chosen to visit them:
user_pref("network.prefetch-next", false);
user_pref("network.dns.disablePrefetch", true);
user_pref("network.http.speculative-parallel-limit", 0);
// No sponsored stories and no sponsored shortcuts on the new tab page:
user_pref("browser.newtabpage.activity-stream.showSponsored", false);
user_pref("browser.newtabpage.activity-stream.showSponsoredTopSites", false);
You should see: user.js in the profile folder, next to prefs.js. Nothing has changed yet: Firefox reads user.js only when it starts. Each user_pref line sets one preference, and the comment line above each group says what the group is for.
If not: • the folder shows user.js.txt → rename it to user.js. If Windows hides the ending, the checker in step 12 notices it for you
• you are on macOS and the file has formatting → in TextEdit choose Format → Make Plain Text before saving
Go: the terminal you used in Introduction to Python. It starts in your home folder.
Do: save the program below as check-prefs.py in your home folder, the same way as user.js. It only reads files and changes nothing. Then run it:
✏️ Change: nothing in the command — it finds your profile by itself. On Windows, type python instead of python3, whichever worked in Introduction to Python.
# check-prefs.py: did Firefox really take the settings in your user.js?
# python3 check-prefs.py finds the profile Firefox used last
# python3 check-prefs.py "PROFILE FOLDER" checks that folder instead
# (On Windows, type python instead of python3.) It only READS two files and changes nothing:
# user.js what you asked for
# prefs.js what Firefox stored; it writes only values that differ from its own defaults
import os, re, sys
from pathlib import Path
TOKEN = re.compile(r'''(?P<space>\s+) | (?P<comment>//[^\n]*|\#[^\n]*|/\*.*?\*/)
| (?P<text>"(?:[^"\\]|\\.)*") | (?P<word>[A-Za-z_]\w*) | (?P<number>[+-]?\d+)
| (?P<mark>[(),;]) | (?P<bad>.)''', re.X | re.S) # like Firefox, a quote may run past a line end
def statements(source):
"""Split a prefs file the way Firefox reads it: each statement ends at a ';'. When one is
broken, Firefox skips everything up to that ';', so a missing ';' costs the NEXT line too."""
found, current, line = [], [], 1
for t in TOKEN.finditer(source):
kind, value = t.lastgroup, t.group()
if kind not in ("space", "comment"):
current.append((kind, value, line))
if value == ";":
found.append(current)
current = []
line += value.count("\n")
if current:
found.append(current)
return found
def read(path):
"""The settings Firefox accepts, {name: (value, line)}, and the lines it skips."""
text = path.read_text(encoding="utf-8", errors="replace")
lines = text.split("\n")
good, skipped = {}, []
for st in statements(text):
shape = [kind if kind in ("text", "number") else value for kind, value, _ in st]
if (shape[:4] == ["user_pref", "(", "text", ","] and shape[5:] == [")", ";"]
and shape[4] in ("text", "number", "true", "false")):
good[st[2][1][1:-1]] = (st[4][1], st[0][2])
continue
first, last = st[0][2], st[-1][2]
bad = [value for kind, value, _ in st if kind == "bad"]
if any(kind == "text" and "\n" in value for kind, value, _ in st):
why = "opens a quote it never closes, so Firefox reads on and skips up to line %d" % last
elif bad:
why = "has a character Firefox cannot read: %s (curly quotes, from a word processor?)" % bad[0]
elif shape.count("user_pref") > 1:
why = "has no ';' at the end, so Firefox skips line %d too" % last
elif shape[-1] != ";":
why = "has no ';' at the end"
else:
why = 'is not a user_pref("name", value); line'
for line in range(first, last + 1): # every line this broken statement swallows
if line == first or "user_pref" in lines[line - 1]:
name = re.search(r'user_pref\(\s*"([^"]+)"', lines[line - 1])
reason = "line %d %s" % (first, why) if line == first else "skipped because of line %d" % first
skipped.append((line, lines[line - 1].strip(), reason, name and name.group(1)))
return good, skipped
def last_used_profile():
"""Firefox rewrites prefs.js every time it starts, so the newest one is the profile in use."""
home = Path.home()
places = [Path(os.environ.get("APPDATA", home)) / "Mozilla/Firefox/Profiles", # Windows
home / "Library/Application Support/Firefox/Profiles", # macOS
home / ".mozilla/firefox", home / ".config/mozilla/firefox", # Linux
home / "snap/firefox/common/.mozilla/firefox", # Linux, Snap
home / ".var/app/org.mozilla.firefox/.mozilla/firefox"] # Linux, Flatpak
found = [p for place in places if place.is_dir() for p in place.glob("*/prefs.js")]
if not found:
sys.exit("No Firefox profile found. Give the folder instead:\n"
' python3 check-prefs.py "PROFILE FOLDER"')
return max(found, key=lambda p: p.stat().st_mtime).parent, len(found)
if len(sys.argv) > 1:
folder, others = Path(sys.argv[1]), 0
else:
folder, others = last_used_profile()
asked, stored_file = folder / "user.js", folder / "prefs.js"
if not asked.exists():
if (folder / "user.js.txt").exists():
sys.exit("Found user.js.txt: your editor added .txt. Rename the file to user.js.")
sys.exit("No user.js in %s. Save it there first." % folder)
if not stored_file.exists():
sys.exit("No prefs.js in %s, so this is not a profile folder.\n"
"Copy the path from about:support, the row called Profile Folder." % folder)
wanted, skipped = read(asked)
stored, _ = read(stored_file)
print("Profile: %s%s\n" % (folder.name, " (the most recently used of %d)" % others if others > 1 else ""))
if asked.stat().st_mtime > stored_file.stat().st_mtime:
for line, text, why, name in sorted(skipped, key=lambda s: s[0]):
print(" SKIPPED %s\n %s" % (text, why))
if skipped:
print()
sys.exit("user.js is newer than prefs.js: Firefox has not started since you saved it.\n"
"Restart Firefox, wait ten seconds, then run this again.")
rows = []
for line, text, why, name in skipped:
if name in stored: # a skipped line leaves behind what an EARLIER start set
why += "\n prefs.js still holds %s from an earlier start" % stored[name][0]
rows.append((line, "SKIPPED", text, why))
counts = {"in force": 0, "default": 0, "DIFFERENT": 0}
for name, (value, line) in wanted.items():
if name not in stored:
status, why = "default", "not in prefs.js: Firefox stores nothing that equals its own default"
elif stored[name][0] == value:
status, why = "in force", ""
else:
status, why = "DIFFERENT", "Firefox has %s: restart it, it reads user.js only when it starts" % stored[name][0]
counts[status] += 1
rows.append((line, status, "%s = %s" % (name, value), why))
for line, status, text, why in sorted(rows):
print(" %-10s %s" % (status, text))
if why:
print(" %s" % why)
print("\n%d in force, %d default, %d different, %d skipped."
% (counts["in force"], counts["default"], counts["DIFFERENT"], len(skipped)))
print("Firefox stores a misspelt name like any other, so this cannot see a typo.\n"
"Search each name in about:config: Reset means Firefox knows it, Delete means it does not.")
sys.exit(1 if skipped or counts["DIFFERENT"] else 0)
python3 check-prefs.py
You should see: because Firefox has not started since you saved user.js, the checker refuses to guess. The first line names your profile; yours will have a different name:
Profile: x7k2m9qa.default-release user.js is newer than prefs.js: Firefox has not started since you saved it. Restart Firefox, wait ten seconds, then run this again.
That is the first lesson: user.js is read only at start. Close Firefox completely, start it again, wait ten seconds, then run the same command:
python3 check-prefs.py
Profile: x7k2m9qa.default-release in force media.peerconnection.ice.default_address_only = true in force media.peerconnection.ice.no_host = true in force network.prefetch-next = false in force network.dns.disablePrefetch = true in force network.http.speculative-parallel-limit = 0 in force browser.newtabpage.activity-stream.showSponsored = false in force browser.newtabpage.activity-stream.showSponsoredTopSites = false 7 in force, 0 default, 0 different, 0 skipped. Firefox stores a misspelt name like any other, so this cannot see a typo. Search each name in about:config: Reset means Firefox knows it, Delete means it does not.
in force means Firefox stored exactly the value you asked for. You may also see default: Firefox writes nothing to prefs.js when a value equals its own default, so a missing line there means the setting already is what you asked.
If the first line names a profile you do not recognise — you have more than one — give the folder yourself, copying its path from the Profile Folder row of about:support:
python3 check-prefs.py "PROFILE FOLDER"
✏️ Change: PROFILE FOLDER — the path from about:support. Keep the quotes: most paths contain spaces.
If not: • No such file or directory → the terminal is not where you saved check-prefs.py. Save it again into your home folder
• No Firefox profile found → give the folder, as shown above
• python3 is not recognized, or command not found → on Windows type python; elsewhere install Python with Introduction to Python first
Go: user.js in your profile folder, opened in your editor.
Do: 1. In the line with ice.no_host, swap the last two letters so it reads ice.no_hots.
2. At the end of the network.prefetch-next line, delete the ;.
Save, and run the checker again — without restarting Firefox:
python3 check-prefs.py
You should see: the missing ; is caught at once, and so is the line after it, which Firefox loses too: it reads on until the next ; and throws both away.
Profile: x7k2m9qa.default-release
SKIPPED user_pref("network.prefetch-next", false)
line 6 has no ';' at the end, so Firefox skips line 7 too
SKIPPED user_pref("network.dns.disablePrefetch", true);
skipped because of line 6
user.js is newer than prefs.js: Firefox has not started since you saved it.
Restart Firefox, wait ten seconds, then run this again.
The typo is not mentioned. It is a perfectly valid line — for a preference that does not exist. Restart Firefox, wait ten seconds, and run it once more:
python3 check-prefs.py
Profile: x7k2m9qa.default-release
in force media.peerconnection.ice.default_address_only = true
in force media.peerconnection.ice.no_hots = true
SKIPPED user_pref("network.prefetch-next", false)
line 6 has no ';' at the end, so Firefox skips line 7 too
prefs.js still holds false from an earlier start
SKIPPED user_pref("network.dns.disablePrefetch", true);
skipped because of line 6
prefs.js still holds true from an earlier start
in force network.http.speculative-parallel-limit = 0
in force browser.newtabpage.activity-stream.showSponsored = false
in force browser.newtabpage.activity-stream.showSponsoredTopSites = false
5 in force, 0 default, 0 different, 2 skipped.
Firefox stores a misspelt name like any other, so this cannot see a typo.
Search each name in about:config: Reset means Firefox knows it, Delete means it does not.
🔴 Read the line with no_hots: the typo says in force. Firefox stored the misspelt name like any other and will never mention it. No comparison of two files can catch that; step 14 can. And note the skipped lines: their old values are still set from the earlier start — a change in user.js sticks until something resets it.
If not: no SKIPPED lines → you edited a copy, not the user.js inside the profile folder, or did not save
Go: Firefox. Type about:config into the address bar and press Enter. It warns “Proceed with Caution”: click Accept the Risk and Continue.
Do: type media.peerconnection.ice.no_hots into the search box at the top. Then type the real name, media.peerconnection.ice.no_host, and compare the buttons at the right end of the two rows.
You should see: the real name’s row has a Reset button; the misspelt name’s row has Delete instead. That is the whole test: a preference you have set shows Reset when Firefox knows it, and Delete when it does not. The buttons are small icons — hold the mouse over one to see its name.
Now clean up: click Delete on the no_hots row. In user.js, put back no_host and the ;, save, restart Firefox, and run the checker one last time. Its summary should read 7 in force, 0 default, 0 different, 0 skipped. again, as in step 12.
If not: • a row offering to add the name → nothing by that name is stored; check what you typed
• neither Reset nor Delete on a row → its value is Firefox’s own default, so there is nothing to reset; or your organisation has locked it
Question: you add a line to user.js, restart Firefox, and the checker says in force. Is the setting definitely working? Answer: not definitely. In force proves only that Firefox stored the line, and it stores a misspelt name too. about:config settles it: Reset means a real preference, Delete means a name Firefox does not know.
Question: a friend ticks the cookie box from step 3, adds their bank under Browsing data → Manage exceptions, and is signed out every day. Why? Answer: that button sets ordinary cookie permissions, which close-time clearing ignores. The exception belongs in History → Manage Exceptions, as in step 4.
Now do it without this page: take any Firefox privacy guide, turn its list of settings into a user.js, run the checker, and look up every name in about:config. Names that show Delete tell you the guide is older than your Firefox.
Undo Everything
Deleting user.js undoes nothing. Firefox copies each of its values into prefs.js, and they stay: we deleted a user.js, restarted Firefox, and every value was still set. To undo:
- One preference from the file: delete its line from
user.jsfirst — otherwise it comes back at the next start — then search its name inabout:configand click Reset. - All of Part 2: delete the lines (or the whole
user.js), then Reset each of the seven names inabout:config. - A Part 1 setting: change it back in Settings, the same way you set it. Strict, for example, goes back to Standard (default).
Settings Older Guides Still Tell You to Change
Firefox changes and guides do not, so check a line before you copy it. As of Firefox 157:
extensions.pocket.enabled,browser.ping-centre.telemetryandnetwork.predictor.enabledno longer exist. Firefox stores them and nothing reads them.toolkit.telemetry.enabledset tofalseis already the default, so it changes nothing; the real switch is in step 8.browser.urlbar.suggest.quicksuggest.sponsoredset tofalseis already the default as well.privacy.donottrackheader.enabledis the old Do Not Track; Firefox no longer supports it, and step 5 sends its replacement.media.peerconnection.enabledset tofalseswitches WebRTC off completely, which breaks video calls in the browser. The twoicelines in step 11 keep your local addresses private without switching it off.privacy.resistFingerprintingset totrueworks, but websites then also see a different time zone and window size, and some behave oddly. Add it only if you want that trade.
What This Does Not Do
These settings make tracking harder and stop Firefox volunteering information. They do not hide your internet address, and they cannot stop a site you sign in to from knowing it is you. The next layer is extensions: Essential Privacy Extensions. To see how websites recognise a browser without any cookies, read Browser Fingerprinting; for more on what secure DNS protects, DNS Security & Privacy.