100% browser-based · zero uploads · ZIP download

Bulk Image Resizer

Resize hundreds of images at once — for free, in your browser. Drop a folder, choose one size, and grab a single ZIP when it's done. No sign-up, no uploads, nothing to install.

Built for batches

Up to 200 images per run, processed 3 at a time so your browser stays responsive.

One rule, every image

Pick a single resize rule and format — apply it to the whole batch in one click.

Download as ZIP

JSZip packages every resized file in-browser. One click, one archive, done.

Drop images here, or

Up to 200 images · 50 MB each · JPG, PNG, WebP, GIF, BMP

Resize settings

Applied to every image

How It Works

The bulk resizer processes every image entirely in your browser. No upload happens at any step — your photos never touch our servers.

  1. 1. Files are read locally with FileReader

    When you drop images, the browser's FileReader API decodes each file into an in-memory HTMLImageElement. We capture original dimensions and file size, then queue each image for processing.

  2. 2. Canvas resizes with high-quality interpolation

    Each image is drawn onto an HTMLCanvasElement with imageSmoothingQuality = 'high'. For large reductions (more than 50%), the tool downscales in successive 50% steps to preserve detail and avoid aliasing.

  3. 3. Encoded with canvas.toBlob()

    The resized canvas is encoded back to JPG, PNG, or WebP via canvas.toBlob() with the quality you chose. Three images are processed in parallel using Promise.all() workers — fast on desktop, safe on mobile.

  4. 4. JSZip builds the archive in memory

    When you hit Download ZIP, every output Blob is written into an in-memory archive with JSZip (STORE mode — already-compressed images don't benefit from deflate). The final ZIP is handed to the browser as a Blob URL download.

Why this beats upload-based bulk resizers

  • No upload bottleneck — 200 images of 5 MB each would take minutes to upload. Here it's instant because nothing leaves your device.
  • Privacy by design — sensitive screenshots, ID photos, or product shots stay on your machine. Nothing is logged, stored, or analysed.
  • Works offline — once the page is loaded, you can disconnect from the internet and keep resizing.
  • No file-count caps from a paywall — the only limit is your device's memory.
  • Same rule, every image — bulk-friendly modes (longest side, fit-to-box) avoid distortion when batching mixed orientations.

Tips for common bulk workflows

E-commerce product photos

Use Fit inside box at 1500 × 1500 with WebP at 85% quality. Mixed-orientation shots stay perfectly square in your storefront.

Blog hero images

Use Exact width at 1200 px with WebP at 80% quality. Heights vary, widths match — perfect for responsive layouts.

Social media uploads

Use Longest side at 2048 px with JPG at 90% quality. Matches Instagram/Twitter limits without uploading anything.

Email-friendly attachments

Use Percentage at 50% with JPG at 75% quality. Quick, predictable file-size reductions across a whole folder.

Frequently Asked Questions

Are my images uploaded anywhere?

No. Every image is read, resized, and zipped locally in your browser. Nothing is sent to a server at any point.

How many images can I resize at once?

Up to 200 images per batch, with a 50 MB cap per file. Files are processed three at a time so even mobile browsers stay responsive.

Can I mix portrait and landscape images?

Yes. Modes like Longest side and Fit inside box handle mixed orientations cleanly without distorting either group.

Will the ZIP file be smaller than the input?

It depends on your settings. Reducing dimensions or switching to WebP usually shrinks the total significantly. The ZIP itself uses STORE mode — image formats are already compressed, so further deflate gives almost nothing in exchange for a much slower archive build.

Does this work offline?

Yes. After the page loads once, you can disconnect from the internet and continue resizing batches.