Permissions Dashboard - Free Online Tool | IconVault
Query the real Permissions API live: camera, mic, geolocation, notifications and more, with granted/denied states and working request buttons.
Permissions Dashboard
Live granted/denied status for browser permissions
0
granted
0
denied
0
prompt
0
unsupported
Live permission states
Camera
camera
Microphone
microphone
Geolocation
geolocation
Notifications
notifications
Clipboard read
clipboard-read
Clipboard write
clipboard-write
Persistent storage
persistent-storage
MIDI
midi
Background sync
background-sync
Accelerometer
accelerometer
Gyroscope
gyroscope
Magnetometer
magnetometer
Ambient light
ambient-light-sensor
Screen wake lock
screen-wake-lock
Some browsers do not expose every permission name, and "Request" triggers the real browser prompt. A "denied" state often means the site was blocked in browser settings, not in this lab.
How it works
// Query a permission state
const res = await navigator.permissions.query({ name: "camera" });
console.log(res.state); // "granted" | "denied" | "prompt"
// Listen for changes
res.onchange = () => console.log("Now:", res.state);Permission gotchas
- prompt means "not decided yet" - the first Request click shows the browser dialog.
- Geolocation and camera prompts only fire from a user gesture, which these buttons provide.
- MIDI in Chrome requires the webmidi permission and shows a checkbox for SysEx access.
- Denied permissions usually must be reset in the browser's site settings; the API cannot override a deny.
About this tool
IconVault's Permissions Dashboard queries your browser's real Permissions API for fourteen permission names, from camera and microphone to MIDI, wake lock, and ambient light sensors. Each row shows the live state (granted, denied, prompt, or unsupported), a summary bar counts the totals, and working Request buttons trigger the genuine browser permission prompts. It is free and runs fully in your browser.
Browser permissions are confusing because every API answers differently: some support navigator.permissions.query(), some need a real request call to reveal their state, and a deny can only be reset in browser settings. This lab shows all of that in one place, explains the common gotchas (like why geolocation needs a user gesture, which the buttons provide), and ships a copyable code snippet for the query and onchange listener pattern you will reuse in every project.
Frequently asked questions
Popular searches
More tools
Algorithm Visualizer
Watch sorting and searching animate step by step
Alt Text Helper
Write better image alt text with live feedback
ARIA Reference
Searchable ARIA roles and attributes guide
Array Visualizer
Step through map, filter, reduce like a debugger
Coming soon
CLI
Coming soon
Figma plugin
Coming soon
VS Code extension
Coming soon
Chrome extension
Coming soon
AI icon generator
Coming soon
Team workspaces
Coming soon