How the Bulk File Converter Works
AnyTool Bulk File Converter batch-converts many images to one chosen format entirely in the browser. You add any number of images and pick a single target codec — PNG, JPEG, WebP or BMP. For each file the engine decodes the source: it tries createImageBitmap first (fast and broadly compatible), and routes SVG (and anything createImageBitmap rejects) through an HTMLImageElement so the browser rasterises it. The decoded image is drawn onto a 2D <canvas>, optionally downscaled to a maximum width/height while preserving aspect ratio — using the pica resizer (loaded lazily, with a graceful drawImage fallback) for high-quality reduction — and then exported with canvas.toBlob(mimeType, quality). For lossy targets (JPEG, WebP) a quality value from 0.1–1 is applied; for JPEG and BMP, which have no alpha channel, the canvas is first filled with a user-chosen background colour so transparent pixels do not turn black. The output blobs become individual downloads or are packed into a single .zip with JSZip — bundled into the app and served same-origin, never from a CDN — using STORE (no re-deflate) because image bytes are already compressed. Available output formats are probed at runtime with a 1×1 canvas.toDataURL test, so a codec the browser cannot actually encode is never offered.
- Each image decoded via createImageBitmap, with an <img> fallback for SVG
- Redrawn on a canvas and re-encoded with canvas.toBlob(type, quality)
- Optional max width/height resize, downscaled with pica (drawImage fallback)
- JPEG/BMP transparency flattened onto a chosen background colour
- JSZip packs a .zip locally (STORE); no CDN, no upload, no file limit
