Bulk Image Optimizer & Batch Photo Processor
Your first image will appear here
How to use the image optimizer
Back to the toolResize, watermark, convert and compress run as one pipeline over every image you add, and no file ever leaves your browser.
- 01
Add the images you want to optimize
Drag them in, press Upload images, or paste from the clipboard anywhere on the page. Up to 25 MB each · JPG, PNG or WebP. A file that is too big, or in a format this list does not name, is set aside in a skipped list instead of failing the run, so one bad file never costs you the batch.
- 02
Turn on the steps you need
Four blocks run in a fixed order: Resize, Watermark, Convert, Compress. Convert and Compress start on, the other two start off and sit collapsed on one line. Switching a block off keeps everything inside it for the rest of the session, so turning it back on costs nothing.
- 03
Run every step in one pass
Each image is drawn once and carried through the blocks you left on, so four steps cost one redraw rather than four saves stacked on each other. The button becomes Pause with a running count: press it to stop after the current image, press it again to finish the rest. Nothing runs until you ask.
- 04
Read the table, then take the files
Every row carries the same image before and after, so a step that changed nothing shows up instead of being assumed. Finished rows get a download and a copy button and go into Download ZIP. Change a setting afterwards and the finished rows dim until you run again.
How to read the optimizer results table
Each row answers two questions about one image: what changed, and — when nothing did — which step decided that and whether you can do anything about it.
Result table columns
- Image
- The thumbnail and the name of the file you will get, which is the original name plus -optimized. Press the thumbnail to see the image full size. A second line under the name appears only when the row needs to tell you something.
- Dimensions
- Pixel size before and after. A row with no output shows only the “before” half, because there is no second measurement to report — not because the second one is zero.
- File size
- File size before and after, and the one number worth checking against your own target. Converting and compressing can both fail to help on an image that was already small, and this column is where that shows.
- Result
- One badge per row. Queued rows leave it empty on purpose: nothing has happened to them yet, and an empty cell says that better than a fifth badge would.
- Actions
- Download and copy on a finished row, Retry on a failed one, nothing on the rest. A row with no output has no buttons here, because there is no file to hand you.
Result badges
- Processing…
- This image is being worked on right now. Images are processed one at a time, so exactly one row carries this badge during a run.
- Done
- The image went through every block you left on and there is a file to take. It is in the ZIP and it has its own download button.
- Failed
- This image could not be processed — hover the badge for the reason. It only affects its own row: the rest of the batch keeps going, and the failed row is left out of the ZIP.
- Unchanged
- Green, not red: the run finished and decided the original was already the better file. You keep the original, the row keeps its original name, and the next group says which step made that call.
Why a row comes back unchanged
- Already under the target size.
- The image was already lighter than the size you asked for, so it was never redrawn. Ask for something smaller if you actually want it re-encoded.
- Couldn’t reach the target without wrecking the image — this is as small as it goes.
- Compression ran all the way down and still could not hit your target without visible damage, so you were given the original rather than a ruined copy. A smaller pixel size usually gets there where more compression cannot.
- PNG has no quality setting, so Compress can’t make it lighter — choose WebP in Convert.
- PNG stores exact pixels and has no quality dial to turn, so compression alone cannot shrink it. The fix is a different format, which is why this sentence points at the Convert block rather than at a setting.
- Already WebP.
- The image was already in the format you selected, so converting it would only re-encode it and lose a little quality for nothing. Turn on another step if you still want this image touched.
- Nothing to change.
- Every block you left on would have produced exactly what you already have — a resize to the size it already is, for instance. Nothing was encoded, which is why this costs no quality.
- This browser can’t save WebP.
- Your browser can read this format but cannot write it, so there was no way to produce the file you asked for. This is a limit of the browser, not of the image; another browser may well manage it.