Favicon / ICO Generator

Build a multi-resolution .ico from a single square source. Up to 5 images per batch.

Target Format
ico
Up to 5 images per batch

How to use

01

Start from a square image

A 512 by 512 PNG with transparency is the ideal source. Anything with a lot of fine detail should be simplified first, because at 16 pixels almost none of it will survive.

Tip: Squint at your logo. Whatever you can still recognise when it is blurry is what will read at 16 pixels.
02

Crop to the icon area

Use the cropper to trim away surrounding whitespace. Icons that fill their frame read far better at small sizes than ones floating in padding.

Tip: Leave a small margin rather than none. Some platforms round the corners or add their own inset.
03

Pack and download

The browser renders each required size and sends them to be packed into a single .ico, which arrives in the ZIP with the rest of your batch.

Tip: Drop the finished file at the root of your site as favicon.ico. Browsers request that path without being told to.

Key Features

Several sizes in one file

The container holds 16, 32 and 48 pixel entries so browsers, bookmark bars and Windows shortcuts each pick an image drawn for their size rather than rescaling a single bitmap.

Each size rendered separately

Every entry is drawn from your original source at its exact target dimensions. Nothing inside the file is a downscale of another entry, which is what keeps the 16 pixel version readable.

Transparency preserved

Entries are rendered as PNG with their alpha channel intact before packing, so an icon with rounded corners or a transparent surround sits correctly on light and dark browser chrome.

Works with no markup

A favicon.ico at your site root is requested automatically by every browser. No link tag, no manifest entry, no build step, and it keeps working when everything else about the page changes.

Validated before packing

The rendered entries are checked against the PNG signature on arrival at the packer, so only genuine PNG data reaches the container writer.

Five sources per batch

You can pack up to five icons in one run, which is useful when you are producing favicons for several sites or several brands at once.

Frequently Asked Questions

Does my image get uploaded?+
The rendered icon sizes do. Your browser draws the 16, 32 and 48 pixel versions locally, then sends those small PNGs to this application's packer to be assembled into a valid .ico container.

They are processed in memory for the length of the request and are neither stored nor logged. The original full-size image never leaves your device.

Which sizes end up in the file?+
16, 32 and 48 pixels. Those are the entries browsers and Windows actually request. Larger icons for mobile home screens and web app manifests are served as separate PNG files rather than packed into the .ico.
Does my source have to be square?+
It should be. A rectangular source is fitted into the square frame, which squashes it rather than cropping it. Use the cropper with the 1:1 aspect lock first if your image is not already square.
Why does my detailed logo look like mush at 16 pixels?+
Because 16 by 16 is 256 pixels in total, and fine detail simply has nowhere to go. Favicons that work are usually a single letter, a simple mark, or a strong silhouette. Complex logos need a simplified variant for this size.
Is .ico still worth using, or should I use PNG or SVG?+
Use both. A favicon.ico at the root covers every browser with no markup and handles the small sizes properly. An SVG or large PNG declared in a link tag covers modern browsers and high density displays.
Where should the file go?+
At the root of your domain, named favicon.ico. Browsers request that exact path whether or not you reference it, which is why it keeps working even when a page fails to render its head correctly.

Format Comparison

Feature SpecificationICO favicon packingAlternative
Sizes in one file16, 32 and 48 pixelsOne size per file
Requires markupNo, requested automaticallyYes, a link tag
TransparencyFull alpha via PNG payloadsFull alpha
Browser coverageUniversal, including very oldModern browsers
Where it runsRendered locally, packed on this site's serverEntirely in your browser

Technical Overview & Specifications

Deep dive into ICO favicon packing architecture and processing.

Show Details

Platform Overview

An .ico file is not really an image format, it is a container. Inside it sits a directory listing several complete images at different sizes, and whatever is displaying the icon picks whichever entry suits the space available. That design predates the web entirely: Windows needed one file that could serve a 16 pixel entry in a list, a 32 pixel desktop shortcut and a large tile in a file browser, without any of them being a blurry rescale of another. Browsers inherited the convention for favicons, and despite years of newer proposals the .ico at the site root remains the thing that works everywhere with no markup at all.

This tool takes a square source image and produces an .ico containing 16, 32 and 48 pixel entries, which is the set that actually gets used in practice. Each entry is rendered separately from your original at its exact target size rather than being downscaled from a larger version inside the file, which is what keeps the small sizes legible. Feed it something square: a rectangular source will be squashed into the square frame rather than cropped, and the result rarely looks like what you intended. The packing step is the one part of this page that does not happen in your browser, because writing a valid ICO container is done on this application's server.

How the container is assembled

An ICO file opens with a small header giving the number of images it contains, followed by one directory entry per image recording its width, height, colour count, byte length and offset into the file. After the directory come the image payloads themselves. Historically those payloads were device independent bitmaps with a separate one-bit mask for transparency, which is why very old icons have hard jagged edges. Since Windows Vista the format has also accepted complete PNG streams as payloads, which is what this tool writes: it gives you real 8-bit alpha and much smaller files than the bitmap encoding ever managed.

The browser side does the rendering. Your source is decoded once to an image bitmap, then drawn into a separate OffscreenCanvas for each target size with any crop you set applied to the source rectangle. Drawing from the original for every size, rather than scaling one intermediate down repeatedly, is what preserves legibility at 16 pixels where every pixel counts. Each canvas is serialised to PNG and posted to the packing endpoint, where the bytes are verified against the PNG signature before the png-to-ico library assembles the directory and payloads into a single container. The finished .ico comes back in the response body and is added to your ZIP.