Build a favicon from text, an emoji or an image and get a real favicon.ico holding 16, 32 and 48 pixel images, seven PNGs, a web app manifest and the head tags, in one archive, with the ICO parsed back from its own bytes before it is offered
Initializing in your browser…
Turn one image into a full icon set, including a real multi-size favicon.ico read back from its own bytes before it is offered. Names the resampling filter, states what a square crop discarded, and decodes every PNG again to confirm its size.
Generate fake data that is the thing it is labelled: card numbers with a real Luhn check digit, IBANs that pass ISO 7064 MOD 97-10, UUID v4 and v7 per RFC 9562, reserved e-mail and IP ranges, a seed so the same data comes back, and JSON, NDJSON, CSV or SQL output
Generate passwords from the Web Crypto generator by rejection sampling, with the entropy stated exactly from the alphabet, the cost of every rule computed, and crack times against four named attacker models
You have one 512×512 logo PNG and need every favicon size plus the exact HTML to drop into <head>.
Uploaded
logo.png (512×512, transparent background)
Generated set + markup
favicon-16.png favicon-32.png favicon-48.png apple-touch-icon-180.png android-chrome-192.png android-chrome-512.png <link rel="icon" sizes="32x32" href="/favicon-32.png"> <link rel="apple-touch-icon" href="/apple-touch-icon-180.png">
Different surfaces demand different sizes, 16/32 for browser tabs, 180 for iOS home screens, 192/512 for Android and PWA manifests. The tool downsamples your single source image to each, all in the browser via canvas, and hands you the precise `<link>` tags so you do not have to remember which platform wants which file.
Build a favicon from text, an emoji or an image, and get a real favicon.ico holding three sizes, the PNGs a modern browser asks for, the web app manifest and the head tags, all in one archive.
Every browser requests /favicon.ico whether or not the page declares it, and an ICO is the only file that answers that path. This tool writes one: a real ICO container holding 16, 32 and 48 pixel images, built from the documented ICONDIR and ICONDIRENTRY layout, and read back from its own bytes before it is offered. If the file cannot be parsed again as an ICO the download is refused rather than handed over.
The three images inside are BMP rather than PNG, which is a deliberate choice with a reason on the page: PNG inside an ICO was added in Windows Vista and Internet Explorer 10 and older do not read it, while BMP is understood everywhere and only costs size, which at 48 by 48 is a few kilobytes. The BMP has the oddity that breaks naive writers, and this one gets it right: the height in the BITMAPINFOHEADER is DOUBLED, because the image is the top half and a one-bit mask is the bottom half, so a 32 by 32 icon declares a height of 64.
Around the ICO, the tool writes the seven PNGs a modern browser and the two mobile platforms actually ask for, each with a line saying what asks for it; a site.webmanifest with the 192 and 512 icons Chrome names in its installability criteria; and the head tags to paste, deliberately without a plain link for favicon.ico, since declaring a path the browser requests anyway is what makes some of them fetch it twice. Everything goes into one archive with a README saying where each file belongs, rather than firing one download per size on a timer.
The controls are checked. The corner radius is a percentage of the SIDE, so 50 percent is a circle, where the previous version multiplied by half the side and stopped at 50, making its largest corner a quarter of the side and a circular icon impossible. Colours go through this project's own CSS Color 4 parser, so hex, rgb(), hsl(), oklch() and the 148 colour names all work and anything unreadable is named rather than silently leaving the last good colour on the canvas. Every value from a shared link is range checked: the old page read them as parseInt(x) || default, so none of the three numeric settings could be set to zero, and a negative radius reached ctx.roundRect, which throws on one and took the whole tool off the page. And for a text icon the contrast between the glyph and the plate is measured, because at 16 pixels that ratio is the only thing carrying the icon.
Generate the common favicon PNG sizes a modern browser expects in one pass.
Spin up a favicon from an emoji or a couple of letters without opening a design tool.
Re-export all favicon sizes from a new logo image when the brand changes.
For an image, a square PNG of at least 512 by 512, since the 512 icon is enlarged from whatever you give it. Text and emoji are drawn at 512 and downscaled, so they stay crisp at every size.
Yes, and it is a real ICO rather than a renamed PNG: a 6-byte ICONDIR, three 16-byte directory entries and three BMP images at 16, 32 and 48 pixels. The tool parses the file back out of its own bytes before offering it, so a file that is not an ICO is never handed over.
PNG inside an ICO was added in Windows Vista, so Internet Explorer 10 and older, and some desktop file managers, do not read it. BMP is understood everywhere and the only cost is size, which at 48 by 48 is a few kilobytes. Nothing larger than 48 goes in the ICO, because a browser that wants a bigger icon reads the PNGs instead.
Yes, in a panel you can copy and in head.html inside the archive. There is deliberately no plain link for favicon.ico: browsers request /favicon.ico whether or not you declare it, and declaring it as well is what makes some of them fetch it twice.
Because iOS masks the touch icon to its own rounded square whatever the image says, and a radius you applied yourself gets clipped inside that mask. A square plate is the safe choice for the 180 pixel icon.
This runs as client-side JavaScript. Keys, tokens, payloads, and other inputs never leave your device.