Permissions & Access · Privacy Tests

Permissions & Feature Test

See the state of every permission this page can query, camera, location, notifications and more.

Querying permissions…
Asking the Permissions API…

Reading the stored state of each permission. No prompt is shown, because a query is not a request for access.

On this page
  1. What the Permissions API tells you
  2. Why no prompt appeared
  3. Granted, denied and prompt
  4. What a page reads with no permission
  5. Reviewing and revoking access

What the Permissions API tells you

Browsers keep a record, per origin, of what each site is allowed to use. The Permissions API exposes that record to JavaScript through a single call, navigator.permissions.query, which returns the stored state without asking you for anything. The table above runs that query against every name it knows about.

The names are defined by the specification and extended by each browser as it adds features. Geolocation, notifications, camera, microphone, clipboard read and write, MIDI, push, persistent storage, screen wake lock, background sync, the three motion sensors, payment handlers and storage access are the ones worth checking today. Some are implemented almost everywhere and some by one engine only, which is why the list above is entitled to be shorter than the one in the code.

Read, not request

There is no API that grants a permission. You can read a state and you can ask for access through the feature itself, but the decision is always the browser's, and always shown to you in a dialogue.

Why no prompt appeared

A query is not a request. The distinction is in the specification and in the implementation: query reads the browser's stored decision, while the feature's own entry point — geolocation.getCurrentPosition, getUserMedia, Notification.requestPermission, navigator.clipboard.readText — is what triggers the dialogue the first time.

That is also why reading sixteen states in a few milliseconds raises nothing at all. The browser already knows the answers; it is not consulting you about anything new. Where a name is not recognised at all, the call throws a TypeError rather than returning a value, which is why unsupported names appear in their own list rather than in the table.

One consequence is worth naming: because nothing here asks for access, this page can never change what a site is allowed to do. If a permission shows as granted, it was granted at some earlier point by you or by a browser setting, not by visiting this page.

Granted, denied and prompt

The three states are the whole vocabulary, and they behave differently in practice.

  • Prompt. The default. The browser has no stored decision and will ask the first time the feature is used. On a site you have never granted anything to, this is what almost every row reads.
  • Granted. A decision was made to allow access and it has not been revoked. The site can use the feature immediately, and for geolocation and camera access it often can do so repeatedly without asking again.
  • Denied. Access was refused once and the browser remembers. Repeated requests fail silently rather than prompting again, which is what makes a denial a durable decision.

Two situations muddy the picture. An embedded page can have access restricted before you are asked at all, through the allow attribute on an iframe or a Permissions Policy header, in which case a feature that is available on the top-level site may simply not work inside the frame. And some permissions are tied to a session: a storage access grant for an iframe can expire, and push notifications behave differently in a private window.

What a page reads with no permission

The second table above is the more uncomfortable half of the story, because none of it needs a prompt and none of it can be switched off with a permission button.

  • Display and layout. Screen dimensions, viewport size and device pixel ratio are readable by any script, which the screen resolution test shows on its own.
  • Locale and time. Language preferences and the timezone are always available, and the timezone test shows how much they reveal.
  • Hardware hints. CPU core count, memory class and the GPU renderer string come from ordinary APIs with no prompt attached.
  • Fonts and graphics output. Text measurement reveals which fonts are installed, and canvas output varies with the graphics stack — the two signals behind most fingerprinting.
  • Media device counts. The number of cameras and microphones is listed before any permission is granted, though the device names stay hidden until access is allowed. The camera and microphone test covers that boundary in detail.

Reviewing and revoking access

Every browser keeps a per-site permission list you can edit, and it is worth a look if the table above shows a grant you do not remember making. In Chromium browsers it sits behind the icon at the left of the address bar, or under Settings, Privacy and security, Site settings. In Firefox it is the padlock in the address bar, or Settings, Privacy and security, Permissions. Safari puts it under Settings, Websites.

Clearing site data resets the record as well. Deleting cookies and storage for an origin returns its permissions to prompt, which is the reliable way to start again without hunting through settings.

If you are auditing rather than cleaning up, the cookies and storage test shows what the origin is allowed to keep on your device, and the private mode test covers the cases where a browser deliberately reports less. None of these pages change a permission; they only read and report.

Frequently Asked Questions

Did this page ask for my camera or location?
No. It calls navigator.permissions.query, which only reports the state the browser has already stored for this origin. It never requests access, so no dialogue appears and nothing is granted. A prompt only appears when a page makes a real call, such as asking for a location or opening a camera stream.
What does each permission state mean?
Granted means this site already holds the permission and can use the feature without asking again. Prompt means the browser will ask the first time it is used — the default for most permissions on a site you have not granted anything to. Denied means a request was refused, either by you or by a browser setting, and the feature is blocked.
Why are some permissions missing from the list?
Because browsers implement different sets of names. Chromium exposes camera, microphone, clipboard and MIDI descriptors that Firefox does not, and Firefox supports geolocation, notifications, persistent storage, push and MIDI. Querying a name a browser does not recognise throws an error rather than returning a state, which is why those names are listed separately.
Do permission states apply to every site?
No, they are per origin. A granted camera on one site has no effect on another, and each origin keeps its own record. That is why the table above describes only this site: it is a report on your browser’s memory of browserscan.one, not a summary of how permissive your browser is.
Can a page read anything without permission?
Quite a lot. Your screen size, timezone, language, platform, CPU core count, graphics renderer and the fonts installed on the machine are all readable with no prompt, and that combination is what a browser fingerprint is built from. Permission prompts only gate the more obviously sensitive features, not the quiet signals.