Skip to content
All fingerprint checks
Capability surfaces

the Storage Buckets API reports the same origin quota as navigator.storage

Pim· Clearcote Research 2 min readCheck id storage-buckets-quota-agreement

The bucket quota and navigator.storage.estimate() agree to within an order of magnitude — or the row declines, because the Storage Buckets API is recent and its absence is ordinary.

What a detector infers

There are three ways to ask this origin how much storage it may use, and they all describe one number. navigator.storage.estimate() is the modern one every guide names. navigator.webkitTemporaryStorage is the deprecated door, checked by its own row here. Storage Buckets is the third and newest, and it is the one most likely to be missed by a build that normalises its quota — which is exactly why it is worth asking.

A quota is normalised in the first place to defeat a classifier that reads a small quota as evidence of a private window; the mistake is to normalise the API that documentation mentions and leave the others answering from the real disk. Then a detector reaches the contradiction with one extra call to an API nobody thinks about.

The comparison here is deliberately loose — an order of magnitude, not equality — because a bucket can legitimately be apportioned a share of the origin pool rather than the whole of it, so an exact-equality assertion would fail honest browsers. What cannot happen honestly is the two differing by 10x or more: that is not two views of one pool, it is one value that was rewritten and one that was not.

How to resolve it

Normalise the quota below the API layer, so every surface reporting it agrees: navigator.storage, the deprecated webkitTemporaryStorage door, a worker's copy, and Storage Buckets. Patching one entry point is what creates the contradiction — the honest value is one derived from the real disk, which needs no patching anywhere.

How is a headless browser detected?

Read in the wild by

CloakBrowser Pro releases

A stealth browser's own release notes announce a patch normalising the Storage Buckets quota, describing it as the last remaining storage-based way to distinguish a private window — the vendor naming the surface it had to close.

CHANGELOG entry adding a Chromium patch for StorageBuckets API quota normalisation

CloakHQ/CloakBrowser CHANGELOG.md

Every attribution traces to a published artifact. See the sources and their limits.

Nearby checks in Capability surfaces

See all 18 checks in Capability surfaces
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 Capability surfaces 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 Capability surfaces — the family storage-buckets-quota-agreement belongs to.