Skip to content
All fingerprint checks
Render & GPU

reading the same framebuffer twice returns the same bytes

Pim· Clearcote Research 1 min readCheck id webgl-repeat-readback-determinism

Repeated readPixels of one unchanged framebuffer return identical bytes. Brave's stock farbling makes them differ and is declined rather than scored.

What a detector infers

The same assertion as the canvas row beside it, asked one layer down the graphics stack, and separate from it because a build can be deterministic in one path and not the other. A glClear paints a single colour into every pixel of the framebuffer, so reading that framebuffer back twice with nothing drawn in between must return identical bytes — the buffer cannot hold two values. Any difference was introduced on the way out, by a readback path that perturbs per call.

The value of the clear colour is deliberately never asserted, only that repeated reads agree, which keeps the check independent of how a given driver converts a float clear colour to bytes.

How to resolve it

Seed WebGL readback noise per session rather than per call. If the 2D canvas path is already deterministic and this one is not, the noise is being applied at the GL readback layer specifically.

What is WebGL fingerprinting?

Nearby checks in Render & GPU

See all 46 checks in Render & GPU
Who builds this test

Clearcote is a browser built for fingerprint coherence

It is a Chromium fork, maintained by the same people who wrote this reference. It ships as a compiled browser rather than as a stealth script injected into someone else's — which is a description of how it is built, and is not an argument about how it behaves on this check.

This audit takes no position on how Clearcote scores on Render & GPU checks, on this one, or anywhere else. It has no baseline corpus of other people's fingerprints to rank you against and no vendor scoreboard — nearly every check is self-referential, asking one browser the same question through two independent APIs and reporting whether both answers can be true at once. It runs identically on any browser, including ours. Run it on yours and read the result yourself.

See the other checks in Render & GPU — the family webgl-repeat-readback-determinism belongs to.