Bulk Image Resizer
Batch resize photos and graphics to one width, height, box or percentage, then download each file or the whole set as a ZIP. Images are decoded and re-encoded on a canvas in your browser — they are never uploaded.
or click to browse — JPG, PNG, WebP, GIF, BMP, AVIF · nothing is uploaded
How to use
- Drop images onto the drop zone or click to choose several at once. Each one is listed with its pixel size and file size.
- Pick a resize mode — fit within a box, by width, by height, exact size or by percentage — and enter the numbers.
- Leave "Don't enlarge" ticked so small images are not blown up, and choose the output format and quality.
- Click Resize images. Each file is processed in turn and shows its new dimensions and size.
- Download images one by one, or click Download all (ZIP) to get every resized file in one archive.
Examples
IMG_2041.jpg 4032×3024 (landscape) → IMG_2041-1440x1080.jpg IMG_2042.jpg 3024×4032 (portrait) → IMG_2042-810x1080.jpg
banner.png 1600×900 → centre 900×900 kept Don't enlarge ticked → banner-900x900.png Don't enlarge unticked → banner-1080x1080.png
scan.bmp 2480×3508 → scan-620x877.png
Supported formats
- Input: JPEG, PNG, WebP, GIF (first frame), BMP and AVIF — anything your browser can display. HEIC/HEIF works only in browsers that can decode it, such as Safari.
- Output: JPEG, PNG or WebP, named <name>-<width>x<height>.<ext>. "Same as input" keeps JPEG, PNG and WebP; GIF and BMP become PNG, AVIF becomes WebP and HEIC becomes JPEG.
- Download all: a standard .zip built on your device with the JSZip library, which is fetched from cdnjs only when you click that button.
Privacy
Your input is processed in your browser and is never uploaded. The first time you use the tool, your browser downloads its open-source processing library from cdnjs.cloudflare.com — the library is downloaded, your data is not sent. Privacy policy.
Limitations
- Re-encoding removes EXIF, GPS and other metadata. Photos are rotated upright using their EXIF orientation first, so they still display the right way round.
- Colour profiles are not carried over: the browser converts to sRGB, so wide-gamut (Display P3 or Adobe RGB) photos can look slightly less saturated.
- Animated GIFs and animated WebP/AVIF files become a single still frame.
- JPEG and WebP output is lossy, so every re-save loses a little detail; PNG keeps every pixel but is much larger for photos.
- Very large images are limited by canvas memory: outputs are capped at 16,384 px per side and 50 megapixels, and phones may fail sooner on huge photos.
FAQ
How do I resize many photos to the same width?
Choose By width, type the width in pixels (for example 1200) and click Resize images. Each photo keeps its own aspect ratio, so the heights differ. To force every image to identical dimensions use Exact size instead.
What is the difference between Fit within a box and Exact size?
Fit within a box scales each image down until it fits inside the width and height you give, keeping its shape, so a 3:4 portrait photo in a 1920 × 1080 box comes out 810 × 1080. Exact size always outputs the dimensions you type: with Keep aspect ratio ticked it crops the centre to fill, otherwise it stretches.
Are my images uploaded to a server?
No. Each image is decoded, resized on a canvas and encoded again inside your browser. The only network request is the one-time download of the JSZip library from cdnjs when you choose Download all (ZIP); your files are not sent.
Why is my resized PNG bigger than the original JPEG?
PNG stores every pixel without loss, which suits screenshots and graphics but makes photographs large. Choose JPEG or WebP output with a quality around 80–85 for photos.