LeanImg

Bulk Resize Images

This page runs the same engine as the single-image resizer, pointed at a queue: the queue takes ten files or 50 MB, whichever fills first, with one settings panel commanding all of them, and a ZIP at the end so you are not clicking ten download buttons. The details that matter live in the mix — how fixed dimensions treat assorted shapes, which formats convert on the way out, and how the output files get named.

Loading resizer...

One panel drives every file in the queue

There are no per-image settings: the note under the quality slider says the same settings apply to all your images, and the button resizes the entire queue in one pass. That design is fast when the set is uniform and needs planning when it is not.

For a mixed bag, percentage mode is the safe instrument — 25%, 50% or 75% shrinks every file in proportion and no shape is forced on anything. Fixed pixel dimensions suit a uniform set, and the do-not-enlarge toggle is worth switching on so a stray small file in the queue is not blown up past its detail. When portraits and landscapes both need the same exact box, run them as two separate batches; a single box cannot fit both orientations without cropping them differently.

Formats in the mix, and the two that convert

JPG, PNG and WebP files each come back in their own format with their own encode. Two inputs are exceptions: GIF and AVIF are written out as PNG, because browsers can decode both onto a canvas but cannot encode either back from one. The mix itself is no problem — the queue happily holds all five input types at once, and each file's decode path is chosen by what the file is, not by what its neighbours are.

Animated GIFs additionally lose their motion — one frame is resized, and the result card says so. Errors stay contained: files are processed one after another, each inside its own failure boundary, so a corrupt file in position three gets an error label on its own row while the remaining seven finish normally. You can fix or remove the failed one and run again without redoing the rest.

Downloads, the ZIP and the naming scheme

Every finished row carries its own download button, and the summary bar offers "Save All as ZIP" once results exist. Inside the archive each file keeps its original base name with the new dimensions appended: a beach.jpg resized to 800 x 600 arrives as beach-800x600.jpg, which tells you at a glance which run produced it and keeps it from colliding with the original in your downloads folder.

Collisions inside the archive are handled rather than silently lost — two queued files that would produce identical output names get a numbered suffix, so the ZIP always contains one entry per source. If you rely on names downstream, scan them once after extraction; the dimensions suffix is predictable, the numbering only appears when sources collide.

Frequently Asked Questions

Can I feed it a whole folder?

Not as a folder — web pages receive individual files from the picker, so select the images inside it, ten per round. For a directory tree holding hundreds of photos, batch software installed on your machine is the honest recommendation.

Can each image get its own target size?

Not within one run; the queue shares one configuration. Run consecutive batches with different settings, or use percentage mode, which gives every image its own proportional result from the shared setting.

One of my ten failed. Did the rest suffer?

No — each file is processed inside its own failure boundary. The broken one shows an error on its row, everything else completes, and you can remove or replace the failure and run again.

Is there a daily cap or a paid tier for more?

No. Ten files per round is a memory guard for your browser tab, not a business model — run as many rounds as you want. The work bills your CPU, not an account.

Do larger batches upload in the background?

Nothing uploads, ever. The queue is read and processed inside the tab, and the network stays idle apart from loading the page itself. The only wait is your own processor working through the files.

Why did the GIFs in my batch come back as PNG files?

Browsers cannot write GIF from a canvas, so those results are encoded as PNG. An animated source also keeps only its first frame, and the result card tells you when that happened.

Other resize guides

Resize Images Online — Free Image Resizer