---
title: "PWA Checker — Free Install Criteria & Manifest Test"
description: "Free PWA readiness checker. Validate manifest, service worker, icons, and install criteria so users can add your site to their home screen."
canonical: "https://lemwatch.com/tools/pwa-readiness-checker"
source: "https://lemwatch.com"
---

# PWA Readiness Checker

> Check if your site qualifies as an installable Progressive Web App. Tests manifest, service worker, icons, and offline support.

Progressive Web Apps closed the gap between websites and native apps without forcing you to ship a binary through an app store. This checker validates whether your site meets the criteria browsers use to show the 'Install' prompt and run your site as a standalone app.

 ## The four non-negotiable install criteria

 Chrome (and every Chromium-based browser) will only show the install banner if all four conditions are met: a valid web app manifest, a registered service worker with a fetch handler, the page served over HTTPS, and icons at both 192×192 and 512×512. Miss any one and the user simply cannot install your site no matter how good the experience is.

 ## The manifest is the spec sheet

 manifest.json tells the OS how to treat your site once installed. `name` and `short_name` (used on the home screen and the splash screen). `start_url` (where the app opens — usually `/?utm_source=pwa` so you can attribute installed-user traffic). `display: standalone` (no browser chrome, looks like a native app). `theme_color` (the status-bar colour). `background_color` (the splash-screen background while the app boots). Get these wrong and your installed app looks broken before it loads its first byte.

 ## Service worker — the engine of offline

 The service worker is a JavaScript file that runs in the background, intercepts every network request, and can serve cached responses when the network is down. The simplest viable worker has a `fetch` event listener that does network-first with a cache fallback. Workbox automates the harder parts — pre-caching the app shell, runtime caching of API responses, background sync of failed mutations. Without a service worker your site is not installable and cannot work offline.

 ## iOS reality check

 Apple's support for PWA features has improved dramatically (push notifications landed in iOS 16.4, badging in 17), but it still trails Chrome and prefers `apple-touch-icon` and a few iOS-specific manifest fields. The checker flags the iOS-specific things so your install works equally well on iPhones as it does on Android.

 ## When a PWA beats a native app

 PWAs win when your audience is mobile-first but app-store-fatigued — utilities, news, content tools, internal apps for distributed teams. They lose to native when you need background location, deep OS integration, or a marketing presence inside the App Store search results. Most SaaS dashboards land squarely in the PWA-win zone.

## What this tool checks

- Web App Manifest presence and required fields
- Service Worker registration and scope
- HTTPS (mandatory for installability)
- Icons in 192px and 512px sizes
- Display mode (standalone, fullscreen)
- Themed `theme_color` and `background_color`

## Why it matters

 A PWA can be added to the home screen, run offline, and re-engage users with push notifications — without an app store, a native dev team, or Apple's 30% cut. Sites that meet the install criteria see 20–40% higher repeat-visit rates from mobile users.

## How to fix what it finds

- Add a manifest.json with name, short_name, start_url, display, icons
- Register a service worker with at least a fetch handler
- Provide 192×192 and 512×512 PNG icons (maskable variants recommended)
- Serve everything over HTTPS — no exceptions
- Set `display: standalone` so installed app opens chrome-less

## Methodology

 We fetch the URL, locate every `<link rel="manifest">` tag, download and parse the manifest JSON, validate every required and recommended field per the W3C Web App Manifest specification, then probe each declared icon URL to confirm it exists and serves a valid image of the declared size. We separately check for service worker registration by parsing scripts in the response body for `navigator.serviceWorker.register(...)` calls and (when public) hitting the worker URL to confirm a 200. HTTPS is verified directly. The result mirrors the criteria Lighthouse uses to award its 'Installable' badge.

## Frequently asked questions

### Do I need a native iOS app if my PWA passes?

 Often, no. iOS 16.4+ supports installable PWAs with push notifications. If your product doesn't need background location, AR, or App Store discovery, a PWA can replace the iOS app and remove the 30% Apple tax.

### Why isn't the install banner appearing?

 Chrome only shows the banner after the user engages with the page (at least one tap and ~30 seconds of session time) and only if every install criterion passes. Use the in-page install button pattern for explicit prompts.

### What's a maskable icon?

 A square icon with safe-zone padding so Android can crop it into any shape (circle, squircle, etc.) without losing the logo. Maskable icons make your installed app look native on every Android launcher.

### Does a PWA work offline automatically?

 No — it works offline only as far as your service worker is configured to cache. A bare service worker satisfies installability but caches nothing; Workbox or a hand-written cache strategy is what actually delivers offline.

### Will Google rank a PWA higher?

 Not directly. But PWAs typically score higher on Core Web Vitals (because they precache assets) and earn more repeat visits — both of which feed into ranking.


## Related

- [All free tools](https://lemwatch.com/tools)
- [Mobile-Friendly Test](https://lemwatch.com/tools/mobile-friendly-checker)
- [core web vitals checker](https://lemwatch.com/tools/core-web-vitals-checker)
- [Lazy Loading Checker](https://lemwatch.com/tools/lazy-loading-checker)
- [Image Optimization Checker](https://lemwatch.com/tools/image-optimization-checker)
- [Lemwatch pricing](https://lemwatch.com/pricing)
- [All monitoring checks](https://lemwatch.com/features)
- [robots.txt Generator](https://lemwatch.com/tools/robots-txt-generator)
