Archive Tools
Resize & Convert
Bulk resize and re-encode images for the web. Optimized WebP or JPEG, local processing, one ZIP download.
Drop images here
or
JPG, PNG, WebP. One image or many. Processed locally, nothing is uploaded.
About this tool
A small browser-only utility for the kind of image wrangling that usually means opening Lightroom or running a shell script. Drop in a batch of source files - from a phone, camera, or folder on disk - pick a target width and output format, and download the whole batch as a ZIP with the original filenames preserved.
Output defaults to WebP at 1920px width, which is a good pairing for the modern web: roughly 5-10 times smaller than the equivalent high-quality JPEG at the same dimensions, with visual quality that is essentially indistinguishable at normal viewing sizes. Every modern browser supports it. If you need the older format, JPEG is one click away.
Nothing is uploaded. Images are decoded, resized, and re-encoded entirely in your browser using the browser's native canvas and WebP encoders. JSZip is fetched on click; exifr and piexifjs are fetched once when an image carrying EXIF is first processed. No file ever leaves the browser.
EXIF preservation. The browser's canvas API strips all metadata when it re-encodes an image - this is a privacy feature, not a bug. To put metadata back, the tool reads the source file's EXIF separately, then writes a fresh EXIF chunk into the output WebP's RIFF container (the same chunk format any standard reader looks for - sharp, exifr, exiftool, Lightroom, Bridge). Capture date, camera body, lens, exposure time, aperture, ISO, focal length, and 35 mm-equivalent focal length all travel with the file. GPS is deliberately not carried - location data does not flow out of the camera and into the public archive.
Single-image downloads come straight as a .webp with EXIF baked in. Batch downloads come as a ZIP of .webp files, each carrying its own EXIF. If the bake step ever fails (CDN load problem, exotic source variant), the tool falls back to writing a <basename>.exif.json sidecar in the ZIP so no metadata is silently lost.
Practical batch ceiling: around 100 images on a desktop browser, 50 to 75 on desktop Safari, 15 to 30 on mobile Safari. The bottleneck is the in-memory ZIP blob before download, which scales with total output size.