Brave improves protections against GPU fingerprinting
This is the 38th post in an ongoing series describing new privacy features in Brave. This post describes work done by Rohit Agarwal (Senior Software Engineer) and Peter Snyder (Principal Researcher), and was written by Shivan Kaul Sahib (VP, Privacy and Security).
Starting in version 1.93, Brave is rolling out new protections against GPU and graphics-driver fingerprinting. WebGL and WebGPU APIs expose detailed information about users’ graphics cards and drivers that tracking companies use for browser fingerprinting. Brave now de-identifies the vendor and renderer strings these APIs report, and adds noise to the list of supported extensions to combat fingerprinting while preserving website functionality.
These protections are on by default in our desktop and Android browsers. This will be a phased rollout over the next several days, so please check again soon for the new functionality if you don’t see it right away.
Your GPU can be a fingerprint
The WebGL and WebGPU APIs let websites draw hardware-accelerated graphics. These APIs make the Web a more colorful place (literally), helping website developers design engaging experiences. As a browser vendor, we care deeply about this open and vibrant Web, since we want people to use it instead of walled-garden app stores.
Unfortunately, graphics APIs are also used by third-party trackers to fingerprint users. Browser fingerprinting is a tracking technique that combines many small, device-specific signals into a single identifier that follows a user across the Web, without cookies and without consent. WebGL and WebGPU APIs expose details about the underlying hardware, which makes them particularly rich sources of these signals: a script can learn the exact vendor and model of the GPU, the graphics driver, and the precise set of features the hardware supports. For example, the WebGL API lets websites query for highly-detailed debug strings like 'ANGLE (Apple, ANGLE Metal Renderer: Apple M5 Max)' on an Apple MacBook Pro with an M-series chip, as tested on EFF’s excellent Cover Your Tracks tool; interestingly, this debug extension was originally exposed for Google Maps by Google Chrome before being made available for all websites. The same WebGL context also reports its full list of supported extensions, a set that varies by GPU and driver and that trackers can hash into a compact identifier. And the newer WebGPU API exposes its own hardware descriptors, returning the adapter’s vendor, architecture, and device (for example {vendor: 'apple', architecture: 'metal-3'}). These fingerprinting signals are stable across time, since you’re unlikely to change your GPU hardware on a day-to-day basis.
We ran a small Web crawl to see how top websites use these APIs, analyzing the stack trace right before each call. We found that most websites were using these APIs exclusively for browser fingerprinting.
How Brave protects you
Brave now scrubs these signals. We:
- Replace the WebGL vendor and renderer strings with a single generic string, ensuring that all Brave users get identical values (details),
- Empty out the WebGPU adapter descriptors (details),
- Inject randomization into the WebGL extension list so that hash-based fingerprinters see a different value per session, per site (eTLD+1) and per storage area (details).
As with all of Brave’s privacy protections, the goal is to deny trackers a stable identifier while leaving websites everything they need to render rich experiences for their users.
Protecting privacy without breaking the Web
We’ve rolled out these protections across our Nightly and Beta channels over the last few months, and are optimistic that our approach reduces the chance of breakage on most websites while effectively combating fingerprinting.
Brave has the ability to adjust these protections on a per-site basis if we discover a site that genuinely breaks. Users always stay in control: on any site, they can turn off these graphics protections, disable fingerprinting protection entirely, or switch off Shields altogether.
Try it yourself
The easiest way to see these protections in action is EFF’s Cover Your Tracks, which reports the WebGL vendor and renderer strings your browser exposes along with how identifying they are. Once the feature is fully rolled out, you’ll see the vendor and renderer collapse to a generic value.
Future work
Graphics APIs remain an active area of fingerprinting research, and we’ll keep expanding coverage to any new signal these interfaces expose. We have plans to also randomize WebGPU’s supported extensions.
Brave has long led the industry in fighting fingerprinting, providing best-in-class protections enabled by default. This latter part is important! Most other browsers that care about user privacy fall into one of two buckets: either opt-in protections (hiding them behind a special mode or a feature flag for expert users) or approaches that sacrifice usability (breaking functionality altogether). Brave’s privacy philosophy is that this is a false tradeoff. Users deserve strong privacy on their favorite websites without having to enable a special toggle or mode or download a Web extension (which comes with its own set of security and privacy issues). Privacy is for everyone, not just the most technical users.
As a reminder, Brave already protects you from state-based tracking (like cookies) and also blocks known-dangerous scripts and resources from loading in the first place; a win-win-win-win for privacy, security, performance and usability.