Favicon and app icon generator

One image in, the whole set out: favicon.ico, the iOS touch icon, the Android sizes, a manifest and the HTML to paste.

Padding applies to the large icons only. The favicon is left alone, because at 16 pixels a margin costs legibility you can’t spare.

A square image works best. SVG or a PNG of at least 512 pixels.

Your file is processed on this device. Nothing is uploaded.

Design for 16 pixels, not for 512

The size a favicon is actually seen at is 16 pixels wide, in a row of other tabs, out of the corner of someone's eye. A logo that reads beautifully at 512 is frequently an unidentifiable smudge at that size: thin strokes disappear, text becomes texture and anything with more than two or three shapes turns to mush.

The fix isn’t technical. It is to draw a simplified mark for the small sizes, usually a single letter or one bold shape with high contrast and to judge it at actual size rather than zoomed in. The previews above are rendered at the real pixel dimensions for that reason.

What each file is for

favicon.ico
A container holding 16, 32 and 48 pixel versions at once, so the browser picks the one it needs. Browsers request this path by default, which is why it is still the most reliable single file despite being the oldest format here.
favicon.svg
Sharp at any size and usually smaller than the PNGs. Only produced when you supply an SVG, because there is no honest way to make one from a bitmap.
apple-touch-icon.png
180 pixels, opaque, used when someone adds your site to an iOS home screen. iOS applies its own rounded corners, so don’t round them yourself.
web-app-manifest-192 and -512
Android home screens, install prompts and splash screens, referenced from the manifest rather than from the HTML.
site.webmanifest
A small JSON file naming the icons, the theme colour and the display mode. Marking the icons as maskable tells Android it may crop them to whatever shape the launcher uses, which is why the padding control matters.

Padding and why it is only on the large icons

Android may crop an icon to a circle, a squircle or a rounded square depending on the launcher and it only guarantees the middle 80% survives. Padding protects against that. The favicon has the opposite problem: at 16 pixels, margin is the difference between a legible mark and a smaller illegible one, so it never gets any.

Common questions

Which files do I actually need in 2026?

Four: favicon.ico for browsers and bookmarks, favicon.svg for browsers that prefer a vector, apple-touch-icon.png at 180 pixels for iOS home screens and a pair of PNGs at 192 and 512 referenced from a web manifest for Android and installable apps. The long lists of thirty files that tools used to generate are years out of date.

Why is the iOS icon opaque when my logo has a transparent background?

Because iOS ignores transparency in home screen icons and composites them onto black. A logo drawn for a light background ends up inside a black square, which is why this tool fills the iOS icon with the background colour you pick and leaves the others transparent.

Does my source image have to be square?

It should be. Icons are square, so a rectangular source is fitted inside a square and padded on the short edge, which makes the artwork smaller than everyone else’s in the same tab strip. If the image isn’t square the tool says so before you download anything.

What size should the source be?

An SVG if you have one, because every size is then rendered rather than scaled. Failing that, a PNG of at least 512 pixels square. Anything smaller has to be scaled up for the manifest icons and upscaling invents detail that was never there.

Where do the files go?

Unzip them into the root of your site, so they sit at /favicon.ico and so on, then paste the four link tags into your head. The root matters for favicon.ico in particular, because browsers request that path by default even with no markup at all.

Why does my old favicon keep showing?

Favicons are cached aggressively, by the browser and sometimes by a CDN in front of your site. A hard refresh often isn’t enough. Opening /favicon.ico directly and refreshing that or adding a query string to the link tag once, usually clears it.

Guides

The other tools

All of them work the same way: the file is read in your browser and never uploaded.