AnyTool
Your files never leave your device. All processing happens locally in your browser.

How do I batch-convert multiple images to PNG, JPG or WebP at once?

Drop many images onto AnyTool Bulk File Converter, pick one target format — PNG, JPG, WebP or BMP — and it converts the whole batch in your browser, then downloads each file or all of them as a single .zip. Each image is decoded with createImageBitmap (or an <img> fallback for SVG), drawn onto a canvas and re-encoded with canvas.toBlob; JSZip, bundled into the app rather than loaded from a CDN, packs the results into a .zip. Everything runs locally — no upload, no server, no tracking, and no file-count or size limit — so your images never leave your device. You can set the JPEG/WebP quality, optionally cap the max width or height (aspect preserved, with pica for high-quality downscaling), and choose a background colour to flatten transparency onto when exporting to JPEG or BMP. Be honest about scope: this converts raster images, not documents; animated GIF/WebP keep only their first frame, SVG is rasterised at the output size, and WebP/AVIF availability depends on your browser and is detected automatically.

  • Convert a whole batch of images to one format (PNG, JPG, WebP or BMP) in the browser
  • Decoded with createImageBitmap, drawn on a canvas and re-encoded with canvas.toBlob
  • Quality slider, optional max-width/height resize (pica downscaling), transparency-fill colour
  • Download each file individually or all as a single .zip built with JSZip
  • 100% client-side — no upload, no CDN, no file-count or size limit, works offline

What is

Bulk Image Conversion

Bulk image conversion is changing many image files from their original formats into one chosen format — for example a folder of PNG, JPG, GIF, BMP and SVG files all re-saved as WebP. A 100% client-side bulk converter does this without uploading anything: each file is decoded by the browser (createImageBitmap or an HTMLImageElement), drawn onto an HTML canvas and re-encoded with canvas.toBlob(type, quality) to the target codec, with optional resizing; the converted blobs are then offered as individual downloads or packed into a single .zip with an in-browser library such as JSZip. Because canvas holds a single still bitmap, animated sources are reduced to their first frame and vector SVG is rasterised, and lossy targets (JPEG, WebP) expose a quality control.

Converters

Related terms

PNGJPGWebPBMPCanvasJSZipBatch Processing

Frequently Asked Questions

Nothing is uploaded. Every image is decoded, converted and zipped entirely in your browser, so the files never leave your device.

AnyTool Bulk File Converter is 100% client-side. When you add images, your browser decodes each one, redraws it on a canvas and re-encodes it locally, and JSZip — bundled into the app rather than fetched from a CDN — builds the .zip on your own machine. No file is sent to any server, there is no account or tracking, and the tool keeps working offline after the first load. That makes it safe for private photos and confidential assets, and there is no file-count or total-size limit because nothing is uploaded.

It reads anything your browser can decode (PNG, JPG, WebP, GIF, BMP, SVG, AVIF and more) and outputs PNG, JPG, WebP or BMP. There is no file limit.

Input can be any image format the browser can decode — PNG, JPEG, WebP, GIF, BMP, SVG and, where the browser supports it, AVIF. Output is one of PNG, JPG, WebP or BMP, chosen for the whole batch; the available output formats are probed at runtime so a codec your browser cannot encode (WebP and AVIF vary, especially on older Safari) is simply not offered. Because all processing is local, you can convert hundreds of images at once with no upload limit; very large batches just take longer and use more memory.

Animated GIF/WebP keep only their first frame, SVG is rasterised at the output size, and JPEG/BMP flatten transparency onto a background colour you choose.

A canvas holds a single still bitmap, so an animated GIF, APNG or animated WebP is converted using only its first frame — and that is flagged in the output. SVG is a vector format, so it is rasterised to a bitmap at the chosen pixel size rather than kept as vectors. JPEG and BMP have no alpha channel, so when you convert a transparent PNG or WebP to one of them the transparent areas are filled with a background colour (white by default, or any colour you pick), which the tool warns you about so the result is never silently wrong.

