Browser fingerprinting collects a set of attributes from a user's browser and device - screen resolution, installed fonts, plugins, timezone, language settings, GPU information, and more - and combines them into a profile that can uniquely identify the user.
Unlike cookies, which are stored in the browser and can be deleted or blocked by the user, a fingerprint is assembled from information the browser sends to websites and information that scripts on the page read. The user may be tracked without noticing. In a 2010 paper by Peter Eckersley of the EFF, 83.6% of the 470,161 browsers from privacy-conscious users who visited Panopticlick had a unique fingerprint.
Key components of a fingerprint include the User-Agent string, screen resolution and color depth, timezone and language settings, installed plugins and fonts, Canvas fingerprint (a hash of an image drawn via the Canvas API), WebGL fingerprint (GPU rendering characteristics), and AudioContext fingerprint (audio processing traits).
For URL shortening services, fingerprinting can supplement click analytics in environments where cookies are unavailable - private browsing mode, browsers that block third-party cookies, and so on. However, in Opinion 9/2014 (adopted November 2014), the EU's Article 29 Working Party stated that Article 5(3) of the ePrivacy Directive, which requires consent for accessing information on a user's device, applies to fingerprinting, so compliance with privacy regulations is required.
As countermeasures, Firefox's Enhanced Tracking Protection blocks known fingerprinting scripts. WebKit, the engine behind Safari, reduces fingerprinting signals with changes such as exposing only OS-bundled fonts and web fonts to web pages and not changing the User-Agent string with minor updates. Brave randomizes some API values (per the WebKit and Brave documentation as of October 2026).