Browser fingerprinting

Cookies can be cleared. IP addresses can be hidden behind a VPN. But the browser itself is a kind of signature. A fingerprinting script, running silently when a page loads, assembles a profile from the properties of the browser and device: the screen dimensions, the installed fonts, the GPU and its driver, the time zone, whether cookies are enabled, the exact version of the rendering engine. Each value is unremarkable on its own. Together they form a combination that is statistically unique for the vast majority of browsers in the world.

How it works

The script runs in the browser as ordinary JavaScript. No permissions are requested. No download occurs. The browser discloses these properties as a normal part of rendering web content, and the script simply collects and combines them.

collect from browser environment:
    user-agent string         → browser name, version, OS
    screen resolution         → width × height in pixels
    colour depth              → bits per pixel
    time zone offset          → inferred location
    hardware thread count     → number of CPU cores
    cookie and JS settings    → privacy configuration
    installed fonts:
        for each font in candidate list:
            render a string using that font
            measure the pixel width of the rendered output
            if width differs from default → font is installed
    GPU fingerprint:
        draw a specific shape using WebGL
        read back the pixel values
        hash the result → reflects GPU vendor and driver version

combine all collected values
hash the combination → fingerprint string

The font detection step exploits the fact that each installed font renders text at a slightly different width. By measuring rendered widths for a list of candidate fonts, the script can determine which fonts are installed without directly querying the font list. The WebGL step draws something on the graphics hardware; because different GPUs and drivers produce slightly different results even for identical instructions, the output is a signature of the hardware configuration.

The complete fingerprint is sent to the tracking service and stored. On a return visit, from any site using the same service, the same fingerprint is generated and matched. The user has not logged in, has not accepted cookies, and may be behind a different IP address. They are still recognised.

What this reveals

Browser fingerprinting is widely used in advertising, fraud detection, and analytics. Its value lies precisely in its persistence: it survives the privacy measures most users take. A person who clears their cookies, uses private browsing, and changes their IP address still presents the same fingerprint if they have not changed their browser, device, or configuration.

Research from the Electronic Frontier Foundation found that over 80% of browsers had a unique fingerprint among their test population. Amiunique.org allows anyone to check their own browser’s uniqueness in the current distribution.

Defences

The Tor Browser and Firefox with privacy.resistFingerprinting enabled return randomised or normalised values for many of the measurements fingerprinting relies on, making each session appear to be a different browser. Using a common browser on a common operating system, without unusual fonts or extensions, reduces uniqueness because more people share the same configuration. Browser extensions such as uBlock Origin block many fingerprinting scripts from running at all. The most complete defence is the Tor Browser, which is specifically designed to make all users appear identical to outside observers.