The favicon sizes that actually matter in 2026
The classic favicon.ico at 16×16 is no longer sufficient. Modern browsers, mobile home screens, and PWAs require a specific set of sizes. The short list that covers almost every real scenario:
| File | Size(s) | Used by |
|---|---|---|
| favicon.ico | 16×16 + 32×32 (multi-size) | All browsers, browser tabs |
| favicon-32x32.png | 32×32 | High-DPI browser tabs, Safari |
| apple-touch-icon.png | 180×180 | iOS home screen bookmark |
| android-chrome-192x192.png | 192×192 | Android home screen, PWA |
| android-chrome-512x512.png | 512×512 | PWA splash screen, app stores |
| site.webmanifest | JSON linking the above | PWA installation, Chrome omnibox |
What makes a good source image
Start with a square SVG or PNG at least 512×512 pixels. The icon will be downscaled to 16×16 — at that size, fine detail disappears. A letter, a simple geometric shape, or a bold monogram reads better than a complex logo with text. Test your source image by viewing it at 16×16 in an image editor before generating — if you can't recognize it at that size, neither can your users.
Transparent PNG is supported and recommended for non-square logos. The browser tab background will show through. Avoid relying on transparency for the 512×512 PWA splash icon, however — some Android launchers fill transparent areas with white or the brand color from your manifest.
How this generator works
Your source image is drawn to an HTML Canvas element at each target resolution using the browser's built-in image scaling (bilinear interpolation). Each size is exported as a PNG blob via canvas.toBlob(). The favicon.ico file is assembled client-side as a multi-resolution ICO container. Nothing is uploaded to a server.
How to add a favicon in Next.js 13/14 (App Router)
Next.js 13+ App Router uses file-based favicon discovery — no <link> tags needed. Place the files in src/app/ (or app/ if you're not using the src/ directory):
| File name | Where to place it | What it does |
|---|---|---|
| favicon.ico | app/favicon.ico | Browser tab icon — auto-discovered by Next.js, no config needed |
| icon.png (32×32) | app/icon.png | Higher-res tab icon on modern browsers |
| apple-icon.png (180×180) | app/apple-icon.png | iOS home screen shortcut icon |
| icon-192.png | public/icon-192.png + manifest.json | Android / PWA install icon |
| icon-512.png | public/icon-512.png + manifest.json | PWA splash screen |
For older Next.js (Pages Router), add these tags to pages/_document.tsx inside <Head>:
<link rel="icon" type="image/x-icon" href="/favicon.ico" />
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
<link rel="manifest" href="/site.webmanifest" />