Why another favicon generator
The first page of results for “favicon generator” is mostly small independent sites — which is good news, because it means the ranking is not locked up by a big brand. What those sites get wrong is not the conversion, it is the finishing: you get a favicon.ico and maybe three PNGs, then you are on your own for the manifest, the maskable variant and the tags that actually go in your document head.
So this one is built to finish the job in one pass:
- The whole set, not just the .ico. favicon.ico with 16/32/48 inside it, favicon-16x16.png, favicon-32x32.png, apple-touch-icon.png at 180, Android 192/512, and a maskable 512 rendered on an opaque background with the content inside the safe zone.
- Snippets that match your stack. A ready-to-paste HTML head block, and a Nuxt 3 app.head config that generates the same tags — because “paste this into nuxt.config.ts” is what actually saves time if you work in Vue.
- You can see it before you ship it. Real-size previews at 16 and 32 pixels plus a mock browser tab in light and dark mode, so a logo that turns to mush at 16 px is caught here instead of in production.
- Honest about what transparency costs you. iOS composites a transparent home-screen icon on black, and maskable icons need an opaque safe zone. The tool says so and puts your background colour behind both, rather than shipping an icon that breaks on one platform.
Everything is produced by canvas in your tab: the file you drop is never uploaded, no share link is created, and the ZIP is assembled locally. The .ico container is built byte by byte with PNG payloads, so the file works in every browser that matters today — including the 16 px tab icon, which is the size people actually see.