PWA Installability Checker

Fetches a page you choose, finds its <link rel="manifest">, fetches and parses that Web App Manifest, and fetches every icon it lists -- then classifies the result against Chrome's installability criteria: a manifest that parses, a name, an installable display mode, a secure origin, and a reachable icon of at least 192x192. These are the same checks Lighthouse's installable-manifest audit runs, with no Chrome or Puppeteer required.

1. Run the CLI against your page

Node.js 18+, no dependencies to install:

node check.mjs https://example.com/ --json

Get check.mjs, probe.mjs, and analyze.mjs from the repo — plain Node, nothing to install. It only ever talks to the URL you pass, the manifest that page links to, and the icons that manifest lists; nothing goes through this site.

2. Paste the JSON output here

Paste the JSON from step 1 and click Check.

Common questions

What does "installable" actually mean?

Chrome (and other browsers that support the Web App Manifest spec) will only offer to install a page as an app -- an icon on the home screen or app list, opening in its own window -- when the page's manifest clears a specific, documented checklist: a manifest exists and parses, it names the app, it declares an installable display mode, the page is served securely, and it lists a large-enough icon that actually loads. This tool runs exactly that checklist.

Why does this need a CLI instead of just checking a URL I type into the page?

This page is hosted on its own domain, and asking it to fetch an arbitrary third-party page and manifest from inside your browser is a cross-origin request -- one that fails unless that other site's server opts in with an Access-Control-Allow-Origin header, which almost none do for their HTML page or manifest.json. Only a non-browser HTTP client, like the CLI here (or curl, or Lighthouse's own Chrome instance), can fetch those directly. Run the CLI, then paste its JSON output here for a rendered report.

Is this the same as running Lighthouse?

It checks the same criteria as Lighthouse's installable-manifest audit -- manifest present, name, display mode, icons, secure origin -- derived from the same published Chrome documentation. It is not a full Lighthouse run: Lighthouse also scores performance, accessibility, SEO, and several other PWA checks (like an offline-capable service worker) that this tool does not attempt. Use this when you want the manifest-installability answer without installing Chrome or Puppeteer.

Does a clean report mean my app installs correctly?

It means the manifest and icons this tool could reach clear Chrome's documented installability criteria. It does not run a service worker, does not test the actual install prompt in a real browser, and cannot see a manifest field browsers might add criteria around in the future. Treat a clean report as evidence about these specific, named checks -- not a guarantee every browser will prompt to install.

Why does a missing "display" field count as a failure?

The Web App Manifest spec's default for a missing "display" is "browser" -- and Chrome's installability criteria explicitly exclude "browser" from the modes it will install. So an absent field is not neutral here; it resolves to the one value that fails the check, the same way this tool (and Lighthouse) reads it.