Web App Manifest (manifest.json) Validator

Paste your manifest.json to check whether it meets PWA installability requirements. Verifies required fields such as name, start_url, display, and icons, and flags missing maskable icons in a clear checklist.

Checking whether a manifest.json meets the conditions for a PWA

A Web App Manifest is the JSON file that decides the icon, the name and the appearance at launch when a site is added to a home screen. Paste its contents in and this tool checks the required entries such as `name`, `start_url`, `display` and `icons`, together with the presence of a maskable icon, and lists whatever is missing.

**What deserves care here is that a complete manifest does not by itself make a site installable.** The conditions under which a browser offers to install include **being served over HTTPS and having a service worker registered**, neither of which can be judged from the manifest's contents. What this tool examines is only the part of those conditions the manifest is responsible for. **The other point is the maskable icon: without one, Android shrinks the icon into a white circle.** Supplying a separate image with `purpose` set to `maskable` lets the system draw it right out to the edge of whatever shape the device uses.

How to use it

  1. Paste in the contents of manifest.json Put in the whole JSON exactly as it stands.
  2. Try the samples first A full example and a minimal one are provided.
  3. Read what is missing **Absent required entries and the presence or absence of a maskable icon are both reported.**
  4. Check HTTPS and the service worker separately **These two lie outside the manifest.** Do not judge by this tool's result alone.

Tips for getting more out of it

  • It's best to set both name and short_name. Without short_name, the label under the home screen icon is mechanically truncated from name, which can look awkward.
  • Without an icon marked purpose: "maskable", some Android devices may crop the icon unnaturally or show the background color through it. Adding one maskable entry to your existing icons array usually fixes this.
  • Include at least one icon of 192x192 or larger in icons, and ideally one of 512x512 or larger too. The former is used for the home screen icon, the latter for the splash screen.
  • The PWA installability criteria actually enforced by browsers like Chrome can change over time, so treat this tool's results as guidance rather than a guarantee — it's worth double-checking with Chrome DevTools' Application panel as well.
  • A relative start_url (e.g. "/?source=pwa") works fine. Adding a query parameter lets you distinguish PWA launches from regular browser visits in your analytics.

Where it comes in useful

Starting work on a PWA

At the stage where it is unclear what to write, you can establish which entries are needed.

Isolating why a site will not install

**You can determine first of all whether the fault lies with the manifest.**

Improving how the icon looks

Adding a maskable icon changes how the site appears on an Android home screen.

Inspecting an existing configuration

You can confirm whether a manifest written some time ago still meets today's conditions.

Web App Manifest terms

Name and short_name
The name of the application. **`short_name` appears beneath the home-screen icon, so keep it short enough to fit.**
Start_url
The URL opened when the app is launched from the home screen. It need not be the front page.
Display
How the app appears at launch. Setting `standalone` removes the browser address bar and gives it the look of an application.
Icons
The list of icons. **Providing both 192 by 192 and 512 by 512 is the basic requirement.**
Maskable
**An image prepared on the assumption that it will be cropped to whatever icon shape the device uses.** It is declared through `purpose`.
Theme_color
The colour used for the status bar and the like at launch. Matching it to the site's palette makes the whole feel of a piece.

Frequently Asked Questions

Most browsers' PWA installability criteria require either name or short_name, a start_url, a display value (one of fullscreen, standalone, minimal-ui, or browser), and an icons array containing at least one icon of 192x192 or larger. Missing even one of these can prevent the install prompt from appearing.

It's an icon entry marked with purpose: "maskable". Android devices mask home screen icons into shapes like circles or rounded squares, and a regular icon image masked this way can end up with its edges cropped. A maskable icon is designed with extra margin (a safe zone) in the center so it still looks correct no matter what shape it's masked into.

Use a width and height separated by an x, like "192x192". If a single icon file works at any size, such as an SVG, you can specify "any" instead. You can also list multiple sizes for one entry by separating them with spaces, like "192x192 512x512".

The W3C spec defines four values: fullscreen (uses the entire screen), standalone (hides the browser UI for an app-like look), minimal-ui (shows a minimal browser UI), and browser (opens as a regular browser tab). standalone is the most common choice for a PWA-like appearance.

This tool only performs a static check of whether manifest.json meets the spec. Actual installability also depends on other factors, such as serving the site over HTTPS and registering a Service Worker correctly, so it's best to confirm the final behavior with your browser's developer tools or on a real device as well.
Tool-kun

Side Note — How the Web App Manifest relates to PWAs

The Web App Manifest is a JSON-based specification from the W3C that declares the information needed to add a website to the home screen and install it like a native app: the app name, icons, display mode at launch, theme color, and more. The term PWA (Progressive Web App) itself was coined by Google engineers in 2015, and manifest.json — together with the Service Worker that handles offline behavior — is one of the two core technical pieces behind it.

If manifest.json isn't configured correctly, the browser won't recognize the site as installable, and it won't show an install prompt (such as Chrome's "Install" banner). Issues like insufficient icon resolution or a mistyped display value are easy to miss because the JSON itself is still syntactically valid — they often go unnoticed until someone actually tries to install the app.

Maskable icons (purpose: "maskable") are a relatively recent addition, introduced around 2019 to support Android's "adaptive icons." Regular icons get masked into a circle, rounded square, or other shape depending on the device, so an icon with no built-in margin can end up with part of its logo cropped off. A maskable icon needs to be designed with a safe zone in mind, and is typically provided as a separate entry from the regular icons.

This tool focuses on static validation of manifest.json alone — it doesn't check other factors that affect actual installability, such as whether a Service Worker is registered or whether the site is served over HTTPS. For final confirmation in production, it's a good idea to also use your browser's developer tools (e.g. the Application panel in Chrome DevTools).