PWA Validator
Enter a URL to check whether the site can be installed as a Progressive Web App. Every problem comes with the code that fixes it.
What the PWA validator checks
The validator loads the page you enter, follows its manifest link, and requests every icon the manifest lists. It then compares what it found with the install criteria Chrome documents and with the extra files iOS and Android expect.
Icons are downloaded and measured, not just read from the manifest. A common fault is an icon path that returns the site's HTML page instead of an image, or a file declared as 512x512 that is really a different size. Both pass a JSON check and still stop the install prompt, and both are reported here.
PWA install requirements
These are the conditions Chrome lists before it shows an install prompt. A failure in any of them is marked as blocking in the report.
| Requirement | What the validator looks for |
|---|---|
| HTTPS | The page is served over a secure connection |
| Web app manifest | A link rel="manifest" tag whose file loads and is valid JSON |
| name or short_name | At least one of the two is set |
| start_url | Present and inside the manifest scope |
| display | standalone, fullscreen, minimal-ui or window-controls-overlay |
| Icons | A 192x192 and a 512x512 icon that load as images |
| prefer_related_applications | Missing or false |
Beyond the minimum
An installable PWA can still look unfinished. The report also covers maskable icons for Android, the Apple touch icon and splash screens for iOS, theme and background colors, the viewport tag, a stable manifest id, and the description and screenshots that unlock the richer install dialog.
Chrome no longer requires a service worker to offer installation, but an app without one shows the browser error page when the device is offline. The validator looks for a registration and reports it as a recommendation, and notes when the registered worker has no fetch handler to serve pages offline. It also flags a viewport tag that fixes the page width or blocks zooming.
No manifest yet? The manifest generator writes one that passes these checks, and the PWA icon generator creates every icon size it refers to.
How the check works
Our server requests the page, its manifest and its icons: the same public files any browser downloads. It does not run the page's JavaScript, so a manifest link or service worker that is added by a script may be reported as not detected. The report says so wherever that applies.
Only public sites can be checked by URL. For a site on localhost, on a private network or behind a login, switch to the Paste manifest tab and validate the manifest.json content directly in your browser.
For an explanation of each failure and its fix, read why a PWA is not installable.
Frequently Asked Questions
Why is my PWA not installable?
The usual causes are a missing or unreachable manifest, no 192x192 or 512x512 icon, an icon URL that returns a 404 or an HTML page, a display value of browser, or a page served over plain HTTP. Enter the URL above and the report names the one that applies.
Do I need a service worker for a PWA to be installable?
Not in current versions of Chrome, which only need a valid manifest served over HTTPS. You still need a service worker for the app to open offline, so the validator recommends one.
Can I validate a site on localhost or behind a login?
Not by URL, because our server cannot reach it. Use the Paste manifest tab instead. It checks the manifest fields and icon declarations in your browser without sending anything to a server.
How is this different from Lighthouse?
Lighthouse removed its PWA category in version 12, so it no longer reports installability. This validator focuses only on that: the manifest, the icons and the platform tags, with a fix for each failed check.
Does the validator store the URL or the results?
The results are not stored. The address is sent to our server so it can fetch the page, and like any web request it may appear in standard server logs.