A bulk image resizer
Drag in fifty photos, get fifty web-ready ones back.
Build time ~3 hrs
Everyone needs this occasionally and the online options are cluttered with ads and upload their images. Built in the browser it's fast, private and free to run.
1. Canvas does the work
Read the file, draw it to a canvas at the target size, export as a blob. That's the core, and it's about fifteen lines. Everything else is interface and edge cases.
Build a browser-only bulk image resizer. No uploads. - Drag-drop plus a file picker. Multiple files at once. - Options: max width and/or height, keep aspect ratio, output format (JPEG / PNG / WebP), quality. - Process files one at a time with visible progress, not all at once — fifty large photos at once will exhaust memory. - Show original and resulting size per file, and the total saved. - Download individually, or all as a zip. Strip EXIF metadata by default, with a clear note that this removes GPS location. Say why that's the default.
2. Respect orientation
The classic bug: photos from phones appear rotated after processing. The image has an EXIF orientation flag that the browser honours when displaying but not always when drawing to a canvas.
Read the orientation and apply it yourself, or use the browser's image-decoding option that handles it. Test with a photo taken in portrait on an actual phone — that's the case that breaks.
3. Downscale in steps
Dropping a 4000px image straight to 400px in one draw produces a noticeably worse result than halving it repeatedly. Two or three steps looks dramatically better and costs milliseconds.
4. Don't blow up memory
Fifty 12-megapixel photos held as canvases at once will crash a tab. Process sequentially, release each canvas after export, and let the browser reclaim between files.
Show the file size saved, per image and in total. It's the number people came for and it makes the tool feel worth using.