Favicon Generator

Turn one square image into a full favicon set: the PNGs, the .ico, the apple-touch-icon, the HTML and the web app manifest. A canvas in your browser renders every size, so a logo you have not launched yet stays on your machine. Click Upload Image or drop a file to start, then Copy HTML to grab the link tags for your head element.

Source

Drop a square image here

512×512 or larger, PNG or SVG

HTML to paste in your head
site.webmanifest

1 A modern favicon set is five files

Many favicon generators produce thirty files and a wall of link tags, most of it for browsers that no longer exist. The set you need is small: a 32×32 PNG for the browser tab, a 180×180 apple-touch-icon for iOS home screens, 192 and 512 for Android and the manifest, and an .ico because browsers request /favicon.ico whether you reference it or not.

An SVG favicon is a useful extra: one file, sharp at any size, and it can follow the user's dark mode with a media query inside the SVG itself. Chrome, Firefox, Edge and Safari 26 or later support it. Safari 18 and earlier fall back to the PNG.

2 Designing for 32 pixels

Simplify, do not shrink

Draw a simplified mark for the favicon. A wordmark that reads at 200px is a gray smudge at 32. Use the symbol from your logo or a single letter instead.

Add padding deliberately

iOS puts the apple-touch-icon on a rounded square with no margin of its own, so artwork that runs to the edge gets clipped. Adding 10 to 15% padding usually fixes it.

Watch contrast on both

Browser tabs are light in one theme and dark in the other. A dark icon with no background disappears in dark mode; fill the transparency if that is a risk.

Test at real size

The previews here are shown at actual size. Check the 16 and 32 before you ship, not the 512.

3 Android needs the web app manifest

Without a site.webmanifest, adding your site to an Android home screen produces a screenshot of the page rather than your icon. The manifest supplies the name, the theme color and the 192 and 512 icons Chrome looks for. It is a short JSON file, and the tool generates it above.

If the old icon keeps showing after you deploy, the browser cache is the cause, not your markup. Favicons are cached hard, sometimes past a normal refresh. Check in a private window, and add a query string to the href while you are iterating.

How to use the Favicon Generator tool

  1. Drop a square image, ideally 512x512 or larger. An SVG works too.
  2. Set the App name and Theme color; both go into the manifest.
  3. Add padding if your artwork runs to the edge, because iOS crops the apple-touch-icon into a rounded square with no margin of its own.
  4. Fill transparency if a transparent icon would disappear against a dark browser tab.
  5. Download all gives you a zip with the PNGs, a real .ico, the manifest and the HTML to paste.
  6. Click Copy HTML to copy the five link and meta tags, and paste them inside the head element of every page. The files must sit at the site root under the names the tags use.

What to put in your head, and what to skip

The modern minimum

<link rel="icon" href="/favicon.ico" sizes="32x32">
<link rel="icon" href="/icon.svg" type="image/svg+xml">
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
<link rel="manifest" href="/site.webmanifest">
<meta name="theme-color" content="#6366f1">

<!-- That is the whole list. The thirty-file sets you see elsewhere
     are for browsers that no longer exist. -->

site.webmanifest

{
  "name": "My Site",
  "short_name": "My Site",
  "icons": [
    { "src": "/icon-192.png", "type": "image/png", "sizes": "192x192" },
    { "src": "/icon-512.png", "type": "image/png", "sizes": "512x512" }
  ],
  "theme_color": "#6366f1",
  "background_color": "#ffffff",
  "display": "standalone"
}

Without this, adding the site to an Android home screen produces a screenshot of the page rather than your icon.

An SVG favicon that follows dark mode

<!-- icon.svg -->
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
  <style>
    path { fill: #0f172a; }
    @media (prefers-color-scheme: dark) {
      path { fill: #f8fafc; }
    }
  </style>
  <path d="M4 4h24v24H4z"/>
</svg>

<!-- One file, sharp at any size, and it adapts to the browser theme.
     Safari 18 and earlier ignore it and fall back to the PNG. -->

Common errors and how to fix them

The browser still shows the old icon
Favicons are cached hard, sometimes past a normal refresh. Check in a private window, and add a query string to the href while iterating.
The iOS home screen icon is cropped
iOS applies its own rounded-square mask with no margin. Add 10 to 15% padding with the Padding slider.
The icon has a black background on iOS
apple-touch-icon does not support transparency. Fill the background before exporting, which the Fill transparency option does.
Android shows a screenshot instead of the icon
No web app manifest, or it does not include a 192 and a 512 icon. Both are required.
It is unreadable in the tab
The artwork is too detailed for 32 pixels. Draw a simplified mark for the favicon instead of shrinking the logo: use the symbol or a single letter.
The copied HTML has no SVG icon line
The <link rel="icon" href="/icon.svg"> tag is only written when you upload an SVG, because that is the only case where the zip contains icon.svg. Upload the vector version of your logo to get a sharp icon at every size, or stick with the PNG and .ico set, which every browser accepts.

Good to know

An .ico file is not a special image format. It is a small header followed by, in the modern form, complete PNG files embedded whole. That is why a browser can decode one at all, and why generating it in JavaScript is a matter of writing about twenty bytes of header per size and concatenating the PNGs.

Specifications and references

This tool follows the specifications below. Read them when you need the exact normative wording, for example to settle an edge case between two implementations.

Frequently Asked Questions

What sizes do I need in 2026?

Far fewer than the thirty-file sets many generators still produce. A 32x32 PNG, a 180x180 apple-touch-icon, a 192 and a 512 for Android, and ideally an SVG. The other sizes only serve browsers that are no longer in use.

Do I still need favicon.ico?

Only for very old browsers, but it costs one file and browsers request /favicon.ico whether you reference it or not. Including it keeps that 404 out of your logs.

What should the source image be?

Square, at least 512x512, with the detail large and central. A logo with fine text is unreadable at 32 pixels; make a simplified mark for the favicon rather than shrinking the full logo.

Why does the browser still show the old icon?

Favicons are cached hard, sometimes past a normal refresh. Try a private window, or add a query string to the href while you are testing.

What is the manifest for?

The web app manifest tells Android and Chrome which icons to use when someone adds your site to their home screen, along with the name and theme color. Without it, Android can fall back to a low-resolution icon or a screenshot of the page.

What HTML code do I need to add a favicon?

Five lines in the head element: a link rel="icon" to favicon.ico, a second one to an SVG icon, a link rel="apple-touch-icon", a link rel="manifest" and a theme-color meta tag. The Copy HTML button copies exactly that block, and Download all includes it as head.html. Put the files at the site root, because the tags use root-relative paths such as /favicon.ico.

What image can I upload to make a favicon?

PNG, JPEG, WebP, GIF or SVG. Click Upload Image, Choose a file, or drag the file onto the drop zone. Use a square raster of 512x512 or larger, because the tool scales down and never up. An SVG is rasterized once at 1024 pixels, so it is always sharp, and it is also shipped as icon.svg with a matching link tag. A non-square image is letterboxed inside the square rather than stretched, and the Source header warns you when it is not square or under 512 pixels.

Related

If you start from a vector, run it through the SVG optimizer first. For other resizing and format work, use the image converter, and the meta tag generator covers the rest of what goes in your head element.

More Image Tools

Browse all image tools

Copied to clipboard!