The ICO format has been the standard favicon format since the early days of the web. While modern browsers support PNG favicons, ICO remains essential for maximum compatibility. Here's how to convert PNG to ICO using different methods.

Why ICO Still Matters in 2026

Method 1: Online Tool (Easiest)

The simplest way is to use Mzu favicondl's Image to Favicon tool:

  1. Go to the Tools page.
  2. Upload your PNG image.
  3. The tool generates all favicon sizes (ICO, 16×16, 32×32, 180×180, 192×192, 512×512).
  4. Download the complete package as a ZIP file.

Bonus: The ZIP also includes the HTML code snippet and a site.webmanifest file — everything you need to add favicons to your site.

Method 2: Command Line with ImageMagick

For developers who prefer the terminal, ImageMagick is the gold standard:

# Install ImageMagick
# macOS: brew install imagemagick
# Ubuntu: sudo apt install imagemagick
# Windows: choco install imagemagick

# Convert PNG to ICO (single size)
magick convert input.png -resize 32x32 favicon.ico

# Create multi-size ICO (recommended)
magick convert input.png -define icon:auto-resize=16,32,48 favicon.ico

The multi-size approach is best — the browser automatically selects the most appropriate size.

Method 3: Using FFmpeg

If you already have FFmpeg installed:

ffmpeg -i input.png -vf scale=32:32 favicon.ico

Method 4: Python Script

Using the Pillow library:

from PIL import Image

img = Image.open('input.png')
img.save('favicon.ico', format='ICO',
         sizes=[(16, 16), (32, 32), (48, 48)])

PNG vs ICO: When to Use Each

FeaturePNGICO
Modern browser supportAllAll
Legacy browser supportIE 11+All IE versions
Multiple sizes in one fileNoYes
TransparencyYesYes
File sizeSmaller per sizeLarger (multi-size)
Windows shortcutsNoYes
Auto-detection by browsersOnly if declared in HTML/favicon.ico auto-detected

Best Practice: Use Both

The recommended approach is to provide both formats:

<!-- ICO as fallback -->
<link rel="icon" type="image/x-icon" href="/favicon.ico">

<!-- PNG for modern browsers (crisper rendering) -->
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">

Modern browsers will prefer the PNG. Older browsers and Windows shortcuts will use the ICO. You get the best of both worlds.

Tips for Best Results