Shrink images in your browser
Bulk Image Optimizer compresses and converts JPG, PNG, WebP, GIF, and BMP files to modern WebP (or optimized JPEG/PNG) in parallel — no uploads, no sign-up, no tracking. Everything runs on your device.
How to use Image Optimizer
Four simple steps — your images are converted locally in your browser and never uploaded anywhere.
Add images
Click the dropzone to browse, or drag-and-drop multiple JPG, PNG, WebP, GIF, or BMP files. You can keep adding more files later.
Choose settings
Pick an output format (WebP, JPEG, or PNG), set a quality level, optional max dimension, and filename behavior on the right.
Click "Optimize all"
Files are processed in parallel (up to 4 at once) using the Canvas API. Each row updates live with new size and savings percentage.
Download results
Grab everything as a single .zip (preserving folder structure if you dropped a folder), download files individually, or use the per-file button.
Truly private
Images are decoded, resized, and re-encoded entirely in your browser. They never touch a server — verify it in your DevTools Network tab.
Parallel & fast
Up to 4 images are processed at once using the Canvas API. Most photos compress in under a second on a modern device.
Modern WebP
WebP produces files 25–35% smaller than JPEG at equivalent quality. Perfect for the web and supported by every modern browser.
Bulk ZIP export
Process hundreds of files and download them all as a single .zip — folder structure from dropped folders is preserved.
Full control
Choose format, quality (1–100), and max dimension. Per-file savings are color-coded so you can spot files that didn't shrink.
Open & free
Open source, MIT licensed, no watermarks, no sign-up, no rate limits. Built on JSZip and browser-image-compression.
Frequently asked questions
No. Bulk Image Optimizer runs entirely in your browser using JavaScript and the Canvas API. Your images are read into memory on your own device, decoded, resized, and re-encoded there — the result is offered as a download. They never touch any server. You can verify this by opening your browser's DevTools → Network tab; no image data is sent anywhere while you optimize.
WebP is a modern image format from Google that produces files 25–35% smaller than JPEG at equivalent visual quality, and supports transparency like PNG. It is now supported by Chrome, Firefox, Edge, Safari (14+), and all major mobile browsers. For maximum compatibility you can still output JPEG or PNG.
WebP decoding (displaying WebP images) is supported in all modern browsers. WebP encoding (creating WebP files via canvas) is supported in Chrome, Firefox, Edge, and Safari 14+. If your browser does not support WebP encoding, the app shows a banner at the top and WebP output falls back to PNG so you still get a usable file. JPEG and PNG output always work.
Canvas-based image processing strips EXIF metadata (camera model, GPS location, timestamps, orientation, etc.) by design. This is actually a privacy benefit — your location data is removed. The "Keep EXIF metadata" option is reserved for a future worker-based pipeline that re-injects metadata after encoding. If you need to preserve EXIF, use a desktop tool like ImageMagick or exiftool.
Animated GIFs are flattened to a single still frame (the first frame) when converted — animation is not preserved. BMP files are decoded and re-encoded in your chosen format, typically shrinking them by 90%+. If you need to preserve GIF animation, keep the original .gif or use a dedicated GIF optimizer.
There is no artificial limit. The only constraint is your device's available memory — very large images (over ~50 megapixels) or hundreds of files at once may slow down or fail on low-memory devices. The app processes up to 4 files in parallel to keep memory usage bounded.
This can happen when the original is already aggressively compressed (e.g., a tiny WebP or a well-optimized JPEG) and you re-encode at high quality, or when converting a lossy format to PNG (which is lossless and often larger). The app shows a red "bigger" badge so you can spot these. Lower the quality slider or stick with the original format to avoid this.
Yes. Use the per-file download button on each row (appears after processing), or click "Download individually" to trigger one download per file. Note: browsers usually block or prompt when many downloads start at once — allow them when prompted, or use the ZIP option for a single clean download.