How to use
- Drop your photos into the upload box, or click to pick them from disk. JPEG, PNG and WebP are accepted, and you can queue a whole folder at once.
- Watch each row as it processes. A yellow badge reports how many metadata fields were found in the original (and flags GPS separately); a green Output verified — no metadata found badge confirms the cleaned copy came back empty.
- Check the before/after size for each file — the re-encode usually shrinks JPEGs slightly and can grow PNGs.
- Press Download on any row, or Download all to save every cleaned copy in sequence. Your original files are never touched.
How it works
Stripping happens by throwing the metadata away rather than editing it out. Each photo is handed to createImageBitmap(), which decodes the compressed file into raw pixels. Those pixels are painted onto a fresh, blank <canvas>, and the canvas is re-encoded with canvas.toBlob(). Because a canvas holds only a grid of colour values — no EXIF block, no XMP packet, no embedded thumbnail — everything that was wrapped around the original pixels is left behind in the file you dropped, which is then discarded.
Take a marketplace photo called couch-for-sale.jpg, 3.8 MB, 4000 × 3000 pixels, shot on a phone. Parsing it with exifr returns 27 populated fields: the camera make and model, the exposure settings, the capture timestamp, and a GPS pair at latitude −37.8136, longitude 144.9631 — the exact spot in Melbourne where the shot was taken. After the canvas round-trip, JPEG output is re-encoded at quality 0.95, giving a 2.7 MB file. The tool then parses that output with exifr a second time; the result is empty, so 0 fields remain and the green badge appears. The 27 fields, GPS included, are gone because nothing copied them across.
PNG follows the same path but encodes losslessly, so its pixels are bit-identical to the decoded original — only the metadata differs.
Use cases & limitations
The moment this matters is just before a file leaves your control: listing furniture, posting a rental photo, emailing an attachment, or handing images to a client. Any of those can carry the coordinates of your home. Cleaning first, then confirming with the green badge, means the coordinates never travel. To inspect exactly what a photo is carrying before you strip it, open the EXIF viewer; to trim the tracking parameters off any link you paste alongside the image, the URL cleaner does the same job for URLs.
The honest limitations: everything is discarded indiscriminately, so genuinely useful metadata — copyright tags, colour profiles — goes with the rest, and a JPEG re-encoded at 0.95 is not byte-identical to the source. Very large photos are also rejected, because browsers cap a canvas at 16384 pixels per side, so a stitched panorama wider than that must be resized before cleaning. If you only want smaller files rather than metadata removal, reach for the image compressor instead.
Privacy note
Decoding, the canvas redraw, the re-encode, and both exifr verification passes all run inside your browser tab. The image bytes are never uploaded — you can disconnect from the network after the page loads and clean photos exactly as before. Nothing is stored and no copy reaches us, which is the whole point: metadata about where and when a photo was taken is only truly removed if the removal happens on your own device.