Score ranges from 0 (common) to 100 (completely unique). Higher scores = easier to track.
The uniqueness score is a normalized metric (0-100) that quantifies how distinguishable your browser fingerprint is from others. It combines multiple approaches:
Browser fingerprinting uniqueness scores emerged from academic research into web privacy. The Electronic Frontier Foundation's 2010 "Panopticlick" study was the first large-scale measurement of browser uniqueness, introducing the concept of fingerprint entropy.
The uniqueness score is rooted in Claude Shannon's information theory (1948). Entropy measures the "surprise" or information content in data:
Example: User Agent = "Chrome on Windows"
Prevalence: ~65% of all users
Entropy: ~0.8 bits (very common, low information)
Uniqueness Contribution: Minimal
Example: User Agent = "Lynx 2.8.9rel.1 on FreeBSD"
Prevalence: ~0.001% of users
Entropy: ~16 bits (very rare, high information)
Uniqueness Contribution: Extremely high
Interpretation: Your fingerprint matches many other users
Trackability: Low - difficult to single you out
Typical Profile: Default browser settings, common device, no extensions
Example: Stock Chrome on Windows with 1920x1080 screen
Interpretation: Your fingerprint is shared with a moderate group
Trackability: Medium-Low - can be tracked in combination with other data
Typical Profile: Popular browser with minor customizations
Example: Firefox with Enhanced Tracking Protection on macOS
Interpretation: Your fingerprint is relatively uncommon
Trackability: Medium - easily tracked within specific contexts
Typical Profile: Less common OS, unusual screen resolution, some extensions
Example: Chrome on Linux with 2560x1440 screen
Interpretation: Your fingerprint is rare
Trackability: High - easily tracked across most websites
Typical Profile: Uncommon browser/OS combo, multiple extensions, unique hardware
Example: Brave on macOS with privacy extensions and unusual GPU
Interpretation: Your fingerprint is nearly one-of-a-kind
Trackability: Very High - trivially tracked everywhere
Typical Profile: Rare OS, heavily customized browser, unique hardware configuration
Example: Custom browser build on Qubes OS with specialized GPU and fonts
Based on data from privacy research projects:
| Browser/Configuration | Typical Score Range | Key Factors |
|---|---|---|
| Chrome (Default) | 55-75 | Common but exposes many data points |
| Safari (Default) | 45-65 | ITP reduces some fingerprinting surface |
| Firefox (Default) | 50-70 | Enhanced Tracking Protection helps slightly |
| Brave Browser | 30-50 | Fingerprint randomization reduces uniqueness |
| Tor Browser | 10-25 | Standardized fingerprint blends with other users |
| Chrome + Privacy Extensions | 70-90 | Paradox: extensions often increase uniqueness |
| Uncommon OS (Linux, BSD) | 75-95 | Rare platforms are more unique |
| Mobile (iOS/Android) | 40-60 | More standardized hardware configurations |
Ironically, efforts to increase privacy can increase uniqueness:
The only way to reduce uniqueness is to blend in—use Tor Browser (everyone has the same fingerprint) or very common configurations (Chrome default settings).
A high uniqueness score means you can be reliably tracked across websites without cookies. Your fingerprint becomes a permanent identifier that follows you everywhere online.
Score 80+: You can be recognized across 95%+ of websites that use fingerprinting, even with ad blockers and no cookies.
Your unique fingerprint persists across browsing sessions, creating a permanent tracking ID that builds a detailed profile over months or years.
Extremely unique fingerprints can be linked to your real identity if you ever log in to a service, permanently associating your fingerprint with your name.
The uniqueness score correlates with bits of entropy in your fingerprint:
// Relationship between entropy and uniqueness
function entropyToUniqueness(entropyBits) {
// Entropy measures information content in bits
// Higher entropy = more unique fingerprint
// Total possible fingerprints = 2^entropy
const possibleFingerprints = Math.pow(2, entropyBits);
// Estimated global browser population
const globalBrowsers = 5000000000; // 5 billion
// Probability of being unique
const uniqueProbability = 1 - (1 / possibleFingerprints);
// Scale to 0-100 score
const uniquenessScore = Math.min(100, uniqueProbability * 100);
return uniquenessScore;
}
// Examples:
entropyToUniqueness(10); // ~99.9998% unique → score ~99.9
entropyToUniqueness(18); // ~99.9999998% unique → score ~100
entropyToUniqueness(33); // Essentially 100% unique
// EFF Panopticlick found:
// Average fingerprint entropy: 18.1 bits
// Average uniqueness: 99.9996%A uniqueness score of 85 doesn't mean you're in the 85th percentile—it means you're approximately one in 100,000+ browsers. With 5 billion global browsers, that's still ~50,000 people—but within a specific website's audience of 10,000 users, you're likely the only one.
Lowering your uniqueness score requires making your browser indistinguishable from others—which means sacrificing customization and sometimes functionality.
Expected Score Reduction: 80+ → 10-20
// Why Tor Browser Works
// All Tor Browser users have IDENTICAL fingerprints:
userAgent: "Mozilla/5.0 (Windows NT 10.0; rv:102.0) Gecko/20100101 Firefox/102.0"
screenResolution: "1000x900" // Standardized
timezone: "UTC" // Always UTC
language: "en-US" // Standardized
canvas: [blocked] // Returns blank canvas
webgl: [disabled] // WebGL completely disabled
fonts: [standard set] // Limited font detection
// Result: You blend in with millions of other Tor users
// Uniqueness Score: 10-20 (very low)Pros:
Cons:
Expected Score Reduction: 75+ → 30-50
Expected Score Reduction: Varies, target 40-60
// Simplified uniqueness score calculation
function calculateUniquenessScore(fingerprint) {
let totalEntropy = 0;
// Calculate entropy for each attribute
fingerprint.attributes.forEach(attr => {
// Entropy = -log2(probability)
const probability = attr.frequency; // e.g., 0.01 = 1% of users have this value
const entropy = -Math.log2(probability);
totalEntropy += entropy;
});
// Normalize to 0-100 scale
// Max theoretical entropy ~33 bits = 100 score
const uniquenessScore = Math.min(100, (totalEntropy / 33) * 100);
return Math.round(uniquenessScore);
}
// Example: Your fingerprint
const myFingerprint = {
attributes: [
{ name: 'userAgent', value: 'Chrome/120 Windows', frequency: 0.35 }, // 35% have this
{ name: 'screenResolution', value: '2560x1440', frequency: 0.08 }, // 8% have this
{ name: 'timezone', value: 'America/New_York', frequency: 0.18 }, // 18% have this
{ name: 'canvasHash', value: 'a3f9d...', frequency: 0.0001 }, // 0.01% have this
{ name: 'webglVendor', value: 'NVIDIA RTX 4090', frequency: 0.005 }, // 0.5% have this
// ... more attributes
]
};
calculateUniquenessScore(myFingerprint); // Returns: 87 (very unique!)Test your uniqueness score regularly:
coveryourtracks.eff.orgamiunique.orgbrowserleaks.com