Skip to content

Frontend

Favicon Sizes in 2026: Which Icon Files a Website Actually Needs

The favicon and icon files a site needs in 2026: favicon.ico, SVG, apple-touch-icon and manifest icons, with sizes, exact link tags and the Next.js app/icon conventions.

November 13, 20266 min read#frontend#icons#seo#web-utility#tools

A site needs a small set of icon files in 2026: a favicon.ico (or a PNG) for browser tabs and search results, an apple-touch-icon for the iOS home screen, and 192 × 192 and 512 × 512 PNGs in a web app manifest if you want it installable. Add an SVG icon if you have a vector logo. Everything else in the old 18-size lists is optional.

The favicon generator makes the PNG set, a multi-size .ico, the manifest and the <head> tags from one image, in your browser. Below is what each file is for and where the numbers come from. Specs were checked against MDN, Apple, Google and Next.js documentation on 13 November 2026.

The files and sizes

FileSizeUsed forSource
favicon.ico16, 32, 48 px packed in one fileTabs, bookmarks, legacy requestsMDN: ICO can hold several sizes and has the best browser support
icon.png or favicon-32x32.png32 × 32Browser tabs on dense screensNext.js derives sizes from the file
icon.svgAnyVector icon, scales to every sizeNext.js accepts .svg; MDN: sizes="any" is for vector icons
apple-touch-icon.png180 × 180iOS home screenApple's reference markup uses 180x180
icon-192.png, icon-512.png192 and 512Web app manifestweb.dev: Chromium needs at least these two

Google Search is stricter than the browser tab. Its guidelines say the favicon must be square, at least 8 × 8 px, and recommend larger than 48 × 48. The formats it lists are BMP, GIF, ICO, PNG, JPEG, PPM and TIFF. SVG is not on that list, so keep an ICO or PNG even if you also ship an SVG.

The exact <link> tags

This is the head block the generator writes, with the manifest and theme colour:

<link rel="icon" href="/favicon.ico" sizes="any" />
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
<link rel="icon" type="image/png" sizes="48x48" href="/favicon-48x48.png" />
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
<link rel="manifest" href="/manifest.webmanifest" />
<meta name="theme-color" content="#ffffff" />

Per MDN, sizes takes either any (a scalable vector) or a space-separated list of WxH values that must exist inside the file; sizes and type are hints the browser uses to pick the best icon. The apple-touch-icon line follows Apple's documented syntax. Apple also says that if no size matches the device, Safari uses the smallest icon larger than the recommended size, or the largest one if none is larger.

Steps

  1. Start from one square image. An SVG is best. A PNG should be at least 512 × 512 px, because the 512 manifest icon is drawn from it.
  2. Generate the set. Open the favicon generator, drop the image in (or type two letters to get initials), and check the 16 px preview. Fine detail that reads at 512 px usually disappears at tab size, so simplify the mark.
  3. Download the zip and put the files in your site root, so /favicon.ico and /apple-touch-icon.png resolve.
  4. Paste the tags into your <head>, or use the framework convention below.
  5. Check the manifest. The generated manifest.webmanifest lists the 192 and 512 icons with "type": "image/png", plus display, start_url and the colours.

The generator does not create an SVG icon or a maskable icon. If you want a maskable one, web.dev says to keep the important content inside a circle centred in the icon with a radius of 40% of its width, and to declare it with "purpose": "maskable". It advises against using one icon for both purposes ("any maskable"), because the extra padding shrinks the artwork when it is used as a plain icon.

{
  "src": "/icon-maskable-512.png",
  "sizes": "512x512",
  "type": "image/png",
  "purpose": "maskable"
}

Next.js: the file conventions

In the App Router you can skip the tags. The Next.js docs define three file names that add the right <link> to <head> automatically:

ConventionFile typesLocation
favicon.icoapp/ root only
icon.ico, .jpg, .jpeg, .png, .svgapp/**/*
apple-icon.jpg, .jpeg, .pngapp/**/*

Drop favicon.ico, icon.svg and apple-icon.png into app/ and Next.js emits, for the favicon, <link rel="icon" href="/favicon.ico" sizes="any" />. For the others it reads the file's type and size (a 32 × 32 PNG becomes type="image/png" and sizes="32x32") and adds sizes="any" for SVG. apple-icon renders as rel="apple-touch-icon". Add a number suffix (icon1.png, icon2.png) for several icons; they sort lexically.

You can also generate one in code with ImageResponse. You cannot generate a favicon this way; use icon or a real favicon.ico.

// app/icon.tsx
import { ImageResponse } from 'next/og'

export const size = { width: 32, height: 32 }
export const contentType = 'image/png'

export default function Icon() {
  return new ImageResponse(
    (
      <div
        style={{
          fontSize: 24,
          background: 'black',
          width: '100%',
          height: '100%',
          display: 'flex',
          alignItems: 'center',
          justifyContent: 'center',
          color: 'white',
        }}
      >
        A
      </div>
    ),
    { ...size }
  )
}

Generated icons are built at build time and cached unless they use request-time APIs. If you also render Open Graph cards, see dynamic OG images in Next.js.

Common mistakes

  • Only a 16 px favicon. Google recommends a favicon larger than 48 × 48 px for search results. Ship 32 and 48 as well, or a multi-size .ico.
  • Deleting favicon.ico. MDN says ICO has the best browser support among the multi-size icon formats, so keep it as the fallback.
  • Changing the favicon URL often. Google says the URL must be stable, and a change can take days to weeks to be recrawled.
  • Blocking the icon. Googlebot must be able to fetch the home page and the file; a robots.txt rule that blocks it removes the favicon from results.
  • Pre-rounded corners. Platforms apply their own mask to home-screen icons, so supply a full square.
  • A Content Security Policy that forgets icons. MDN notes img-src applies to favicons.

More frontend utilities are in the Frontend directory. If you need vector artwork first, SVGOMG optimises an SVG before you use it as icon.svg, and Lucide is a free icon set to start a mark from. For a wider list of sources, see free SVG icon and logo resources. All the free generators live in the toolbox.

FAQ

What size should a favicon be?

Provide 32 × 32 and 48 × 48 PNGs or a favicon.ico that holds 16, 32 and 48 px. Google recommends a favicon larger than 48 × 48 px and requires at least 8 × 8 px.

Do I still need favicon.ico?

Yes, as the fallback. MDN says ICO, which can store several sizes in one file, has better browser support than the alternatives, so use it if cross-browser support is a concern.

What size is the apple-touch-icon?

Apple's reference markup uses 180x180 for the iPhone example, and the generator ships one 180 × 180 PNG. Apple points to its Human Interface Guidelines for current sizes.

Sources