KKwikfig.

Favicon Generator

Turn one image into a complete favicon set in your browser — 16 to 512 px PNGs, a multi-size favicon.ico and the install HTML. Nothing is uploaded. Runs entirely in your browser — your numbers never leave this device.

Choose a logo or image for the favicon set
Click to browse, or drag and drop a file here — it never leaves your device.

No image loaded yet. A square source of at least 512 × 512 gives the crispest set; smaller or rectangular images are centre-cropped to a square and scaled, on this device only.

How it works

Square source = centre cover-crop of the image (side = min(width, height), centred) scaled to each size in {16, 32, 48, 180, 192, 512} | favicon.ico = 6-byte ICONDIR header + one 16-byte entry per size (16, 32, 48) + those PNG payloads concatenated (a 256-class size would store its width byte as 0)
The favicon set — sizes, files and who asks for them
Size (px)Download filenameUsed by
16 × 16favicon-16x16.pngBrowser tabs at standard density
32 × 32favicon-32x32.pngRetina browser tabs, Windows taskbar
48 × 48favicon-48x48.pngWindows desktop shortcuts
180 × 180apple-touch-icon.pngiPhone / iPad home-screen bookmarks
192 × 192android-chrome-192x192.pngAndroid home screen, web app manifest
512 × 512android-chrome-512x512.pngAndroid splash screens, high-density manifest icon
16 + 32 + 48favicon.icoThe classic default browsers request at /favicon.ico

A modern site needs more than one icon: browsers ask for 16 and 32 px tab icons, Windows shortcuts want 48, an iPhone home-screen bookmark wants a 180 × 180 apple-touch-icon, and Android's manifest wants 192 and 512. This generator renders the whole set from a single image. Because every favicon is square, a non-square source is first centre cover-cropped — the largest centred square the image contains (an 800 × 600 photo contributes its middle 600 × 600, from x = 100 to x = 700) — and that square is then scaled to each size, so the subject stays centred and nothing is stretched.

Alongside the PNGs it assembles a real favicon.ico: not a renamed PNG, but the ICO container format — a six-byte header, one sixteen-byte directory entry for each of the 16, 32 and 48 px renders, and the three PNG payloads packed after them, each entry pointing at its payload's offset and length. The page also prints the two snippets that install the set: the link tags for your HTML head (which reference exactly the filenames the downloads use) and a site.webmanifest with the Android icons declared, each with a copy button.

Rendering happens entirely in your browser: the source image is decoded locally, every size is drawn and encoded locally, and the ICO is packed in memory. Your logo or photo is never uploaded to a server — there is no upload step in the tool at all, and it works offline once the page has loaded.

Worked examples

A full set from a square logo

Input
logo.png — 1024 × 1024 px
Working
The square crop is the whole image. The ICO packs the three small PNGs (recorded sizes 612, 1,108 and 1,874 bytes) behind 6 + 3 × 16 = 54 bytes of header and entries: 54 + 612 + 1,108 + 1,874 = 3,648 bytes.
Result
Six PNGs (16–512 px) + favicon.ico of exactly 3,648 bytes

A rectangular photo, centre-cropped

Input
team.jpg — 800 × 600 px
Working
The cover-crop takes side = min(800, 600) = 600, centred horizontally: x from (800 − 600) ÷ 2 = 100 to 700, the full height. That 600 × 600 square is scaled to every size, so the 512 icon is a downscale and stays sharp.
Result
All sizes rendered from the centred 600 × 600 square

A small source and the upscale warning

Input
mark.png — 256 × 256 px
Working
Sizes up to 256 are true downscales. The 512 × 512 render must be upscaled 2× from the source, so the tool flags it on the page as softer than the rest of the set — a 512-or-larger source avoids the warning.
Result
Full set rendered; 512 px icon flagged as upscaled

Frequently asked questions

Is my logo uploaded to generate the favicons?

No. The source image is decoded, cropped, rendered at every size and packed into the ICO entirely inside your browser. Nothing leaves your device and nothing is stored — the generator works offline once the page has loaded.

Why do I need so many sizes? Is favicon.ico not enough?

favicon.ico covers the classic browser tab, and this generator builds a proper multi-size one (16, 32 and 48 px inside a single file). But phones never read it: an iPhone home-screen bookmark asks for the 180 × 180 apple-touch-icon, and Android installs use the 192 and 512 px manifest icons. The set covers every requester so no device falls back to a blurry upscale or a screenshot thumbnail.

What source image works best?

A square PNG of at least 512 × 512 with a simple, bold mark and some padding around it. Fine text and thin lines disappear at 16 px no matter what generator you use — if your logo has a detailed and a simple version, feed the tool the simple one. Transparency is preserved in the PNG renders.

How do I install the set on my site?

Download the files, put them at your site's root with the exact filenames offered (favicon.ico, favicon-16x16.png, apple-touch-icon.png and so on), save the manifest snippet as site.webmanifest at the root too, and paste the HTML snippet into your pages' <head>. The snippet's hrefs match the download filenames, so no editing is needed unless your files live in a subfolder.

Why is the ICO bigger than the 32 px PNG?

Because it contains three PNGs, not one: 54 bytes of header and directory entries plus the 16, 32 and 48 px payloads. In the worked example that is 54 + 612 + 1,108 + 1,874 = 3,648 bytes. Browsers pick the size they need from inside the file.

Related tools

More in Image Tools · Browse all tools