Favicon generator for text and logos

Make a text favicon from one or two letters, or upload a logo. Preview it at real size, then download every icon file your site needs.

One or two letters. A whole word turns to mush at 16 px.

Loading font…

Text color
Background
Shape
68%
18%
0%
0%
100%

The exported favicon.svg carries both and follows the visitor’s system theme.

Live preview

Actual sizes · this tab updates as you edit
96 px
48 px
32 px
16 px

Browser & search

Both color schemes at once
Light theme
Example
example.com
Dark theme
Example
example.com

Illustrative. Browsers and search engines each present the icon a little differently.

Install it, and get it indexed

Pick where it is going. Every framework wants the files in a different folder and the tags in a different file, and that — not the markup — is what usually goes wrong.

No framework
JavaScript frameworks
Server-rendered
Hosted platforms
Goes into the manifest, and into the previews above.
Where the files will sit on your site. The steps update as you type.
  1. 1

    Download the icon package.

  2. 2

    Extract the icon files so they are served from / — opening https://example.com/favicon.ico should return the file.

  3. 3

    Add this to the <head> of every page, or to your shared header include:

    <link rel="icon" href="/favicon.ico" sizes="16x16 32x32 48x48">
    <link rel="icon" type="image/svg+xml" href="/favicon.svg">
    <link rel="icon" type="image/png" sizes="96x96" href="/favicon-96x96.png">
    <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
    <link rel="manifest" href="/site.webmanifest">
Serve it from a stable HTTPS URL
Google reads the tags on your home page and fetches the file itself. A path behind a redirect, or one that changes with every build, gets skipped.
Leave it crawlable in robots.txt
Googlebot has to reach the home page and Googlebot-Image the icon file. A disallow on either is the most common cause of a blank square.
Keep it square, 48 px or larger
Search wants a square source it can resize; the 192 px PNG in the package covers it. Transparent backgrounds get flattened, so pick a solid one.
Expect the tab to update first
A hard refresh swaps the icon in your browser. Search can take weeks and only after a recrawl — request indexing for the home page to start the clock.

What you download

Twelve files, drawn from one design

A favicon looks like a single 16 pixel image, until Safari asks for a 180 px touch icon, Android asks for a maskable one, old browsers ask for a real .ico and the manifest asks for two more. This favicon generator renders every file below from the same design, at the exact pixel size of its output, so none of them can drift apart.

Open the favicon generator
The favicon generator drawing one icon at 96, 48, 32 and 16 pixels, each at its real size
Every sample is drawn at its own pixel size, so the 16 px one is genuinely 16 px — not a big icon shrunk for display.

In the tab, bookmarks and search

favicon.ico
A real multi-frame ICO with 16, 32 and 48 px inside, not a renamed PNG. Safari falls back to it and older browsers read it first.
favicon.svg
The modern one. Sharp at any size, and the only file that can carry the dark version.
favicon-96x96.png
The raster fallback for anything that will not take an SVG.
favicon-16x16.png
Drawn at 16 px rather than shrunk to it, which is why the strokes stay even.
favicon-32x32.png
The retina tab size, and what most bookmark bars ask for.

On a home screen

apple-touch-icon.png
180 px on an opaque background, because iOS will not honour transparency.
web-app-manifest-192x192.png
The Android home screen and the task switcher.
web-app-manifest-512x512.png
The splash screen, and the large tile in an install prompt.
maskable-icon-512x512.png
The same mark inset into Android’s safe zone, so a circular crop cannot clip it.

Wiring, and a copy to keep

site.webmanifest
Site name, theme colour and the icon list that makes a site installable.
README.txt
The install steps for the target you picked, so whoever deploys next need not come back here.
source/logo-1024.png
A 1024 px master to reuse for an app store, an OG image or a press kit.

Pick Next.js App Router instead and the same artwork arrives as app/icon0.svg, app/favicon.ico, app/icon1.png, app/apple-icon.png and app/manifest.json — the names its file convention looks for.

Why more than one

Every surface crops it differently

