PWA icon generator — maskable icons and a ready manifest

Export everything a progressive web app needs to be installable: 192×192 and 512×512 icons in both standard and maskable variants, plus a manifest.webmanifest that references them with the right purpose values. Maskable renders keep your composition inside the 80% safe zone so any launcher crop looks intentional.

WHY THIS ONE

Maskable done right
Maskable variants scale the composition into the W3C 80% safe zone, so circular and squircle crops on Android never clip your logo.
Manifest included
The export ships a manifest.webmanifest with all four icons declared — any and maskable purposes at both sizes — ready to link from your <head>.
Lighthouse green
192px and 512px icons with a valid manifest are exactly what Lighthouse and Chrome's installability criteria check for.

WHAT GETS EXPORTED

filesize
webapp/icon-192.png192×192px
webapp/icon-512.png512×512px
webapp/maskable-icon-192.png192×192px
webapp/maskable-icon-512.png512×512px
webapp/manifest.webmanifestconfig

Every export also includes a README with install instructions and an icon-config.json you can re-import to keep editing later.

FAQ

What is a maskable icon?
A maskable icon declares (via purpose: 'maskable') that it fills its entire canvas and tolerates being cropped to any shape. Launchers crop up to the 80% safe zone — this generator keeps your design inside it automatically.
What icon sizes does a PWA need?
192×192 and 512×512 are the two sizes Chrome requires for installability; the 512px version is also used for the install splash screen. The export includes both, in standard and maskable variants.
How do I wire the icons into my app?
Copy the webapp/ files into your public folder and add <link rel="manifest" href="/manifest.webmanifest"> to your <head>. The manifest already references all four icon files with correct sizes and purposes.
Why are there separate 'any' and 'maskable' versions?
Declaring one image as both lets platforms over-crop the standard render. Shipping separate files — a normal render for purpose 'any' and a safe-zone render for 'maskable' — is the spec-recommended approach, and it is what this export does.

MORE TOOLS