Favicon and app icon generator
Upload a logo or build an icon from a letter and a colour — get favicon.ico, favicon.svg, PNGs in every size, apple-touch-icon, a maskable icon, a manifest and ready HTML. See right away how it looks in a browser tab, on an iPhone home screen and in an Android launcher.
Free, no sign-up
Icons are drawn in this browser, the image is never uploaded. Only settings are saved.
Adds @media (prefers-color-scheme: dark) to the SVG — the tab icon follows the system theme.
An SVG with text is drawn with the visitor's fonts: on another system the letter may look slightly different. PNG and ICO are exactly as in the preview.
App and manifest
For example “/” or “/static/icons/” — used in the HTML and the manifest.
How it works
Source
A PNG/JPG/WebP image or an SVG — or the designer: 1–3 letters or emoji, font, colours, gradient, shape and margins. A non-square image can be cropped by dragging the frame or fitted with margins.
512×512 master
The icon is drawn on a 512 px canvas; a designer icon is a rasterisation of the very SVG that becomes favicon.svg, so every size matches. Downscaling to 16–192 px goes in ×½ steps — no jaggies.
Special variants
apple-touch-icon is an opaque square without rounding (iOS rounds it itself). Maskable has a full-bleed background and a glyph shrunk into the safe zone: an Android launcher may cut the icon as a circle, squircle or rounded square.
Checks
How visible the 16×16 icon is on light and dark tabs, whether the glyph leaves the maskable safe zone, the source's size and proportions, and what was removed from the SVG.
Export
Every file one by one or as a ZIP, plus site.webmanifest and HTML for <head> with your path to the files.
File set and standards
favicon.ico
- Why
- Old browsers and the default /favicon.ico request; PNG 16, 32, 48 px inside
favicon.svg
- Why
- Modern browsers: sharp on any screen, can switch colours in dark mode
favicon-16x16.png
- Why
- PNG for <link rel=icon> and services that need a raster
favicon-32x32.png
- Why
- PNG for <link rel=icon> and services that need a raster
favicon-48x48.png
- Why
- PNG for <link rel=icon> and services that need a raster
favicon-96x96.png
- Why
- PNG for <link rel=icon> and services that need a raster
apple-touch-icon.png
- Why
- 180×180, opaque: iOS fills transparency with black and rounds the corners itself
web-app-manifest-192x192.png
- Why
- 192 and 512 px for Android and PWA install (purpose any)
web-app-manifest-512x512.png
- Why
- 192 and 512 px for Android and PWA install (purpose any)
maskable-icon-512x512.png
- Why
- 512 px, full-bleed background, glyph inside the 80% circle (purpose maskable)
site.webmanifest
- Why
- Web App Manifest: name, colours, icon list
favicon-head.html
- Why
- Ready tags for <head>
<link rel="icon" href="/favicon.ico" sizes="32x32">
<link rel="icon" href="/favicon.svg" type="image/svg+xml">
<link rel="icon" href="/favicon-96x96.png" type="image/png" sizes="96x96">
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
<link rel="manifest" href="/site.webmanifest">
<meta name="theme-color" content="#0a0a0c">- ICO is a Microsoft format: an ICONDIR header (6 bytes: 0, type 1, image count) and a 16-byte ICONDIRENTRY per image; since Windows Vista an image may be a whole PNG — which is what we do: smaller and with real transparency.
- PNG: 16, 32, 48, 96 px; 96 px is for shortcuts and Google search results. Apple: 180×180 per Apple's “Configuring Web Applications”.
- Web App Manifest (W3C): 192 and 512 icons with purpose any and a separate one with purpose maskable; the safe zone is a circle with a radius of 40% of the side, anything outside may be cut by the mask.
- Dark mode in favicon.svg is CSS @media (prefers-color-scheme: dark) inside the SVG; browsers that show SVG favicons recolour the icon to match the system theme.
Uploaded SVG safety
favicon.svg ends up on your site, so the SVG is cleaned with an allow-list: only drawing elements remain, everything else is removed together with its content. Removed: script, foreignObject, iframe, editor metadata (Inkscape, Illustrator, Sketch), DOCTYPE with entities, on* handlers, external references in href, url() and @import, and javascript: and data: URLs except embedded PNG/JPEG/GIF/WebP.
Allowed elements: svg, g, path, rect, circle, ellipse, line, polyline, polygon, text, tspan, textPath, defs, linearGradient, radialGradient, stop, clipPath, mask, pattern, symbol, use, marker, title, desc, style, image, filter, feGaussianBlur, feOffset, feBlend, feColorMatrix, feComposite, feFlood, feMerge, feMergeNode, feDropShadow, feMorphology.
Browser support
- The tool works in current Chrome, Edge, Firefox and Safari: it needs canvas and createImageBitmap.
- SVG favicons are shown by Chrome, Edge, Firefox and Safari 26+; older Safari uses PNG/ICO — that is why the set has both.
- apple-touch-icon is used by iOS and iPadOS when adding to the home screen; Android and desktop Chrome take icons from the manifest.
Limitations
- Letters in favicon.svg are drawn with the visitor's fonts: on another system the mark may look slightly different. PNG and ICO are exactly as in the preview.
- The dark variant is generated for designer icons; in your own SVG add @media (prefers-color-scheme: dark) yourself — sanitising keeps it.
- A raster source smaller than 512 px gives blurry 192/512 icons — the tool warns about it.
- Animated GIF/WebP: the first frame is used.
Privacy
- The image is not uploaded to a server: everything is drawn in this tab, and files are local blob: links.
- Only settings are saved in localStorage: designer options, app name and colours, preview modes. An uploaded image is not restored after a reload.
- Analytics receives only the fact of a generation or download and a category (source “image/letter”, file type).
- The result reaches us only if you send a request yourself and keep the “Attach the result” box ticked — the form shows exactly what will be sent. Files and images are never sent with a request.
Related tools
All tools · 40
Image compressor (WebP/AVIF)Drop images in — WebP, AVIF or JPEG by quality or a target size in KB, a 1:1 before/after slider, srcset and <picture>, batch ZIP. All in the browser.
Link preview (Open Graph) checkerPaste HTML or fill in fields and see how a link looks in Telegram, WhatsApp, VK, Facebook, X, LinkedIn and Slack. Checks for og:image, text length and twitter:card, plus a ready <head> block.
JSON, YAML and CSV converterConvert between JSON, YAML and CSV with formatting, key sorting, syntax errors pinned to the exact spot, and a data tree.
Regex testerMatches and groups highlighted as you type, replace, a step-by-step breakdown of the pattern, a library of ready patterns and freeze protection.
Cron expression helperA cron expression ↔ plain language, the next runs in your time zone, a schedule builder and variants for Linux, Quartz, GitHub Actions and Kubernetes.
Base64, hashes, UUID and ULIDBase64/base64url, Base32, HEX, URL and HTML both ways, hashes of text and files of any size (SHA-256, SHA-3, BLAKE3, MD5, CRC-32), HMAC, checksum verification, generating and inspecting UUID v4/v7, ULID and NanoID.Need a website or a PWA built end to end?
InterLAB builds websites and web apps: icons, manifest, offline mode, install to the phone and careful layout. The first conversation is free.
- The first short conversation is free — we choose the format
- NDA — yours or ours
- Pricing after a brief and an agreed scope