# Favicon Format Guide Complete specification for all favicon formats required for modern web applications. --- ## Overview: Required Files A complete favicon implementation needs **6 files**: 1. `favicon.svg` - Modern browsers (vector, scalable) 2. `favicon.ico` - Legacy browsers (raster, multi-size) 3. `apple-touch-icon.png` - iOS home screen (180x180, solid background) 4. `icon-192.png` - Android home screen (192x192, transparent) 5. `icon-512.png` - PWA/high-res displays (512x512, transparent) 6. `site.webmanifest` - Web app metadata (JSON) --- ## Format 1: favicon.svg ### Purpose - Modern browsers (Chrome 80+, Firefox 41+, Safari 9+) - Scalable vector format (crisp at any size) - Preferred format (browsers try this first) ### Specifications - **File name**: `favicon.svg` (exact, case-sensitive) - **ViewBox**: `0 0 32 32` (recommended standard) - **Namespace**: `xmlns="http://www.w3.org/2000/svg"` (required) - **Transparency**: Allowed (renders against browser UI) - **Colors**: RGB or hex colors (#RRGGBB format) - **File size**: Keep < 5KB (simpler is better) ### Template ```xml ``` ### Best Practices - Keep design simple (3-5 shapes max) - Use geometric primitives when possible (``, ``, ``) - Avoid gradients (may not render well at small sizes) - Test at 16x16 zoom level - Ensure high contrast (4.5:1 minimum) ### Browser Support - ✅ Chrome 80+ (2020) - ✅ Firefox 41+ (2015) - ✅ Safari 9+ (2015) - ✅ Edge 79+ (2020) - ❌ IE 11 (needs ICO fallback) --- ## Format 2: favicon.ico ### Purpose - Legacy browser support (IE 11, old mobile browsers) - Fallback when SVG not supported - Tab icons in Windows taskbar ### Specifications - **File name**: `favicon.ico` (exact, case-sensitive) - **Sizes**: MUST include both 16x16 and 32x32 - **Format**: Microsoft ICO container format - **Color depth**: 32-bit (24-bit color + 8-bit alpha) - **Transparency**: Supported (alpha channel) - **File size**: Typically 1-15KB (depends on complexity) ### Multi-Size Requirement **Critical**: ICO must contain BOTH sizes in one file: - 16x16 - Browser tab display - 32x32 - Retina displays, taskbar **Why both?** Browser selects appropriate size based on context. Single-size ICO appears blurry in some contexts. ### Generation Methods **Method 1: ImageMagick** (command line) ```bash convert favicon.svg -define icon:auto-resize=16,32 favicon.ico ``` **Method 2: Online Converters** - https://favicon.io (simple, free) - https://realfavicongenerator.net (comprehensive) - https://cloudconvert.com/svg-to-ico (batch processing) **Method 3: Figma/Illustrator** - Export 16x16 PNG - Export 32x32 PNG - Combine using online ICO creator ### Validation Check ICO contains both sizes: ```bash identify favicon.ico # Expected output: # favicon.ico[0] ICO 16x16 16x16+0+0 32-bit sRGB # favicon.ico[1] ICO 32x32 32x32+0+0 32-bit sRGB ``` ### Best Practices - Generate from SVG (consistent with other formats) - Test in IE 11 if legacy support needed - Verify both 16x16 and 32x32 present - Keep file size under 15KB --- ## Format 3: apple-touch-icon.png ### Purpose - iOS home screen icon - iPadOS home screen icon - macOS Safari pinned tabs - iOS Shortcuts app ### Specifications - **File name**: `apple-touch-icon.png` (exact, case-sensitive) - **Size**: 180x180 pixels (standard since iPhone 6) - **Format**: PNG (24-bit color, lossless) - **Transparency**: ❌ **NOT ALLOWED** (use solid background) - **Corners**: System applies rounded corners (don't pre-round) - **File size**: 10-50KB typical ### Critical: Solid Background Required **Why?** iOS renders transparent PNGs with black fill, resulting in black square icon. **Wrong** (appears as black square): ```bash convert favicon.svg -resize 180x180 apple-touch-icon.png # ❌ Transparent ``` **Correct** (solid background): ```bash convert favicon.svg -resize 180x180 -background "#0066cc" -alpha remove apple-touch-icon.png # ✅ ``` ### Design Guidelines - **Background**: Use primary brand color (solid, opaque) - **Icon size**: Scale icon to ~120x120, center on 180x180 canvas - **Padding**: 30px on all sides (avoid edge cropping) - **Corners**: Don't pre-round (iOS applies 18% corner radius automatically) - **Text**: Use bold weight (regular weight too thin) ### Size History - 57x57 - iPhone (2007) - 72x72 - iPad (2010) - 114x114 - iPhone 4 Retina (2010) - 144x144 - iPad 3 Retina (2012) - **180x180** - iPhone 6+ (2014) ← Current standard **Note**: Only 180x180 needed now. iOS scales for older devices. ### Validation - Open PNG in image viewer - Check dimensions: 180x180 - Verify background is opaque (no transparency) - Check icon centered with adequate padding - Test on iOS device (Add to Home Screen) --- ## Format 4: icon-192.png ### Purpose - Android home screen icon - Chrome "Add to Home Screen" on Android - Referenced in web app manifest ### Specifications - **File name**: `icon-192.png` (common convention) - **Size**: 192x192 pixels (Android standard) - **Format**: PNG (24-bit color + alpha) - **Transparency**: ✅ Allowed and recommended - **File size**: 5-20KB typical ### Design Guidelines - **Background**: Transparent OR brand color (transparent preferred for Android) - **Icon size**: Full 192x192 canvas (Android doesn't apply padding) - **Shape**: Can be any shape (circle, square, custom) - **Corners**: Android applies "adaptive icon" mask on Android 8+ ### Generation ```bash # With transparency (recommended for Android) convert favicon.svg -resize 192x192 icon-192.png # With solid background (if brand guidelines require) convert favicon.svg -resize 192x192 -background "#0066cc" -alpha remove icon-192.png ``` ### Adaptive Icons (Android 8+) Modern Android uses "adaptive icons" with separate foreground and background layers. For simplicity, we generate a single 192x192 PNG that works everywhere. **Advanced**: For better Android 8+ support, provide separate foreground/background in manifest (out of scope for quick favicons). --- ## Format 5: icon-512.png ### Purpose - Progressive Web App (PWA) splash screens - High-resolution displays (4K, Retina) - Android TV, Chrome OS - "Install App" dialog ### Specifications - **File name**: `icon-512.png` (common convention) - **Size**: 512x512 pixels (PWA standard) - **Format**: PNG (24-bit color + alpha) - **Transparency**: ✅ Allowed and recommended - **File size**: 20-80KB typical ### Design Guidelines - Same as icon-192.png, just higher resolution - Export from vector source (SVG) for crisp quality - Test appearance on high-DPI displays ### Generation ```bash convert favicon.svg -resize 512x512 icon-512.png ``` --- ## Format 6: site.webmanifest ### Purpose - Progressive Web App metadata - Links to icon files - Defines app name, colors, display mode - Required for "Add to Home Screen" on Android ### Specifications - **File name**: `site.webmanifest` or `manifest.json` (either works) - **Format**: JSON - **Location**: Site root (e.g., `/public/site.webmanifest`) - **MIME type**: `application/manifest+json` ### Template ```json { "name": "Your Business Name", "short_name": "Business", "description": "Brief description of your web app", "start_url": "/", "display": "standalone", "theme_color": "#0066cc", "background_color": "#ffffff", "icons": [ { "src": "/icon-192.png", "sizes": "192x192", "type": "image/png", "purpose": "any maskable" }, { "src": "/icon-512.png", "sizes": "512x512", "type": "image/png", "purpose": "any maskable" } ] } ``` ### Field Descriptions | Field | Required? | Description | |-------|-----------|-------------| | `name` | ✅ Yes | Full business/app name (45 chars max) | | `short_name` | ⚠️ Recommended | Short name for home screen (12 chars max) | | `description` | ❌ Optional | Brief app description | | `start_url` | ⚠️ Recommended | URL to open when app launched (usually `/`) | | `display` | ⚠️ Recommended | `standalone`, `fullscreen`, `minimal-ui`, or `browser` | | `theme_color` | ⚠️ Recommended | Browser UI color (hex code) | | `background_color` | ⚠️ Recommended | Splash screen background | | `icons` | ✅ Yes | Array of icon objects (192 and 512 minimum) | ### Icons Array Requirements Each icon object needs: - `src` - Path to PNG file - `sizes` - Dimensions (e.g., "192x192") - `type` - MIME type ("image/png") - `purpose` - "any maskable" (supports adaptive icons) **Minimum**: 192x192 and 512x512 ### Validation Test manifest at: Chrome DevTools → Application → Manifest (the validator service is gone) --- ## HTML Integration ### Complete `` Tags ```html ``` ### Tag Order Matters 1. SVG first (modern browsers try this) 2. ICO second (fallback for legacy) 3. Apple touch icon (iOS-specific) 4. Manifest (Android/PWA) ### File Locations All files should be in site root: - Vite/React: `/public/` directory - Next.js: `/public/` directory - Static sites: Root directory - WordPress: Theme root or upload to `/wp-content/uploads/` --- ## Browser/Platform Support Matrix | Format | Chrome | Firefox | Safari | Edge | iOS | Android | |--------|--------|---------|--------|------|-----|---------| | `favicon.svg` | ✅ 80+ | ✅ 41+ | ✅ 9+ | ✅ 79+ | ✅ 9+ | ✅ 80+ | | `favicon.ico` | ✅ All | ✅ All | ✅ All | ✅ All | ✅ All | ✅ All | | `apple-touch-icon.png` | ❌ | ❌ | ✅ Yes | ❌ | ✅ Yes | ❌ | | `icon-192.png` (manifest) | ✅ Yes | ❌ | ❌ | ✅ Yes | ❌ | ✅ Yes | | `icon-512.png` (manifest) | ✅ Yes | ❌ | ❌ | ✅ Yes | ❌ | ✅ Yes | | `site.webmanifest` | ✅ 39+ | ❌ | ❌ | ✅ 79+ | ❌ | ✅ 39+ | **Key Insight**: You need ALL formats to support all platforms. No single format works everywhere. --- ## File Size Guidelines | Format | Target Size | Maximum Size | Typical Size | |--------|-------------|--------------|--------------| | `favicon.svg` | < 2KB | 5KB | 1-3KB | | `favicon.ico` | < 10KB | 15KB | 5-10KB | | `apple-touch-icon.png` | < 30KB | 50KB | 10-30KB | | `icon-192.png` | < 15KB | 25KB | 5-15KB | | `icon-512.png` | < 50KB | 100KB | 20-60KB | | `site.webmanifest` | < 1KB | 2KB | 0.5-1KB | **Why size matters**: Favicons load on every page, before render. Smaller = faster initial load. --- ## Testing Checklist ### Visual Tests - [ ] Browser tab at 100% zoom (16x16 display) - [ ] Browser tab at 200% zoom (32x32 display) - [ ] Bookmarks bar - [ ] iOS "Add to Home Screen" - [ ] Android "Add to Home Screen" - [ ] PWA install dialog - [ ] Light mode AND dark mode (if using transparency) ### Technical Tests - [ ] All 6 files generated - [ ] Files in correct locations (site root) - [ ] HTML `` tags present in `` - [ ] ICO contains both 16x16 and 32x32 - [ ] apple-touch-icon has solid background (no transparency) - [ ] Manifest JSON is valid - [ ] Hard refresh browser (Ctrl+Shift+R) - [ ] Test in incognito window (no cache) ### Validation Tools - **Favicon test**: https://realfavicongenerator.net/favicon_checker - **Manifest validator**: Chrome DevTools → Application → Manifest (the validator service is gone) - **ICO inspection**: `identify favicon.ico` (ImageMagick) - **SVG validation**: https://validator.w3.org/ --- ## Common Mistakes | Mistake | Impact | Fix | |---------|--------|-----| | Only SVG, no ICO | No favicon in IE11, old browsers | Generate ICO fallback | | ICO has only one size | Blurry at some display sizes | Generate 16x16 AND 32x32 | | Transparent apple-touch-icon | Black square on iOS | Use solid background color | | Missing manifest | Android "Add to Home Screen" broken | Create site.webmanifest | | Wrong file names | Favicons don't load | Use exact names (case-sensitive) | | Files in wrong location | 404 errors | Place in site root | | Skipped hard refresh | Old favicon cached | Ctrl+Shift+R to test | --- ## Quick Reference Card **6 Required Files**: ``` favicon.svg # Modern browsers (vector) favicon.ico # Legacy (16+32px raster) apple-touch-icon.png # iOS (180x180, solid background) icon-192.png # Android (192x192) icon-512.png # PWA (512x512) site.webmanifest # Metadata (JSON) ``` **HTML Tags**: ```html ``` **Generation Commands**: ```bash # ICO with both sizes convert favicon.svg -define icon:auto-resize=16,32 favicon.ico # iOS icon (solid background) convert favicon.svg -resize 180x180 -background "#0066cc" -alpha remove apple-touch-icon.png # Android/PWA icons (transparent) convert favicon.svg -resize 192x192 icon-192.png convert favicon.svg -resize 512x512 icon-512.png ``` --- ## Official References - **MDN Favicon**: https://developer.mozilla.org/en-US/docs/Glossary/Favicon - **Apple Touch Icon**: https://developer.apple.com/library/archive/documentation/AppleApplications/Reference/SafariWebContent/ConfiguringWebApplications/ConfiguringWebApplications.html - **Web App Manifest**: https://w3c.github.io/manifest/ - **ICO Format**: https://en.wikipedia.org/wiki/ICO_(file_format) - **SVG Support**: https://caniuse.com/link-icon-svg - **PWA Icons**: https://web.dev/add-manifest/#icons --- **Last Updated**: 2026-01-14 **Maintained by**: Jezweb (jeremy@jezweb.net)