Cache Storage Viewer - Online Inspect PWA Cache
Explore the contents of the Cache Storage API for your domain. See cached requests and their sizes. Debug offline apps.
UD5 Toolkit
install event fires — ideal for caching assets), Installed / Waiting (SW is installed but waiting for existing SW to release control), Activating (the activate event fires — ideal for cleaning old caches), Activated (SW controls the page and can intercept fetch requests), and Redundant (SW is being replaced or has failed). Understanding this flow is critical for proper SW debugging.
install event, the Service Worker typically pre-caches critical assets (HTML, CSS, JS, images) using the Cache API. This is the best time to cache resources needed for offline functionality. The install phase should be as fast as possible — if it fails, the SW won't proceed to the activation stage. Use event.waitUntil() to extend the install phase until caching is complete.
activate event is the perfect place to clean up old caches from previous SW versions, migrate indexedDB schemas, and claim uncontrolled clients. Use event.waitUntil() to keep the SW in the activating state until cleanup is complete. This ensures that outdated cached resources don't interfere with the new SW version.
self.skipWaiting() inside the SW script.
self.skipWaiting() forces the Service Worker to skip the Waiting phase and immediately proceed to Activating as soon as installation completes — even if there are active tabs using an older SW. It's commonly used with clients.claim() to ensure the new SW takes control immediately. Use with caution: it can cause version conflicts if not handled carefully.
clients.claim() tells the newly activated Service Worker to immediately take control of all already-open pages within its scope. Without it, the new SW only controls pages that are loaded after activation. Combine with self.skipWaiting() for seamless updates where the new SW instantly controls all clients.
registration.update(). If a new SW is found, it goes through install → waiting → activate (when old SW releases control). The update check happens at most once every 24 hours by default.
Application → Service Workers to see all registered SWs, their states, and logs. Check the Console for SW errors. Use chrome://serviceworker-internals/ for detailed inspection. Firefox: Use about:debugging#/runtime/this-firefox. Always enable "Update on reload" during development, and use navigator.serviceWorker.getRegistrations() in the console to inspect SWs programmatically.
/app/sw.js can only control pages under /app/. To control the entire origin, serve the SW from the root (/sw.js). The scope can be restricted further using the scope option in navigator.serviceWorker.register(), but it cannot be broader than the SW's location.
registration.unregister() is called, (4) the SW script returns a 404 or network error on update check, or (5) the SW throws an unhandled exception. Once redundant, the SW is permanently dead and a new registration is needed.
Explore the contents of the Cache Storage API for your domain. See cached requests and their sizes. Debug offline apps.
A tiny tool that hooks into the console and lets you export all messages to a file. Helpful for non‑technical bug reporting.
Fetch a page and list all loaded assets (CSS, JS, images) with their sizes. See total page weight. Quick performance check.
Check how many pages a PDF has without uploading it (uses FileReader). Also shows file size and title if available. Simple and fast client-side tool.
Log leftovers with date stored and set visual alerts when they need to be eaten. Reduce food waste. Local storage.
Connect to a WebTransport server and exchange data over QUIC. See latency and throughput. Perfect for exploring low‑latency real‑time APIs.
Rate symptoms severity daily and add notes. Visual pain map. Export for doctor visit. Private local storage.
Plan a party or event budget by category (venue, food, decorations). See total and cost per guest. Export summary.
Count total DOM nodes on the current page and show warnings if limits exceed best practices. Keep the DOM lean.
Establish a peer‑to‑peer text chat between two browser tabs or devices using WebRTC data channels. All signaling via copy‑paste. No server.
A completely black page to save battery on OLED devices. Click to go fullscreen. Simple utility.
Compare different insulated containers by their ice retention time based on ambient temperature. Help choose the right bottle for a hot hike.
Enter a full URL and get all query parameters in a clean table with decoded values. Quickly see UTM and tracking params.
Simulate memory page reference strings with FIFO, LRU, and Optimal algorithms. See page fault count. OS concept demo.
Enter air and snow temperature plus humidity to get the right glide wax color (Swix/Toko). Perfect kick and glide.
Create circular and elliptical clip paths visually. Adjust radius and position. Copy the CSS. For avatars and masks.
Load any variable font from Google Fonts or local file and play with weight, width, slant, and custom axes. Download CSS.
Choose where page breaks should occur for printing. Get the break‑before, break‑after, and break‑inside CSS.
Estimate how long it takes to download/upload a file given bandwidth speed. Also convert between bits and bytes.
Log individual leaf cuttings, track callousing and root development days. Identify which leaves are most viable.
Create a custom cookie consent banner with text, button styles, and colors. Copy the ready‑to‑use HTML/CSS/JS snippet.
Get endless 'Never Have I Ever' statements for your group. Clean and spicy modes. No installation, just pick up and play.
Create a shadow that appears when a container is scrollable. Pure CSS using background attachments. Copy the style easily.
Click for a curated motivational quote from famous figures. Share on social media with a single tap. Uplifting.
Paste a list of foreground/background color pairs and instantly see which pass AA/AAA. Perfect for checking entire style guides.
Generate a random developer‑themed motivational (or demotivational) poster image using pure CSS. Fresh inspiration for your coffee break.
Enter the characters you need and generate a smaller font file from a TTF/OTF. Keep only the glyphs you use. Using harfbuzz WASM.
Calculate the probability of exactly k successes in n independent Bernoulli trials. Step-by-step result. Local.
Build a conic gradient with any number of color stops. Visual editor. Ideal for creating pie charts or colorful spinners.
Create CSS clamp() values for fluid typography. Enter min and max font sizes and viewport widths. Modern responsive design.