Tutorials Fingerprint
Font fingerprinting: how your installed fonts ID you
The list of fonts your system has installed.
The short version
Every computer has a list of fonts installed — the ones that came with it, plus any added by software like Office or design apps. That exact combination is surprisingly unique. Websites can quietly figure out which fonts you have and turn the list into a hidden ID. You can't easily "uninstall your way" out of this, but a couple of free browser choices hide the list from trackers.
What's actually happening
Imagine your fonts are a key ring. Most people have the common keys (the fonts that ship with Windows or a Mac), but you've also picked up a few unusual ones over the years. Hand someone your key ring and the particular mix tells them a lot about you — even if no single key is rare.
A website can't read your font folder directly. Instead it plays a clever trick: it writes some text in a font and measures its exact width and height. If the font is installed, the text has one size; if not, the browser substitutes a fallback and the size differs. By testing hundreds of fonts this way, a script works out which ones you have — all invisibly, in a fraction of a second.
Why it matters to you
- It needs no permission and leaves nothing to delete.
- It works in private/incognito mode and survives clearing cookies.
- Installing specialized software (design tools, foreign-language packs, games) can add rare fonts that make you more identifiable.
It's a strong clue because the font list is stable and often distinctive. The fix is to stop sites from reading the true list.
How to fix it
You don't fix this by removing fonts (that can break documents and barely helps). You choose a browser that reports a standard font list to websites instead of your real one.
Option A — Firefox with Resist Fingerprinting (strongest built-in)
- Type about:config in the address bar and accept the warning.
- Search for privacy.resistFingerprinting and set it to true.
- Firefox will now show websites a fixed, bundled set of fonts rather than yours. Note the side effects: the clock may show the wrong time zone, pages may force English, and windows get extra margins. If that's too much, use Option B instead.
Option B — Brave (easiest; no side effects)
- Use Brave with default Shields on. It limits and randomizes the font-measurement trick so the list sites can build is noisy and hard to reuse.
- Confirm by clicking the Brave lion in the address bar.
- Leave the default setting in place.
Option C — Tor Browser (blends into a crowd)
- Install Tor Browser from torproject.org.
- It ships its own bundled fonts and ignores your system's, so every user on your platform looks the same. Use it as delivered.
Which operating system you're on
- Windows: installing Microsoft Office adds dozens of fonts; design and language software add more. These extras are exactly what make you stand out — the browser defenses above hide them from sites, which is better than uninstalling.
- macOS: Macs share a large common font set, so stock Macs blend together fairly well; it's the add-on fonts that single you out.
How to check it worked
Run this site's test. With Firefox RFP or Tor, the number of detectable fonts should drop to a small, standard list, and your grade should improve. In Brave, the detected list should look noisy or reduced rather than a precise match to your real fonts.
If your result was already good
If you scored an A or B, your browser is already masking your font list — you don't need to change anything or delete fonts. Just keep the browser updated, and think twice before installing rare font packs if privacy is a priority.
Want to go further?
The Advanced version covers the two detection methods (metric probing and the Font Access API), how Firefox's bundled-font list and Tor's approach work, and the honest limits of each.
What font fingerprinting actually is
There are two techniques. The dominant one is metric-based enumeration: the script renders a test string in a candidate font with a known fallback (e.g., measuring against generic families) and compares the resulting offsetWidth/offsetHeight or canvas measureText metrics. A match in dimensions means the font is present; a fallback means it isn't. Iterating over a few hundred known font names reconstructs the installed set quickly and silently — no API, no permission. The second technique is the Font Access API (window.queryLocalFonts()), available in some Chromium browsers behind a user permission prompt, which returns an enumerable list directly. Because the permission gate makes it loud, metric probing remains the practical attack.
Why it matters
The installed font set is high-entropy and stable. Default OS fonts form a common base, but software-added fonts (Office, Adobe apps, dev tools, CJK/language packs, games) create a long, distinctive tail. The signal survives incognito and cookie clearing, and a shared third-party script reads the same set across sites. In the EFF's measurements, font/plugin enumeration has historically been among the highest-entropy components available to a web page.
Defenses by browser
Firefox — RFP bundled fonts
- With privacy.resistFingerprinting=true, Firefox restricts font enumeration to a standardized, bundled "allow list" so metric probing returns the same answer for all RFP users on a platform, regardless of what's actually installed.
- It also whitelists system fonts via a controlled visibility list; a custom UI font you set in Preferences won't be used if it's outside the default list — a documented side effect.
- Trade-offs: the broader RFP suite (UTC timezone, en-US locale, letterboxing) and a smaller RFP cohort. Firefox's default (non-RFP) Fingerprinting Protection blocks Disconnect-listed scripts but does not standardize fonts for all sites.
Brave — farbling the measurement
- Brave perturbs the text-metric and canvas measurements used for probing with its per-session, per-eTLD+1 seed, and limits font visibility, so the reconstructed list is noisy and non-reusable across sites/sessions rather than a clean enumeration.
- On by default under standard Shields; no manual steps and no RFP-style breakage.
Tor Browser — bundled fonts + uniformity
- Tor Browser ships its own font bundle and prevents sites from seeing system fonts, so all users on a platform expose the same set. Historically it also capped the number of fonts a document could request to blunt probing.
- Goal is crowd uniformity; cost is Tor latency and occasional rendering differences.
OS reality
- Windows: the base set is fairly uniform, but Office/Adobe/language installs expand it widely — this is the main entropy source on Windows.
- macOS: a large, consistent default font set means stock Macs cluster; add-on fonts (Homebrew casks, design suites) differentiate.
- Linux: font sets vary enormously by distro and user, making unprotected Linux browsers quite distinctive.
- Mobile: iOS/Android have constrained, consistent font sets, so they fingerprint less by fonts than desktops — though emoji and system-font metrics still differ.
Verify properly
- Use browserleaks.com/fonts (reports detected fonts and the detection method) plus this site's test and coveryourtracks.eff.org.
- Firefox RFP / Tor: the detected count should collapse to a small standardized list. Brave: expect a reduced/noisy list that varies by session.
- Also check whether queryLocalFonts() is exposed; if so, confirm it still requires a permission prompt in your browser.
Trade-offs & gotchas
- Uninstalling fonts is the wrong fix: it breaks documents, barely reduces entropy, and a near-empty font set is itself unusual. Mask the list instead.
- Rare anti-font extensions backfire: an uncommon blocker or an inconsistent reported set (e.g., claiming fonts whose metrics don't match) is more identifiable than the truth.
- RFP's font list is only anonymizing if the cohort is large — on a minority OS, even standardized RFP users form a small group.
- Emoji and system-UI font metrics leak even when enumeration is blocked; canvas/text defenses matter here too.
- Every option is software — no hardware or font purchase changes this.