Yes — set a JPEG/WebP quality level and optionally cap the max width or height; larger images are downscaled with pica, smaller ones are left alone.

For the lossy targets (JPEG and WebP) a quality slider trades file size against fidelity. You can also enter an optional maximum width and/or height: any image larger than that is downscaled to fit while preserving its aspect ratio, using the pica resizer for high-quality results, and images already within the limit are untouched. Each converted file shows its original → new size and pixel dimensions so you can see exactly what changed, and a summary reports the total bytes saved across the batch.

Detailed Explanation

Methodology

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
How It Works

Formats, Options and Output

Input can be anything the browser decodes — PNG, JPEG, WebP, GIF, BMP, SVG and, where supported, AVIF — and the whole batch is converted to one target chosen from PNG, JPEG, WebP or BMP. A quality slider appears for the lossy targets (JPEG and WebP); an optional resize lets you cap the maximum width and/or height so oversized images shrink to fit while smaller ones are left untouched; and a transparency-fill colour (white, black or custom) is used when the target is JPEG or BMP. The result panel lists every file with its status, original → new size and output dimensions, summarises how many converted, how many were skipped, the total output size and the percentage of bytes saved, shows a thumbnail grid of the converted images, and lets you download any single file or all of them as a .zip. Files the browser cannot decode are skipped with a per-file error rather than failing the batch, and a per-batch warning panel surfaces honest caveats such as first-frame-only animation, SVG rasterisation and transparency flattening.

  • Inputs PNG/JPG/WebP/GIF/BMP/SVG/AVIF; outputs PNG/JPG/WebP/BMP
  • Quality slider for JPEG/WebP; optional max width/height resize
  • Transparency-fill colour for the alpha-less JPEG/BMP targets
  • Per-file original → new size, output dimensions and total bytes saved
  • Download each image or all as a JSZip .zip; undecodable files skipped
Privacy & Security

Privacy and Honest Limitations

Because every decode, resize, re-encode and zip happens in the browser with a locally bundled JSZip, your images are never uploaded, there is no account or tracking, the tool works offline after first load, and there is no file-count or total-size limit — which makes it safe for private photos and confidential assets. The honest caveats are inherent to canvas-based conversion: a canvas holds a single still bitmap, so animated GIF, APNG and animated WebP are converted using only their first frame; SVG is a vector format and is rasterised to a bitmap at the output size rather than preserved as vectors; and JPEG and BMP have no transparency, so converting a transparent PNG/WebP to them flattens the transparent areas onto the chosen background colour. Codec availability is browser-dependent — WebP encode is near-universal now but AVIF encode generally is not, and older Safari versions lag — so the tool probes what the current browser can actually encode and only offers those formats. Each of these behaviours is detected and flagged in the output so the result is never silently misleading. This is an image converter, not a document converter: for PDF, Word, Excel or PowerPoint, use the dedicated AnyTool tools.

Bulk File Converter: in-browser (AnyTool) vs typical online converters
CapabilityAnyToolTypical alternatives
ProcessingRuns in your browserUsually uploaded to a server
PrivacyImages never leave your deviceFiles sent to a third party
File / size limitNone — nothing is uploadedOften capped (count or MB)
Library sourceCanvas + JSZip bundled — no CDNServer-side ImageMagick/libvips
Output formatsPNG, JPG, WebP, BMP (probed per browser)Varies; some behind paywall
Resize & qualityMax W/H (pica) + quality sliderSometimes, often premium
TransparencyFlattened onto a chosen colour (warned)Often silent black/white fill
DownloadEach file or a .zip, built locallyServer-zipped, re-download
Works offlineYes (PWA)No
Cost / signupFree, no signupOften gated or ad-heavy

AnyTool converts and zips images locally with the Canvas API + JSZip and uploads nothing, with no file-count or size limit; it is honest about canvas limits (animated → first frame, SVG rasterised, JPEG/BMP transparency flattened, WebP/AVIF probed per browser), whereas many alternatives process server-side at the cost of uploading your files and often impose limits or paywalls.