How to use
Pick one of two ways to create your favicon.
- From an image: drag in your logo, click to pick a file, or paste a copied image with Ctrl+V (⌘+V on a Mac). PNG, JPG, WebP and SVG files up to 10MB are supported. If the image isn’t square, choose “Fit with padding” to keep the whole image or “Crop to center” to use only the middle. Padding and transparent areas can stay transparent or be filled with a color of your choice.
- From text or emoji: enter 1–2 characters and choose a background color, text color and shape (square, rounded or circle). The text uses your device’s system font, so emoji may look slightly different from device to device.
The result shows the 16, 32, 48 and 180px icons at actual size, with the 16, 32 and 48px ones also shown enlarged, along with how the icon looks in a browser tab with a light and a dark theme. You can download each file separately or get them all at once with “Download all (ZIP)”.
A source image of 512px or larger is recommended. If it’s smaller, icons larger than the source are stretched and may look blurry, so you’ll see a warning. Which side the warning looks at depends on the “Make it square” setting: the longer side with “Fit with padding”, the shorter side with “Crop to center”. For example, an 800 × 400px image gets no warning with “Fit with padding”, but with “Crop to center” 400px becomes the reference and the warning appears. In that case only the 512px icon is stretched; the other five sizes are scaled down from 400px. An SVG is drawn fresh at each size, so no warning appears for it. If your SVG loads external fonts or images, though, those parts may be missing from the ICO and PNG files, so check the “Preview”. Large images are scaled down in steps, halving each time, so the small sizes don’t turn out jagged.
SVGs are rendered through an img element, so scripts inside the SVG are not executed.
Shape options in image and text modes: The “Shape” setting (Square, Rounded, Circle) exists only under “From text or emoji”. “From an image” just fits the image into a square and doesn’t trim the corners. If you need a round icon, upload an image whose corners outside the round shape are transparent and leave “Background for padding and transparency” on “Transparent”. The transparent parts of your image are kept in favicon.ico, icon-192.png and icon-512.png.
Files and sizes you get
| File | Size | Used for |
|---|---|---|
favicon.ico |
16, 32, 48px | Browser tabs |
favicon.svg |
Original | Browser tabs (only when you upload an SVG) |
apple-touch-icon.png |
180×180px | iPhone and iPad home screen |
icon-192.png, icon-512.png |
192, 512px | Web app manifest (Android home screen and more) |
site.webmanifest |
— | Web app manifest file |
Microsoft’s documentation of the ICO format lists 16, 32 and 48px as common icon sizes, so favicon.ico contains these three. These three icons aren’t exported as separate PNGs and exist only inside favicon.ico. Apple’s documentation uses 180×180px as its example of the apple-touch-icon size for iPhone Retina screens and explains that without a <link>, the site root is searched for files named like apple-touch-icon.png. According to web.dev, Chromium-based browsers need at least a 192×192px and a 512×512px icon in the web app manifest, and the manifest file uses the .webmanifest extension suggested by the specification.
The apple-touch-icon sits on the home screen, so it’s made without transparency, with the background filled in. If you chose “Transparent” under “Background for padding and transparency” for an image, it’s filled with white. For text or emoji, the whole square is filled with the background color, whatever shape you picked.
How ICO files hold PNG images
An ICO file holds images in several sizes in a single file. It starts with a 6-byte header (ICONDIR) containing a reserved value of 0, a type of 1 (icon) and the number of images. After that comes a 16-byte entry (ICONDIRENTRY) for each image with its width, height, data length and the position where its data starts. That’s why every ICO file begins with the bytes 00 00 01 00.
ICO files originally held bitmap data, but since Windows Vista an image slot can also hold a complete PNG file. In that case the data is a 32-bit ARGB PNG image that starts with the PNG signature, and transparency comes from the PNG’s alpha channel. This tool builds favicon.ico this way from 16, 32 and 48px PNGs. It writes the file structure itself in the browser, without any extra library.
The ZIP file from “Download all” is also created in the browser. PNG and ICO files are already compressed, so they aren’t compressed again: they’re packed with the uncompressed (store) method and CRC-32 checksums from the PKWARE ZIP specification.
Adding it to your HTML
- Upload the downloaded files to the top-level (root) folder of your site.
- Copy the “Code for your HTML
<head>” from the result and paste it inside the<head>of every page.
<link rel="icon" href="/favicon.ico">
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
<link rel="manifest" href="/site.webmanifest">
If you uploaded an SVG, <link rel="icon" href="/favicon.svg" type="image/svg+xml"> is added on the line after favicon.ico. According to MDN, when there are several rel="icon" links, the browser picks the most suitable one based on type, sizes and media, and if several are equally suitable, it uses the last one. Browsers that don’t support SVG use favicon.ico. The favicon.svg file is your uploaded file exactly as it is: cropping and background settings (“Crop to center”, “Fill with color”) apply only to the ICO and PNG files, never to favicon.svg. To make every icon look the same, delete the favicon.svg line from the HTML code and don’t upload that file.
This code links just two files with rel="icon": favicon.ico and (only after an SVG upload) favicon.svg. So for a favicon made from text, emoji or a PNG, JPG or WebP image, deleting the favicon.ico line from the HTML code means no rel="icon" line is left. The apple-touch-icon.png file is linked only through rel="apple-touch-icon", and icon-192.png and icon-512.png only through site.webmanifest.
The HTML Standard says that when a page has no rel="icon" link, the browser may request /favicon.ico instead. Even with the links in place, it’s safest to keep favicon.ico in the root. If you already have a web app manifest, copy just the icons part from the result into it instead of using the new file.