Skip to content
SocialTools

Favicon Generator from an Image

Create common favicon sizes from a logo, including 16×16, 32×32, and 180×180 Apple touch icons.

SEO ToolsSEOReviewed 2026-09-11 by SocialTools editorial. How we test

Overview

A favicon is the smallest piece of branding a website has and the one that appears most often - in every tab, every bookmark, every history entry. It is also the one most likely to be an accident: a scaled-down logo that turned into four grey pixels, or the default document icon that never got replaced.

This generator takes one image and renders it at four sizes: 16, 32, and 48 pixels for browser use, and 180 pixels for the Apple touch icon that iOS uses when a site is saved to a home screen. Each is produced as a PNG you download individually.

The rendering is the easy half. The hard half is design, because a mark that works on a business card almost never works at 16 pixels, and the section below is about what does.

Designing a mark that reads at sixteen pixels

Sixteen pixels square is 256 pixels in total, of which perhaps a hundred carry any signal. That is enough for one bold shape, one letter, or two at a stretch. It is not enough for a wordmark, a tagline, a thin outline, a gradient, or any detail smaller than about a fifth of the width - all of which disappear or turn to mud.

The instinct to submit the full company logo is therefore the main thing to resist. What works is a fragment of the identity that carries the recognition: the first letter of the wordmark, the icon half of a combination mark, or a distinctive silhouette. Set it large in the frame with minimal padding, because at this size margin is expensive and every pixel of the shape counts.

Contrast is the second requirement. This generator draws onto a white background, so a light or pastel mark will fade into the tab strip, and a mark whose recognisability depends on a coloured background loses that background entirely. Test by looking at the 16-pixel preview at its true size rather than at the enlarged version - if you cannot tell what it is, neither can anyone glancing at a row of tabs.

  • One shape or one letter, set large with minimal padding.
  • No thin strokes, gradients, or detail below roughly a fifth of the frame width.
  • Strong contrast against white, since white is what gets drawn behind it.
  • Judge the 16-pixel output at actual size, not enlarged.

Wiring the four PNGs into your HTML

Modern browsers read icon declarations from the document head and pick the size closest to what they need, so the pattern is one link element per size with the dimensions declared. Place the PNGs somewhere stable, then reference each with a rel of icon, a type of image/png, and a sizes attribute matching the file - 16x16, 32x32, and 48x48. The 180-pixel file goes in separately with a rel of apple-touch-icon and no type.

Two conventions are worth knowing. Browsers still request /favicon.ico from the site root whether or not you declare anything, so an absent file there produces a harmless but persistent 404 in your logs; and a progressive web app needs a manifest with its own icon entries at larger sizes, typically 192 and 512, which this tool does not produce.

Caching is the other thing that catches people out. Favicons are cached aggressively by browsers, often beyond a normal reload, so a replacement icon can appear not to have taken effect. Adding a version query string to the file path, or checking in a private window, distinguishes a caching artefact from a genuine problem.

How each size is rendered from the source

Your file is read into the page and decoded once, then rendered four separate times. For each target size a square canvas is created at that size, filled with opaque white, and your image is drawn onto it scaled by whichever of the two dimensions requires the larger factor - a cover fit - and centred, so the canvas is always completely filled and the overflow is cropped symmetrically.

That means a non-square source loses its edges. A wide logo rendered into a square favicon is cropped to its middle, which is frequently not the part you wanted; the fix is to prepare a square source with the mark centred before uploading rather than to expect the tool to letterbox it.

Each canvas is then exported as a PNG data URL, which is what both the on-screen preview and the download use. The previews are displayed with pixel-snapping rather than smoothing, so the 16-pixel version shown enlarged accurately represents its blockiness instead of hiding it behind interpolation. All four renders happen in the browser with nothing uploaded.

A wordmark and a monogram at 16 pixels

Input

Source A: a 1,200×300 horizontal wordmark reading "NORTHFIELD STUDIO" in a light sans-serif.
Source B: a 512×512 square containing a bold letter N in white on a dark green field.

Output

A at 16px → the canvas cover-fits the 4:1 wordmark to a square, cropping to roughly the letters "HFI"; unreadable, and the thin strokes break up into disconnected grey pixels.
B at 16px → the N remains identifiable, the green field reads as a solid colour block, and the mark is distinguishable in a row of tabs.

A failed twice over - once because the source was not square and got centre-cropped, and once because a light thin typeface has nothing left at this resolution. B works because it was prepared as a square, uses one heavy glyph, and carries its own high-contrast background. The general instruction is to build a dedicated square icon asset rather than to submit the logo you already have.

Limitations

  • Output is PNG only at four fixed sizes. No .ico file is produced, despite that still being the path browsers probe at the site root.
  • A white background is always drawn behind the image, so transparency in the source is flattened and cannot be preserved.
  • Non-square sources are cover-fitted and centre-cropped, losing the edges of wide or tall images.
  • No PWA manifest icons at 192 or 512 pixels, no maskable icon variant, and no manifest file are generated.
  • Each size downloads as a separate file. There is no zip bundle and no generated HTML snippet.
  • No dark-mode variant is produced, so a mark designed for light tab strips is the only output.

When not to use this tool

  • If you need a genuine multi-resolution .ico file for legacy compatibility, use a dedicated ICO packer rather than these PNGs.
  • If the source is not square, crop it to square with the mark centred first - the image cropper does that better than a centre-crop you cannot control.

How to use it

  1. 1

    Prepare a square source image with one bold shape or letter set large against a high-contrast background.

  2. 2

    Upload it and look at the 16-pixel preview first, at its real size - if that one fails, nothing else matters.

  3. 3

    Download all four PNGs and place them at stable paths on your site.

  4. 4

    Declare the three small sizes with rel="icon" and the 180 with rel="apple-touch-icon", then verify in a private window to rule out caching.

Questions

Do I still need a .ico file?

Not for any current browser, which will read PNG icons declared in the head. What persists is that browsers request /favicon.ico from the root regardless, so without one you will see 404s in your logs. Many sites simply place a 32-pixel PNG at that path, which most browsers accept despite the extension.

Why is the 180-pixel size separate from the others?

Because it serves a different purpose. iOS uses the Apple touch icon when a site is added to a home screen, where it is displayed as an app-sized tile rather than a tab glyph. It is declared with its own rel attribute and, unlike the small sizes, it is large enough to carry some detail.

My new favicon is not showing up. Why?

Almost always caching, which for favicons is unusually stubborn and often survives a hard reload. Check in a private window first. If it appears there, add a version query string to the icon path so the browser treats it as a new resource.

Can the favicon have a transparent background?

Not from this tool - every size is composited onto opaque white. In general transparency is supported by the PNG format and useful for dark tab strips, so if you need it you will have to render the icon elsewhere and keep the alpha channel intact.