About · How it works · Privacy
Last updated 2026-08-24 · Transparency information for this tool.
What this tool is
favigen turns a single image into 11 PNG sizes, a true multi-size favicon.ico, a site.webmanifest and the matching HTML link snippet. No account, no watermark, no generation limit.
The distinguishing detail is that no server is involved at any point. Most favicon generators upload your image, convert it server-side and hand back a download. This one works entirely inside the browser, which makes it safe for unreleased logos and internal brand assets.
How it works (fully client-side)
- Read —
FileReaderloads the file as a data URL, or as text for SVG. An SVG without width and height gets explicit dimensions injected from its viewBox ratio. - Resize — one offscreen
<canvas>per size, drawn withdrawImagein contain mode. Background colour, padding, rounded corners and the circular mask are applied here. - PNG encoding —
canvas.toBlob('image/png')uses the browser's built-in encoder. - ICO encoding — the ICONDIR (6 bytes) and ICONDIRENTRY table (16 bytes each) are written by hand. Sizes up to 48px are embedded as 32-bit BGRA BMP/DIB for maximum compatibility, larger ones as PNG to keep the file small. 256px is recorded as 0 exactly as the format requires.
- ZIP packaging — local file headers, the central directory and the EOCD record are written directly, with CRC-32 computed in JavaScript. The archive is stored uncompressed because PNG and ICO payloads gain almost nothing from deflate.
- Download — via
BlobandURL.createObjectURL, straight to your disk.
No external image library is involved. The ICO and ZIP encoders were written for this site and their binary output is covered by unit tests.
Supported specs
- Input: PNG · JPEG · WebP · SVG · GIF · BMP · AVIF (anything your browser can decode), up to 20MB
- PNG output: 16 · 32 · 48 · 64 · 96 · 128 · 150 · 180 · 192 · 256 · 512 px
- favicon.ico: any selected sizes combined into one multi-size file (16·32·48 by default)
- site.webmanifest: sizes from 144px up, registered as
purpose: "any maskable" - HTML snippet: only tags for sizes you actually generated, so nothing 404s
Limitations
- Resampling is whatever the browser Canvas provides, so results differ from a dedicated image editor with custom sharpening.
- SVGs referencing external fonts or images lose those references when rasterised.
- Animated GIF and WebP contribute their first frame only.
- ICO tops out at 256px by format definition; 512px is delivered as PNG only.
- The ZIP is uncompressed, so the archive is roughly the sum of its parts.
Privacy
Your image is never transmitted; it is processed inside the browser. Nothing about the image, its filename or the generated output is stored or logged. Anonymous page analytics and advertising scripts operate at the page level and have no access to the image data. There is no sign-up, no login and no server-side storage.
Who runs this
- Operator: bal.pe.kr — a solo-run micro SaaS portfolio
- Contact: comsamo84@gmail.com
- More tools: bal.pe.kr tool collection