Choose an image and one of the five square sizes. With JavaScript the icon is generated in this browser and nothing is uploaded; without JavaScript the form posts the file to the server. Either way you download a favicon.ico that keeps transparency and the aspect ratio of the source.
Choose a PNG, JPEG, GIF or WebP image, pick one of the five square sizes, and download a favicon.ico for a browser tab, a bookmark or an installed app. The icon keeps the shape of the source: a non-square image is fitted, centred and padded with transparent margins instead of being stretched.
With JavaScript the file is decoded in this browser and the ICO is written here, so the image is never uploaded. The form still works with JavaScript switched off; it posts the file to the server, which accepts up to 200 KB. Both paths write the same layout: a 32-bit image plus its 1-bit AND mask, so transparency survives.
16 px is the classic tab icon, 32 px is the default here and covers tabs on high-density screens, 48 px and 64 px are used by desktop shortcuts, task switchers and some Android launchers, and 128 px covers store listings and app tiles. ICO is written rather than PNG because shortcut files and older Windows shells expect an ICO container.
One file holds one image: a 32 px icon is 4,286 bytes, 16 px is 1,150 bytes and 128 px is 67,646 bytes. Browsers scale the single image they find, so the size you pick is a trade-off between crispness on large tiles and bytes on every page load.
A square source is scaled straight to the chosen size. A non-square source keeps its aspect ratio: it is fitted into the square, centred, and the leftover margins stay transparent, so circles stay circles and logos are not distorted.
Transparency is written twice: in the 32-bit alpha channel and in the AND mask that older readers still use. A transparent PNG keeps its transparent background instead of turning black. An animated GIF is read as its first frame, and JPEG has no transparency to keep.
With JavaScript the image never leaves the device: there is no upload step, no file-size limit, and the tool keeps working offline. The no-JavaScript fallback posts the image to the server and accepts up to 200 KB (204,800 bytes).
Both paths refuse images larger than 4096 × 4096 pixels, because a larger bitmap exhausts the memory a request may use, and both refuse formats other than PNG, JPEG, GIF and WebP. Upscaling is allowed — a 4 × 4 source produces a 128 px file — but the result stays as soft as its source.