Bulk Image Resizer
Resize multiple images to specific dimensions at once.
Drag & Drop Images
or click to browse files
About Bulk Image Resizer
Give a mixed pile of photos one consistent dimension. You choose a single rule, it is applied to every file in the selection, and the results come back as one ZIP. The point is uniformity: a product grid where every thumbnail is the same width, a documentation folder where no screenshot is twice the size of its neighbour, an email attachment set that fits inside a size limit.
The three resize modes
Scale by Width sets every image to the width you type and works the height out from each file’s own proportions. Landscape and portrait shots end up the same width and different heights, which is what a single-column layout or a fixed-width blog body wants. Scale by Height is the mirror image and is the right choice for a horizontal filmstrip or a row of logos that must sit on a common baseline. Exact Dimensions forces both numbers on every file and will visibly stretch anything whose shape does not already match — it is labelled as a stretch for that reason. If you need a common shape without distortion, crop first with the Image Cropper or the Social Media Resizer, then batch-resize.
Limits and formats
Dimensions must be whole numbers above zero and are clamped at 20,000 pixels a side, which is well past anything a browser canvas will reliably allocate anyway. JPEG, PNG and WebP files keep their own format through the batch; anything else a canvas cannot encode is written as PNG, and the ZIP entry is renamed to match what was actually produced rather than keeping a now-wrong extension. Transparency survives in PNG and WebP. Animated GIFs do not survive as animations — a canvas only ever holds one frame.
Files are processed one after another rather than all at once, so a long run does not lock up the tab or spike memory. If an image cannot be decoded it is marked with an error, counted in the summary at the end, and skipped; the rest of the batch finishes normally and the ZIP simply does not contain it. Re-running after changing the width or height redoes everything, while re-running with the same settings does nothing, so the button is safe to press twice.
Resizing changes pixel dimensions, not compression settings. If the goal is smaller files rather than smaller images, the Bulk Image Compressor lowers encoder quality while leaving the pixel grid alone — and the two chain together neatly: resize first, compress second. Both run entirely inside this tab, with no upload, so a folder of unreleased product shots never touches anyone else’s hardware.
One rule, whole selection
Match a width, match a height, or force exact dimensions. The rule is applied to every file in the batch, so mixed landscape and portrait shots come out consistent on the axis you care about.
Proportions kept by default
In the two scale modes the second dimension is derived from each image on its own, so nothing is squashed. Stretching is only possible in the mode explicitly labelled as such.
Failures do not stop the run
An image that cannot be decoded is flagged on its own row and counted at the end. The rest of the batch finishes and the ZIP is built from whatever succeeded.
Correctly named ZIP entries
Each file is saved under its own name with a resized- prefix and the extension of the format actually written, with numbered suffixes so duplicate filenames never overwrite each other.
Local from start to finish
Decoding, scaling and archiving all happen in this tab. Nothing is uploaded, which is the difference between using a tool on confidential photos and not being allowed to.
Frequently Asked Questions
Which mode should I pick?
Scale by Width when the images go into a single-column layout or a fixed-width content area — every image lands on the same width and keeps its own height. Scale by Height when they sit side by side in a row and need a common baseline. Exact Dimensions only when every source already shares the target shape, because it forces both numbers and will stretch anything that does not fit.
Can I mix landscape and portrait shots in one batch?
Yes, and the two scale modes are designed for exactly that. In Scale by Width, a landscape photo and a portrait photo both come out at your chosen width; the portrait one is simply taller. Avoid Exact Dimensions with a mixed batch — that is the combination that produces stretched faces.
Is there a maximum size or file count?
Dimensions are capped at 20,000 pixels per side, and there is no file count limit in the code. The practical ceiling is your device memory, since each file is held along with a preview and its resized copy. Hundreds of ordinary photos are fine on a laptop; on a phone, split the job into smaller batches.
Why did some files come back as PNG?
A browser canvas can only write JPEG, PNG and WebP. Anything else in your selection — a GIF, a BMP, or a file whose type the browser could not identify — is encoded as PNG, and the ZIP entry is renamed with a .png extension so the contents match the filename. Files already in one of the three supported formats keep it.
What happens to animated GIFs?
They come out as a single still frame. Resizing runs through a canvas, and a canvas holds one image at a time, so the animation cannot survive. If the animation matters, resize it with a tool that decodes every frame instead.
Will resizing also make the files smaller?
Usually, because fewer pixels means fewer bytes — but that is a side effect, not a compression setting. If you want to control file size directly, run the output through the Bulk Image Compressor, which lowers encoder quality while keeping the dimensions you just set.
I changed the width and pressed the button again. Does it redo everything?
Yes. Results are tagged with the settings that produced them, so changing the mode, width or height invalidates the batch and every file is redone. Pressing the button again without changing anything reprocesses nothing, and files added mid-run are picked up on the next press.
Nothing downloads and I get an error about no resized images.
That means no file finished successfully — usually because the batch is entirely files the browser cannot decode, such as HEIC photos from an iPhone or a RAW camera format. Convert HEIC files first with the HEIC to JPG tool, then bring the JPEGs back here.
Are the images uploaded while they are processed?
No. Every step — reading the files, drawing them at the new size, encoding them and building the ZIP — happens inside this browser tab. Disconnect from the network after the page loads and the batch still runs to completion.