Skip to content
All fingerprint checks
Environment & locale

the geolocation permission state matches what the call actually does

Pim· Clearcote Research 2 min readCheck id geolocation-outcome-vs-permission

A denied permission produces PERMISSION_DENIED; a granted one produces a position or an unavailability, never a denial. A prompt state is left alone rather than probed.

What a detector infers

A deployed collector calls getCurrentPosition() behind a permissions.query pre-check and records which of PERMISSION_DENIED, POSITION_UNAVAILABLE or TIMEOUT came back alongside any coordinates. Both halves travel together, which makes their relationship checkable without any reference data: a permission the browser reports as denied must produce the denial error, and one it reports as granted must not.

They are two statements by one browser about one capability, so a disagreement means the permission surface is answering from somewhere other than the state the call actually enforces — the signature of a normalised permissions.query sitting above an unmodified geolocation service.

One reading is called out in the detail rather than scored: POSITION_UNAVAILABLE under a granted permission means no position provider answered, which is entirely ordinary on a desktop with no location hardware and is also exactly what a container with no location service reports. A collector reads those two the same way, so it is worth seeing, but it is not a fault.

The audit never calls through on a prompt state, because raising a permission dialog on a page someone opened for a measurement would be its own kind of rude.

How to resolve it

Report the permission state from the same place the call is gated on. A permissions.query result normalised independently of the geolocation service describes a decision the call does not honour, and the same collector reads both in one run.

Anatomy of a browser fingerprint: every signal, and why they must agree

Nearby checks in Environment & locale

See all 28 checks in Environment & locale
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 Environment & locale 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 Environment & locale — the family geolocation-outcome-vs-permission belongs to.