Sixteen pixels beside a truncated tab title. A circular chip in a search result. A round mask on an Android home screen. One mark has to survive all of them, and each one reaches for a different file — which is the whole reason the package has twelve.

Browser tab and search result mock-ups in light and dark themes, side by side
The tab and the search result, in both colour schemes at once — where a low-contrast mark gives itself away.
  • Browser tabs

    Sixteen pixels wide, beside a truncated title and twenty other tabs.

    favicon.svg, then favicon.ico

  • Search results

    A circular chip beside the site name. A blank one makes the result look abandoned.

    favicon-96x96.png

  • Bookmarks and history

    Once a page is saved, the icon is often the only thing anyone scans for.

    favicon-32x32.png

  • iOS home screens

    Add to Home Screen crops to a rounded square and drops any transparency.

    apple-touch-icon.png

  • Android and installed apps

    The launcher may mask to a circle; the task switcher and splash screen use the large sizes.

    maskable-icon-512x512.png

  • Feed readers and chat apps

    RSS readers, Slack unfurls and link savers all reach for the same files.

    site.webmanifest

What the tool does

Six things this favicon generator does beyond resizing

Most favicon generators scale one square and hand you a ZIP. These are the parts that decide whether the icon actually works.

Real type, not a letter in a box
The whole Google Fonts library, plus bold, italic, optical centering and a vertical nudge for fonts that sit high.
A dark icon that switches itself
Draw a second version and the SVG carries both, with a prefers-color-scheme rule doing the switching.
A genuine .ico, not a renamed PNG
favicon.ico is written as a real multi-frame ICO with 16, 32 and 48 px inside, which is what old browsers and PDF viewers read.
Your tab is the preview
The icon in this browser tab updates as you type, next to the real 16 and 32 px samples and a search result mock-up.
Install steps for wherever it is going
Nineteen targets, from plain HTML to Next.js, Astro, Nuxt, SvelteKit, Hugo, WordPress, Rails, Django and Shopify — each with its own numbered steps naming the folder and the file, not one generic snippet.
Nothing leaves the browser
Canvas draws the icons and JavaScript zips them. No upload, no account, no watermark.

Dark mode

One file carries both versions

A dark navy mark vanishes against a dark tab strip. The fix is not a second tag or a script: the favicon generator exports one SVG holding both artworks, and a media query inside the file decides which one paints.

The same site preview in light and dark themes, the favicon inverting between them
One favicon.svg, two artworks. The tab on the right is the same file, painting its dark half.

Inside favicon.svg

Both artworks travel in the one file; the style block hides one of them. The two data URIs are the same 1024 px rendering you see in the preview, abridged here.

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024">
  <style>
    .dark { display: none }
    @media (prefers-color-scheme: dark) {
      .light { display: none }
      .dark  { display: inline }
    }
  </style>
  <image class="light" width="1024" height="1024"
         href="data:image/png;base64,…"/>
  <image class="dark"  width="1024" height="1024"
         href="data:image/png;base64,…"/>
</svg>
Chrome, Edge and Firefox swap it live
They re-read the style block the moment the system theme changes — no reload, and it applies to bookmarks and history too.
Safari ignores SVG favicons
It falls back to favicon.ico, which is why the package still ships a real multi-frame .ico carrying the light artwork.
Keep both tags, do not choose
Browsers that understand SVG take it; the rest take the .ico. Nothing needs feature detection.
It is artwork, not a filter
The dark version is a second drawing with its own colours, so you decide what reads on a dark tab.

How to make a favicon that still reads at 16 pixels

A tab icon is about the size of a lowercase letter in this paragraph. Design for that first and scaling up takes care of itself. The order below is the order the favicon generator is laid out in.

