This is an experimental technology
Check the Browser compatibility table carefully before using this in production.

The PermissionStatus interface of the Permissions API provides the state of an object and an event handler for monitoring changes to said state.


PermissionStatus.state Read only  
Returns the state of a requested permission; one of 'granted', 'denied', or 'prompt'.
PermissionStatus.statusRead only
Returns the state of a requested permission; one of 'granted', 'denied', or 'prompt'. Later versions of the specification replace this with PermissionStatus.state.

Event Handler

An event called whenever PermissionStatus.status changes.


navigator.permissions.query({name:'geolocation'}).then(function(permissionStatus) {
  console.log('geolocation permission status is ', permissionStatus.state);
  permissionStatus.onchange = function() {
    console.log('geolocation permission status has changed to ', this.state);


Specification Status Comment
The definition of 'PermissionStatus' in that specification.
Working Draft Initial definition.

Browser Support

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Basic support 43.0 46 (46) ? ? ?
status Deprecated in 44        
state 44.0 46 (46)      
Feature Android Android Webview Firefox Mobile (Gecko) Firefox OS IE Phone Opera Mobile Safari Mobile Chrome for Android
Basic support No support 43.0 46.0 (46) ? ? ? ? 43.0
status Deprecated in 44             Deprecated in 44
state 44.0   46.0 (46)         44.0

Document Tags and Contributors

 Contributors to this page: chrisdavidmills, panstav, poiru, jpmedley
 Last updated by: chrisdavidmills,