Two hundred phone photos at 12 MB each, and a CMS that wants WebP files no wider than 1920 px: this page is built for that job. To compress images in bulk, it sends every file through up to four steps (crop, resize, convert, rename) and returns the results as single files or as one ZIP. The work happens in the browser tab.
Four cards, all switched on at load
When the page opens, crop is set to 500×500, resize to an exact 100×100, the format to WebP at 80% and the name to image_thumbnail_{01}. If you only want smaller files, click a preset or switch off the Crop card and the Scale & resolution card before you start.
How to compress images in a batch
- Set the four cards by hand or click a preset. Each card has its own toggle.
- Drop files or a whole folder on the drop zone. The buttons Select multiple files and Select entire folder do the same. A dropped folder is scanned including its subfolders.
- Choose the target format and the quality. The name pattern box shows a preview built from a sample file name.
- Press Process all. The files run one after another while a progress bar fills.
- Read the size column. Download a single file with the icon in its row, or press Download as ZIP.
What the five presets set
- Thumbnails: crop 500×500, resize 100×100, WebP 80.
- Web optimization fits the longest side into 1920 px and saves WebP at 80, with no crop.
- Social media 1:1 crops 1080×1080 from the centre and writes JPEG at 85.
- Maximum savings scales to 75% and saves WebP at 65.
- Near-lossless keeps the size and saves WebP at 90.
Where a photo gets cut, stretched or heavier
Crop cuts a fixed pixel box and never scales. Pick 16:9 and the box is 1920×1080, so a 4000×3000 photo loses most of its area unless you resize first. The anchor (centre, top, bottom, left, right) decides which part stays. Keeping the anchor on top often saves faces in portraits.
Resize has five modes. Exact stretches the image to both values. Fit never enlarges. Width and height keep the proportions. Percent runs from 10 to 200.
Quality runs from 5 to 100. PNG ignores it, so a photo saved as PNG can end up larger than the original JPEG, and the row then shows a plus sign in amber. Only WebP, JPEG and PNG come out, while JPG, PNG, WebP, AVIF, BMP, GIF and SVG go in. A GIF keeps its first frame and an SVG becomes a pixel image. For JPEG, transparent areas take the background colour you choose, white by default. EXIF data is not written. With the format card switched off, a result keeps the type of the source file when the browser can write it (JPEG, PNG or WebP). Other sources, such as GIF or SVG, come out as PNG. The file name always ends in the extension of the real type. If the browser cannot write the format you chose, it saves PNG, names the file .png and shows a message.
Name tokens and a flat ZIP
The pattern accepts {name}, {index}, {w}, {h} and the padded counters {01}, {001} and {0001}. With the pattern holiday_{001} and a start index of 40, you get holiday_040, holiday_041 and so on. The ZIP has no folders. Two files from different folders can therefore get the same result name unless the pattern contains a counter.
Where the 200 photos go
Nowhere. The browser reads each file, redraws it on a canvas and encodes it in your tab. Pressing Process all sends no request. Single downloads and the ZIP are built in memory. The clipboard is not used. A file the browser cannot handle gets an error badge in its row.