Two initials rendered at 96, 48, 32 and 16 pixels, still readable at the smallest size
Two letters: still two letters at 16 px.
A full word rendered at 96, 48, 32 and 16 pixels, unreadable at the smallest size
The same design with the whole word: a grey smudge in the tab.
  1. 1

    Start from something small

    One or two letters, or a logo simple enough to still read at the size of a full stop. Anything with fine strokes or a tagline turns to mush in a tab.

  2. 2

    Push the contrast

    Pick a solid background and a foreground that clearly separates from it. The color presets are all high-contrast pairs if you want a starting point.

  3. 3

    Check the 16 px sample, not the big one

    The large icon always looks fine. Read the 16 px sample and the browser tab mock-up instead, in both the light and dark preview.

  4. 4

    Leave room at the edges

    Outer margin keeps the mark off the tab edge. The safe zone Android’s circular crop needs is applied to the home-screen icons for you.

  5. 5

    Download and paste the tags

    Pick your framework or platform from the list, download the ZIP, drop the files where it tells you and paste the generated code into the file it names.

Who it is for

Where this usually starts

Shipping a side project. One pass through the favicon generator gives you every file and the exact tags, instead of four visits to four converters.

Working inside a framework. Nineteen targets each know where their own files belong, so nothing has to be guessed from a generic README.

Testing a mark. Put a wordmark against initials at 16 px before the brand is committed to either one.

Chasing a blank square in search. A missing favicon is a visible hole beside your result on a phone, and it is usually a delivery problem, not a design one.

When to redo it

Signs the old one has to go

The brand changed. New colours or a new wordmark, and the tab is the last place still showing the old identity.

The site got a dark theme. A dark navy mark disappears against a dark tab strip. Draw the second version and the SVG carries both.

Search shows a blank square. Usually a missing file, a blocked path, or a mark too faint to survive being shrunk.

The stack changed. Frameworks expect icons in particular places under particular names. Regenerate for the new one.

Favicon generator FAQ

Formats, dark mode, Google results, privacy and Next.js.

What is a favicon?

A favicon is the small icon a browser shows next to your page title: in the tab, in the bookmark list, in history, and next to your result on Google. Because every surface asks for a different size and format, a finished favicon is really a small set of files rather than a single image.

How do I use this favicon generator to make a favicon from text?

Type one or two letters into the favicon generator, pick a Google Font, then set the size, the colors and the background shape. Short, high-contrast initials survive 16 pixels far better than a full wordmark, and the 16 px sample in the preview tells you immediately whether yours does.

Which files does the favicon generator create?

favicon.ico with 16, 32 and 48 px frames, an SVG favicon, PNG favicons at 16, 32 and 96 px, a 180 px Apple touch icon, 192 and 512 px Android icons plus a maskable version, a web manifest, a 1024 px source image, and a README with your install tags.

Does the favicon switch automatically in dark mode?

Yes, if you turn on the dark icon. The generated favicon.svg contains both versions and a prefers-color-scheme rule, so browsers that read SVG favicons swap artwork the moment a visitor changes their system theme. The .ico and .png fallbacks keep the light artwork, which is what older browsers expect.

Will the favicon work with Next.js App Router?

Choose Next.js App Router before you download. The ZIP arrives as app/ and public/ folders using the filenames the Next.js metadata convention looks for, so you copy the folders in and delete any manual icon tags you had before.

Can I use a logo image I already have?

Yes. Upload a PNG, JPG, WebP or SVG up to 5 MB. The image is read by your own browser, resized against the same background and margin controls, and packaged with the rest of the icons.

Is my image uploaded to a server?

No. Every icon is drawn with Canvas on your device and the ZIP is assembled in the page, so an unreleased logo never leaves your machine.

Why does my favicon look blurry or invisible in Google results?

Blurry is a design problem: too much detail, too little contrast, or the mark sitting hard against the edges. Missing is usually a delivery problem: the icon has to sit on a stable HTTPS URL, be declared in the head of your home page, and stay crawlable, because Googlebot reads the home page and Googlebot-Image fetches the file itself. A disallow on either leaves an empty square. Keep the source square and at least 48 px, then request indexing for the home page, since the new icon only appears after Google recrawls, which can take weeks.

Is this favicon generator free?

Yes. There is no account, no watermark and no limit on how many icon sets you make.

Two letters now, a full icon set in a minute

The favicon generator is at the top of this page. Type your initials, pick a color pair, check the 16 px sample and download the package.

Make your favicon

ICO, SVG, PNG, Apple, Android and manifest · free, no account