
Developer's Guide to Implementing Logo Assets
Complete technical guide for developers to integrate Logo Foundry assets into their projects efficiently

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.
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".
| 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.
PWA icons use the purpose field in manifest.json to tell the browser how the icon should be rendered.
purpose: "any" — Standard Iconspurpose: "maskable" — Adaptive Iconspurpose: "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 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:
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:
If your logo extends to the edges, a circular mask will eat into it. The 80% safe zone guarantees survival across every shape.
manifest.json SetupThe 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" />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:
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.
The most reliable way to verify your maskable icons:
If your logo and critical content remain visible after the trim, your icon is safe across all mask shapes.
DevTools and online previews don't catch every edge case. Before launch:
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.
Most common causes, in order of frequency:
<head> includes <link rel="manifest" href="/manifest.json">.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.
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".
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 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.
any icon for taskbar and tile rendering. Maskable icons are ignored.maskable icons for the Dock when available, falling back to any.purpose: "any" and purpose: "maskable".apple-touch-icon (180×180) for iOS compatibility.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.
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.
"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.
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.
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.
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.
favicon.ico and all browser favicon variants from your PWA icon.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 Tools
Complete technical guide for developers to integrate Logo Foundry assets into their projects efficiently

The complete guide to creating favicons that work flawlessly across all browsers and devices

Master the art of creating perfect logo assets for all platforms with our comprehensive guide
Join the community
Subscribe to our newsletter for the latest news and updates