
PWA Icon Requirements & Safe Areas: Complete 2026 Guide
Complete reference for PWA icon sizes (192×192, 512×512), the 80% safe zone rule, maskable icons, and manifest.json setup. With Lighthouse fixes & code.
Quick Answer
A PWA needs at minimum two icons in manifest.json: a 192×192 and a 512×512 PNG. For Android adaptive icons, also include maskable variants of both sizes, with all critical content kept inside the central 80% safe zone (10% padding on every side). Use separate icon files for purpose: "any" and purpose: "maskable" — never combine them as "any maskable".
PWA Icon Size Reference
| Size | Required? | Purpose | Used by |
|---|---|---|---|
| 192×192 | ✅ Yes | any | Chrome install prompt, Android home screen |
| 512×512 | ✅ Yes | any | Splash screens, Play Store preview, high-DPI |
| 192×192 maskable | 🟡 Strongly recommended | maskable | Android adaptive home screen icons |
| 512×512 maskable | 🟡 Strongly recommended | maskable | Android splash on higher-DPI devices |
| 144×144, 168×168, 384×384 | Optional | any | Pixel-perfect rendering on specific screen densities |
| 1024×1024 | Optional | any | Future high-DPI displays, marketing assets |
Practical minimum: a 192×192 standard + 512×512 standard + 512×512 maskable. Chrome auto-scales between sizes when needed.
The Two Icon Purposes
PWA icons use the purpose field in manifest.json to tell the browser how the icon should be rendered.
purpose: "any" — Standard Icons
- Rendered as-provided, with transparency preserved.
- Used by iOS (when added to Home Screen), Windows tiles, macOS Sonoma and earlier, and as a fallback when no maskable icon exists.
- Design with your full logo edge-to-edge — no extra padding required.
purpose: "maskable" — Adaptive Icons
- The OS crops the icon into a platform-specific shape (circle, squircle, rounded square, teardrop).
- Required for Android adaptive icons on modern launchers.
- Must have an opaque background and respect the 80% safe zone.
⚠️ Avoid purpose: "any maskable"
Combining purposes in a single icon entry is explicitly discouraged by web.dev and Chrome will warn you in DevTools. The reason: a maskable icon has 10% padding on every side. When the OS uses that same image as a standard any icon, the padding is preserved — making your logo appear 20% smaller than other icons on the screen.
Always provide two separate entries in your manifest.
The 80% Safe Zone Rule
The maskable icon specification defines a minimum safe zone as a circular area in the center of the icon with a radius equal to 40% of the icon width. This is equivalent to keeping all critical content within the central 80% of the image.
Full icon size: 512 × 512 px
Safe zone: 410 × 410 px (central 80%)
Padding per side: 51 px (10%)
Safe zone shape: Circle, radius 205 px from centerWhat goes where:
- Inside the safe zone: your logo mark, text, primary visual elements.
- Outside the safe zone (the 10% outer ring): background color/pattern only. Assume it will be cropped.
The 80% zone exists because the most aggressive mask — a circle — clips approximately 10% from each edge. Any of these mask shapes may be applied:
- Circle (most restrictive — Pixel, Gnome desktop shortcuts)
- Squircle (Samsung One UI)
- Rounded square (Stock Android, iOS-style)
- Teardrop (some Android launchers)
If your logo extends to the edges, a circular mask will eat into it. The 80% safe zone guarantees survival across every shape.
Complete manifest.json Setup
The recommended manifest uses four separate icon entries — two for standard rendering, two for adaptive icons:
{
"name": "Your PWA Name",
"short_name": "YourPWA",
"start_url": "/",
"display": "standalone",
"background_color": "#ffffff",
"theme_color": "#000000",
"icons": [
{
"src": "/icons/icon-192.png",
"sizes": "192x192",
"type": "image/png",
"purpose": "any"
},
{
"src": "/icons/icon-512.png",
"sizes": "512x512",
"type": "image/png",
"purpose": "any"
},
{
"src": "/icons/icon-maskable-192.png",
"sizes": "192x192",
"type": "image/png",
"purpose": "maskable"
},
{
"src": "/icons/icon-maskable-512.png",
"sizes": "512x512",
"type": "image/png",
"purpose": "maskable"
}
]
}Don't forget to reference the manifest in your HTML <head>:
<link rel="manifest" href="/manifest.json" />
<meta name="theme-color" content="#000000" />Creating Maskable Icons from Your Logo
The most common mistake when generating maskable icons is reusing the standard logo with no padding — resulting in cropped content on Android. Follow these steps:
- Start with a 512×512 source image. Higher resolution gives you more flexibility for scaling down.
- Add an opaque background. Use a solid color matching your brand. Transparent backgrounds on maskable icons cause OS-default grey or white to bleed through when masked.
- Resize your logo to fit within the central 80%. For a 512×512 icon, scale your logo to fit a 410×410 area centered in the canvas.
- Extend background to all edges. The outer 10% ring should contain only the background color — your logo must not touch the edges.
- Export both standard and maskable variants. Standard at full bleed (no padding); maskable with the 80% safe zone enforced.
- Generate the 192×192 variants by scaling the 512×512 versions down (avoid editing two source files separately).
Faster path: our PWA Icon Generator handles all of this automatically — upload your logo once and get both standard and maskable variants at all required sizes, with live safe-zone preview.
Testing Your PWA Icons
Chrome DevTools (the official method)
The most reliable way to verify your maskable icons:
- Open your PWA in Chrome (desktop or Android via remote debugging).
- Open DevTools → Application panel.
- Find the Icons section in the sidebar.
- Toggle "Show only the minimum safe area for maskable icons".
If your logo and critical content remain visible after the trim, your icon is safe across all mask shapes.
Real-device testing
DevTools and online previews don't catch every edge case. Before launch:
- Install your PWA on at least one Pixel device (stock Android) and one Samsung device (One UI).
- Check the icon in the app drawer, home screen, task switcher, and notification shade.
- Verify the splash screen appears with the correct icon at install time.
- Test on both light and dark system themes.
Common Errors & Fixes
"Manifest doesn't have a maskable icon" (Lighthouse warning)
Cause: your manifest.json has no icon entry with purpose: "maskable".
Fix: add a separate maskable icon entry (see the manifest example above). Lighthouse only checks that the declaration exists — it does not validate that your image actually respects the safe zone. After adding the entry, manually verify with Chrome DevTools.
PWA icon not showing in Chrome after install on Android
Most common causes, in order of frequency:
- Wrong browser: installing via Firefox, Edge, or Samsung Internet often creates a shortcut instead of a true PWA install. Use Chrome on Android.
- Missing manifest link: ensure your HTML
<head>includes<link rel="manifest" href="/manifest.json">. - Icon 404: open Chrome DevTools → Application → Manifest and check that every icon URL resolves. Relative paths break if the manifest is served from a different directory.
- Stale install: uninstall the PWA from Settings → Apps and reinstall via Chrome.
White background appearing around your icon on Android
Cause: you used a transparent PNG as a maskable icon. The Android OS fills transparent pixels with a default color (usually grey or white) before applying the mask.
Fix: regenerate the maskable variant with an opaque background matching your brand color. Standard any icons can stay transparent.
Icon looks too small on the home screen compared to other apps
Cause: you're using a maskable icon for the standard any purpose (often via "any maskable"). The 10% padding designed for masking is being preserved when rendered un-masked.
Fix: provide separate icon files — one full-bleed for purpose: "any", one with safe-zone padding for purpose: "maskable".
Platform-Specific Notes
Android (WebAPK)
When a PWA is installed on Android via Chrome, the system generates a WebAPK — a real Android package — using your manifest icons. Maskable icons are used for the adaptive home screen icon; standard icons are used for the install banner.
iOS
iOS does not read the manifest icons array. Instead, it uses apple-touch-icon. Include this in your HTML:
<link rel="apple-touch-icon" href="/icons/apple-touch-icon-180.png" />The recommended size is 180×180 PNG with no transparency — iOS will composite a white background under transparent areas. For full coverage, also provide splash-screen images via apple-touch-startup-image.
Windows & macOS
- Windows PWA: uses the
anyicon for taskbar and tile rendering. Maskable icons are ignored. - macOS Sonoma+: uses
maskableicons for the Dock when available, falling back toany.
Best Practices Summary
- Provide separate icon files for
purpose: "any"andpurpose: "maskable". - Design maskable icons with 10% padding on every side and an opaque background.
- Keep file sizes under 100KB per icon (PNG optimization).
- Always provide at least 192×192 and 512×512.
- Include
apple-touch-icon(180×180) for iOS compatibility. - Test with Chrome DevTools' safe-area toggle before shipping.
FAQ
What size should a PWA icon be?
A PWA needs at minimum a 192×192 and a 512×512 PNG icon declared in manifest.json. The 192×192 is required by Chrome's install prompt; the 512×512 is used for splash screens and high-DPI displays. For Android adaptive icons, also include maskable variants of both sizes.
Do I need both 192×192 and 512×512 PWA icons?
Yes. Chrome's installability audit requires both. The 192×192 is used in the install prompt and home screen at standard density, while the 512×512 powers splash screens, app store previews, and high-DPI rendering.
Should I use "purpose": "any maskable" in my manifest?
No. Chrome warns against this and web.dev explicitly discourages it. Combining purposes forces a maskable icon (which has padding) to be used as a standard icon, making it look too small.
How do I fix the "Manifest doesn't have a maskable icon" Lighthouse warning?
Add at least one icon entry to your manifest.json with purpose set to "maskable". The icon must be a separate file designed with the 80% safe zone — do not use "any maskable" as a shortcut.
Can I use SVG for PWA icons?
Not reliably. SVG support across PWA contexts is inconsistent — Chrome supports SVG manifest icons, but iOS Safari and some Android launchers do not. Stick with PNG at 192×192 and 512×512 minimum.
Why is my PWA icon not showing in Chrome on Android?
Most often: you installed via the wrong browser (use Chrome, not Firefox/Edge), or the manifest link is missing from your HTML head, or an icon URL is returning 404. Open DevTools → Application → Manifest to verify.
Related Tools
- PWA Icon Generator — upload your logo and download a complete PWA icon set (192, 512, maskable variants) with live safe-zone preview.
- App Icon Generator — generate full iOS and Android adaptive icon sets from a single source.
- Favicon Generator — create
favicon.icoand all browser favicon variants from your PWA icon.
Author
Categories
purpose: "any" — Standard Iconspurpose: "maskable" — Adaptive Icons⚠️ Avoid purpose: "any maskable"The 80% Safe Zone RuleComplete manifest.json SetupCreating Maskable Icons from Your LogoTesting Your PWA IconsChrome DevTools (the official method)Real-device testingCommon Errors & Fixes"Manifest doesn't have a maskable icon" (Lighthouse warning)PWA icon not showing in Chrome after install on AndroidWhite background appearing around your icon on AndroidIcon looks too small on the home screen compared to other appsPlatform-Specific NotesAndroid (WebAPK)iOSWindows & macOSBest Practices SummaryFAQWhat size should a PWA icon be?Do I need both 192×192 and 512×512 PWA icons?Should I use "purpose": "any maskable" in my manifest?How do I fix the "Manifest doesn't have a maskable icon" Lighthouse warning?Can I use SVG for PWA icons?Why is my PWA icon not showing in Chrome on Android?Related ToolsMore Posts

Introducing Logo Foundry - Transform One Logo into Every Platform Asset
Announcing the launch of Logo Foundry, the developer's solution to multi-platform logo deployment challenges

Social Media Image Requirements 2025 Guide
Master the art of creating perfect social media images for all platforms with up-to-date specifications

Favicon Optimization for Different Browsers in 2025
The complete guide to creating favicons that work flawlessly across all browsers and devices
Newsletter
Join the community
Subscribe to our newsletter for the latest news and updates