Step 1 — Decode
Your file is read with the standard File API and decoded into a bitmap using the browser's native image decoder (HTMLImageElement) or, for SVG, the SVG renderer. This is the same decoder Chrome, Safari, and Firefox use for every image on the web.
Step 2 — Transform
The decoded bitmap is drawn onto an offscreen canvas at the requested size. Resizing uses bicubic-quality interpolation; multi-size ICO output draws each size independently so small icons stay crisp instead of being naively downsampled from a single large bitmap.
Step 3 — Encode
The transformed bitmap is encoded into the target format. PNG and JPEG go through canvas.toBlob; ICO is written byte-by-byte to match the Windows specification; favicon packs zip multiple outputs with JSZip.
Step 4 — Deliver
The encoded blob becomes a URL via URL.createObjectURL and is offered to you as a download. The blob lives only in your browser's memory until you close the tab.