Why is my PWA not installable?

Short answer

Because one of Chrome's installability conditions is unmet, and it never says so unless you look. The list: HTTPS, a linked manifest, a name, icons at 192px and 512px, display set to standalone/fullscreen/minimal-ui, start_url inside scope, and a service worker with a fetch handler. Devtools → Application → Manifest → Installability names the failing one directly. The most common causes we see are a missing 512px icon and a service worker with no fetch handler.

Read the answer from the browser first

Devtools → Application → Manifest, scroll to Installability. Chrome names the unmet condition in plain language. This takes ten seconds and replaces most of the guesswork people do around this question — including reading articles like this one.

Two things make the panel look wrong when it is not. An app you already installed will never prompt again, so test in a fresh profile. And Chrome throttles the prompt for a while after a user dismisses it, so its absence today may be a cooldown, not a defect.

The causes we actually encounter

Icons. Chrome wants a 192×192 and a 512×512. Reading 386 manifests in this directory on 12 August 2026, 36 declared no icon reaching 512px. One large icon alone does not satisfy it either — both sizes are checked.

A service worker without a fetch handler. It registers, it activates, devtools shows it running, and installability still fails, because Chrome specifically requires the handler to exist. This one wastes the most time, since every surface signal says the worker is fine.

display missing or set to browser. The browser reads that as a request for a tab and never offers an app.

A manifest that does not load. 3 of the apps we scanned declare a manifest URL returning nothing at all. Their sites work; they simply cannot be installed by anyone, and there is no symptom in ordinary browsing.

When the conditions are met and nothing happens

Firefox on desktop does not install PWAs, at all. Safari on iOS shows no automatic prompt — Share → Add to Home Screen is the only route, and the user has to know it exists. If most of your traffic is iPhone, no manifest change will produce a prompt, and the useful response is a page that explains the gesture.

There is also a quieter version of success. Without a screenshots array, Android shows the minimal install sheet rather than the richer dialog with a preview. 331 of the 373 manifests we read declare none — so most apps are being offered in their least persuasive form and their authors do not know a better one exists.

Frequently asked

Does passing Lighthouse mean it is installable?

No. Lighthouse retired its PWA category, and even before that it checked a slightly different list from the one Chrome enforces at runtime. Application → Manifest → Installability is the authoritative source.

Do I need a service worker just to be installable?

Yes, and it must have a fetch handler. Chrome requires it even if the handler does nothing useful — which is also why a registered worker proves nothing about whether the app works offline — that failure looks like this. Those are two separate questions.

Apps mentioned

Keep reading

One email a month. Only the apps worth your time.

What they do, what they don't, and whether they actually work offline — we check. No roundup of everything we listed, no affiliate links.

Double opt-in — nothing is sent until you confirm. Unsubscribe any time.
Looking for more apps that work offline?

592+ Progressive Web Apps, each checked by hand — installable from your browser, no app store.

Browse the directory →