Contact Picker API Demo - Online Select & Read Contacts
Pick a contact from the device’s address book (mobile). Read name, email, and phone. All permission‑based. Privacy safe.
UD5 Toolkit
Online check all browser permission states using the navigator.permissions.query() API
The Permissions API lets you query the status of browser permissions without triggering a permission prompt. Statuses: Granted — user has allowed; Prompt — not yet decided; Denied — user has blocked; Unsupported — browser doesn't support querying this permission.
navigator.permissions.query(). It returns whether a permission is granted, denied, or prompt (meaning the user hasn't decided yet). This enables websites to adapt their UI based on permission states without triggering intrusive permission popups.clipboard-read is supported in Chrome and Safari but not Firefox, while camera and microphone are widely supported across all modern browsers.clipboard-read, the browser may require a user gesture (click or keypress) before even returning a meaningful status.navigator.permissions object itself is only available in secure contexts. On localhost, browsers treat the connection as secure for development purposes. If you're on HTTP, many permissions will be unavailable or throw errors.navigator.geolocation.getCurrentPosition() for location, Notification.requestPermission() for notifications, or navigator.mediaDevices.getUserMedia() for camera/microphone. After the user responds, the permission state updates accordingly.local-fonts is only in Chrome 103+), the permission name differs across browsers, or the browser throws a TypeError when attempting to query it. It does not mean the underlying API is unavailable — just that you can't query its permission state through this API.onchange event listener on the permission status object. You can use status.addEventListener('change', callback) to detect when a user grants or revokes a permission, allowing your app to react dynamically without polling. This is especially useful for features like live camera/mic indicators.clipboard-read permission is considered powerful because it could expose sensitive data from the user's clipboard. To protect privacy, browsers like Chrome require a transient user activation (a recent click, tap, or keypress) before the permission query returns a meaningful result. Without it, the query may reject or return prompt. Clicking the "Check All" button in this tool provides that activation.<iframe> attribute that controls whether a feature is allowed to be used at all in a given context. For example, a site owner can use Permissions-Policy: camera=() to completely disable camera access for all embedded content, regardless of user permissions. They work at different layers but complement each other for comprehensive permission management.navigator.permissions.query({name:'...'}) — returns a Promise resolving to a PermissionStatus object..state → granted | denied | prompt; .onchange → event listener for state changes.query() in try-catch — unsupported permission names throw TypeError.window.isSecureContext must be true for the API to be available.permissionStatus.addEventListener('change', ...) for real-time monitoring.Pick a contact from the device’s address book (mobile). Read name, email, and phone. All permission‑based. Privacy safe.
Fill in a form and see the FormData object as JSON. Perfect for debugging multipart form submissions. Client-side.
Paste Markdown and get warnings for common mistakes: inconsistent heading spacing, bare URLs, and broken links. All local.
Paste HTML or URL to extract canonical link tag. Verify self-referencing. Simple SEO audit step. Local only.
Check a live URL to extract and validate its canonical link element. Ensure correct SEO configuration. Runs from your browser.
Enter a city name or coordinates and see today's sunrise, sunset, and twilight times. Approximate algorithm. Local.
Test how `content‑type: text/html` vs `content‑type: image/svg+xml` affects SVG rendering in the browser. Modern performance hint.
Convert messy URLs into clean, keyword-rich slugs. Remove stop words, replace spaces with hyphens. Lowercase transformation. All local.
Shows a counter of how many seconds you have been idle. Tracks mouse and keyboard activity without recording.
Paste Markdown and convert all links from absolute to relative (or vice‑versa) based on a base domain. Bulk edit.
Take a lighthearted inventory of your character strengths (not official VIA). Self-reflection tool. All in browser.
Paste text with highlights (e.g., from Apple Books) and extract only the highlighted lines. Save as list.
A visual guide to common copy‑editing and proofreading symbols. Click a mark to see its meaning. For writers.
See the healthy weight range for your height using standard BMI chart. Gender‑specific data. Quick reference.
Turn any sentence into mocking SpongeBob‑style text. Choose intensity. Copy and paste into chats. Pure client.
Convert Markdown to styled HTML that retains formatting when pasted into Google Docs or Word. Headings, bold, lists. Client‑side.
Compress and decompress text using the browser's native Compression Streams API. See the binary output size.
Calculate large Fibonacci numbers in a Web Worker. See the UI remain responsive. Copy the pattern for your app.
See how grid-auto-flow: row vs column changes item placement. Add and remove items to understand the algorithm. Visual.
Unified input demo: see pressure, tilt, and type from any pointer. Compare pointerType values. Essential for drawing apps.
Decode an image progressively using the ImageDecoder API. See partial results and metadata. Modern alternative to <img>.
Decode individual video frames from a local file using the VideoDecoder API. Step through frames. Cutting‑edge browser feature.
Toggle scrollbar‑gutter: stable to reserve space for the scrollbar and avoid content jumps. Visual demo with two columns.
Register a one‑off background sync and see it fire when connectivity returns. Debug service worker sync logic.
Request permission and detect when the user is idle (away from keyboard). See screen lock state. For native‑like apps.
Acquire and release locks across tabs. Prevent race conditions in IndexedDB or localStorage. Visual queue and lock state.
Read, write, and delete cookies using the modern Cookie Store API. Monitor change events. No more document.cookie parsing.
Connect a gamepad and see all button presses and axis movements visually. Check that every input is detected correctly.
Trigger different vibration patterns on mobile devices. Test if your phone supports haptic feedback. Simple demo.
Check notification permission, request it, and send a test notification. Verify icon, body, and tag. Debug web push.