Developer · Validator

Web app manifest checker.

Paste a manifest.json or site.webmanifest and check it against the W3C Web Application Manifest spec. Runs in your browser; nothing is sent anywhere.

Advertisement

Input

Relative URLs such as start_url are resolved against this. Default: https://example.com/manifest.webmanifest.

Result

Paste a manifest and press Check.

What this checks

The W3C Web Application Manifest spec describes how a browser processes a manifest, and in most cases an invalid member is silently ignored rather than rejected. This page reports which of your members a conforming parser would ignore or drop, and why.

Members: name, short_name, lang, dir, display, orientation, start_url, scope, id, theme_color, background_color, icons and shortcuts. All are optional in the spec.

Enums: display is one of fullscreen, standalone, minimal-ui or browser. orientation is one of any, natural, landscape, portrait, portrait-primary, portrait-secondary, landscape-primary or landscape-secondary. dir is ltr, rtl or auto. Values are trimmed and matched case-insensitively.

start_url and scope: start_url is resolved against the manifest URL and must be same-origin. If scope is missing it defaults to the start_url with its filename, query and fragment removed. A URL is within scope when it has the same origin and its path begins with the scope path. A scope that does not contain start_url is ignored, and shortcut URLs outside scope are dropped.

id: resolved against the start_url origin, must be same-origin, and its fragment is dropped. Without id, start_url is the app identity.

Icons: each needs a src. sizes is space-separated WxH pairs of positive integers without leading zeros, or any. purpose is a space-separated set of monochrome, maskable and any; an icon with no valid keyword is dropped.

Colours: must be a CSS colour string. In your browser this page asks the browser's own CSS parser, so named colours are checked too.

Browser-specific: Chrome install criteria

This section is not part of the W3C spec. It follows Chrome's documented criteria for showing its install prompt: short_name or name; icons that include a 192px and a 512px icon; start_url; a display of fullscreen, standalone, minimal-ui or window-controls-overlay; and prefer_related_applications absent or false. Chrome also requires HTTPS and user-engagement heuristics, which cannot be checked from a pasted file. Other browsers document their own criteria, and the source notes minor differences.

The icon check counts icons whose sizes declares exactly 192x192 or 512x512. It does not open the image files.

Sources: Web Application Manifest, W3C Working Draft 13 August 2026; Image Resource, W3C (sizes uses the link element syntax); WHATWG HTML, link sizes attribute; web.dev, What does it take to be installable (last updated 2024-09-19). The W3C document is a Working Draft and can change.

Frequently asked questions

Why is window-controls-overlay flagged as a display value?

The W3C draft's display modes list has four values and does not include it. Chrome's install criteria do list it, so it is flagged as a warning with that explanation rather than a plain error.

Do I need 192 and 512 icons?

Not for a valid manifest; the W3C spec makes icons optional. Chrome's documented install criteria ask for both sizes, so they are checked in a separate, clearly labelled section.

Why does a wrong value produce an error if browsers just ignore it?

Because ignoring is the outcome you want to know about: the member you wrote has no effect, and the browser falls back to a default.

Are members like description or categories wrong?

No. They are not in the W3C draft's list of root members, so they are listed as information only. Browsers ignore members they do not know and some define their own.

Format check only

This tool checks a manifest's structure against the spec. It does not fetch your icons, confirm the files exist, or guarantee that any browser will offer installation. Nothing you paste is stored or sent anywhere.

Advertisement
Advertisement
Listening…