Content Indexing API Demo - Online Show in System Launcher
Add web content to the device’s content index (like Google Discover). See the indexed items and delete them.
UD5 Toolkit
Analyzing your site for beforeinstallprompt eligibility
All requirements must be met for beforeinstallprompt to fire
<link rel="manifest"> in document head
beforeinstallprompt event is fired by the browser when a Progressive Web App (PWA) meets all installation criteria. It signals that the browser is ready to show the native install prompt to the user. Developers can intercept this event using e.preventDefault() and trigger the prompt later, allowing custom install flows. This event is crucial for PWA adoption as it indicates the app is installable.
name (or short_name), icons array containing a 192x192 PNG icon and a 512x512 maskable icon, start_url, and display set to standalone, fullscreen, or minimal-ui. Additionally, a Service Worker must be registered and active. The user must also have sufficient engagement with the site (varies by browser).
window.addEventListener('beforeinstallprompt', (e) => { console.log('Install prompt available!', e); deferredPrompt = e; }); Also check Chrome DevTools under Application → Manifest for manifest validation and Application → Service Workers for SW status. The Lighthouse audit can also identify PWA issues automatically.
localhost and 127.0.0.1 without HTTPS. You still need a valid manifest and service worker. Use npx serve or python -m http.server for quick local testing. Chrome also provides a "Add to Home screen" option in DevTools under Application → Manifest for manual testing. For Safari, you need a Mac with Xcode to test iOS PWA installation.
beforeinstallprompt. Safari on iOS/iPadOS uses a different mechanism (WebKit's apple-mobile-web-app-capable meta tag) and does not fire this event. Firefox does not support PWA installation on desktop. Firefox for Android has limited support. Always implement a fallback install flow for unsupported browsers.
name or short_name (app name), icons (array with at least one 192x192 and one 512x512 icon), start_url (the URL to load when the app launches), and display (should be standalone for a native-like experience). Recommended: theme_color, background_color, description, scope, and categories.
beforeinstallprompt again. This period is typically around 90 days for the mini-infobar and 3 months for the full prompt, though the exact duration is not publicly documented and may change. To reset during development, clear site data in Chrome or use an incognito window. On Android, clearing Chrome's storage for the site can also reset this.
Add web content to the device’s content index (like Google Discover). See the indexed items and delete them.
Simulate a PWA receiving shared text, links, and images. Test the Web Share Target API without a server.
Inject dynamic messages into ARIA live regions and monitor how they trigger screen reader announcements. Debug a11y.
Check if a website is globally reachable or experiencing issues. Status code and latency displayed. Quick browser-side test.
Test the Content Indexing API to add a page to the device's content feed. See how your PWA integrates with the OS.
Generate a Wi‑Fi QR code with full options: WPA3, hidden network, and EAP. Download as SVG. All local.
Enter a URL and see its favicon at all standard sizes. Check if it's properly defined. SEO basic check.
Watch for updates to aria‑live regions and log what a screen reader would announce. Debug live regions.
Paste multiple HTML snippets (header, footer) and a main content, then combine them into a single preview. Static site helper.
Create a QR code that lets people connect to your Wi‑Fi without typing a password. Just scan and join. Secure local.
Preview the Gravatar image associated with any email address. Generate the correct Gravatar URL. Handy for avatar debugging.
Paste a list of numbers to visually check uniformity, mean, and simple pattern analysis. Educational tool for statistics and RNG.
Check current screen orientation and test the lock API. Useful for mobile web apps. Demo with code.
Analyze text for keyword frequency and density. Highlights over-optimized terms. Perfect for content writers and SEO editors. Entirely browser-based.
Test the Fullscreen API: request fullscreen on a colored div, detect changes, and copy the JavaScript boilerplate.
Request permission and detect when the user is idle (away from keyboard). See screen lock state. For native‑like apps.
Enter a URL and get a one‑page report of titles, description, headings, image alts, and broken links. All from browser.
Enter a URL and fetch its Twitter card meta tags. See a live preview of how the tweet will appear. Debug social sharing.
Click on leaf symptoms (yellow, brown tips, spots) to diagnose common houseplant issues and solutions.
Connect a gamepad and see all button presses and axis movements visually. Check that every input is detected correctly.
Scan QR codes using your device camera. Decodes text, URLs, and Wi‑Fi credentials directly in the browser. No data sent to server.
Paste a Content‑Security‑Policy header and get a human‑readable breakdown. See potential risks and suggestions.
Paste an ASCII‑armored PGP message and view its packet structure. See the encrypted/plaintext blocks without decrypting.
Open your camera and scan barcodes or QR codes in real time. Uses ZXing JS. No data sent anywhere.
Scan QR codes using your device camera or by uploading an image. Instant decoding of URLs, texts, and more. No data sent to server, pure browser processing.
Record measurements for each window and generate a cutting list for plywood or track inventory of metal shutters. Print and store.
Detect browser support for font‑tech() and font‑format() values in @font‑face src. Check COLRv1, variable, etc.
Test the Web Share API by sharing text, links, and files directly from the browser. Check compatibility and see example code.
Configure browser feature permissions (camera, microphone, geolocation) and generate the Permissions‑Policy HTTP header.
Track freezer contents with type, date frozen. See what's been in too long. Simple grid view. Data local.