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.
Decode the header and payload of a JSON Web Token (JWT) without verifying the signature. Inspect claims securely on the client side. Great for developers.
Paste JSON and instantly see if any object has duplicate keys. Quick syntax spotter.
Answer questions about your page (image size, caching, fonts) and get a tailored list of optimization tips. Manual audit helper.
Enter a city to get current UV index forecast using open data (with local caching). Understand sun protection needs. No personal location used.
Force more or less contrast and see how your page adapts. Test your CSS media queries for accessibility.
Touch the screen and see the exact coordinates, radius, and force of each touch point. Indispensable for mobile web devs.
Simple interface for kids to log reading minutes and pages. Add book titles. Print weekly report. Local.
Select logical operators (AND, OR, XOR, NAND) and generate a complete truth table. Handy for digital logic.
Take a lighthearted inventory of your character strengths (not official VIA). Self-reflection tool. All in browser.
See the healthy weight range for your height using standard BMI chart. Gender‑specific data. Quick reference.
Choose from a list of 50 values and narrow down to your top 5. Understand what drives you. Private.
Paste text and align it left, center, right, or fully justify by inserting spaces. Simple formatting helper. Pure browser.
Simulate zenithal priming and contrast/speed paints over a 3D bust. Understand light and shadow placement before you paint. Great for tabletop miniatures.
Convert integers into short, unique, YouTube‑style IDs (hashids) and decode them back. Customize salt and minimum length.
Convert Markdown to styled HTML that retains formatting when pasted into Google Docs or Word. Headings, bold, lists. Client‑side.
Click for a warm, quirky compliment to brighten someone's day. Great for social media and morale boosting.
Generate a random book title with a subtitle. Good for writing prompts or just for laughs.
Paste text with highlights (e.g., from Apple Books) and extract only the highlighted lines. Save as list.
Compress and decompress text using the browser's native Compression Streams API. See the binary output size.
Toggle image‑rendering: auto, pixelated, crisp‑edges on a scaled image. Essential for pixel art display.
See how grid-auto-flow: row vs column changes item placement. Add and remove items to understand the algorithm. Visual.
Demonstrate how to add custom headers and POST‑like functionality to EventSource using a polyfill. Code and example.
See the difference between clone and slice on inline boxes that break across lines. Useful for multi‑line headings.
Connect a game controller and see every button press, axis movement, and vibration test. Uses the Gamepad API.
Unified input demo: see pressure, tilt, and type from any pointer. Compare pointerType values. Essential for drawing apps.
See how align‑items: baseline works in grid to align different font sizes on the same baseline. Visual guide.
Toggle scrollbar‑gutter: stable to reserve space for the scrollbar and avoid content jumps. Visual demo with two columns.
Experiment with the Federated Credential Management API. Simulate a sign‑in flow without third‑party cookies. Privacy‑first.
Register a one‑off background sync and see it fire when connectivity returns. Debug service worker sync logic.