Skip to content

Latest commit

 

History

8 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rinse

Shows you the metadata hiding in a photo, then hands back a copy with none of it. Runs entirely in your browser tab.

Ko-fi License Tests

Phones write a lot into a photo file. GPS coordinates, camera make and model, the exact time it was taken, often the app that edited it. All of that travels with the file when you post it somewhere.

Most of the "remove EXIF online" tools upload your photo to a server to strip it, which means handing a stranger the exact file you were worried about. Rinse does the whole thing locally. Open the Network tab and watch: it never opens a connection.

It also shows you the data before wiping it. You get the actual coordinates with a link to that spot on a map, the camera, and the timestamps. Seeing it is usually what convinces people to bother.

Use it

Open index.html in a browser, or host the folder on any static server. No build step and no dependencies. It's a page, a 200-line EXIF reader, and nothing else.

Drop a photo in, read what it was leaking, click Download clean copy. Your original on disk is never touched.

How the wipe works

The clean copy gets redrawn from pixels onto a fresh canvas and re-encoded. Metadata lives in the file's headers rather than the pixels, so a new encode simply has none. No EXIF, no GPS, no embedded thumbnail, no maker notes.

The tradeoff is that a JPEG gets recompressed once, at quality 0.95, and the embedded colour profile is dropped along with everything else. For a photo you're about to post that's fine. PNGs re-encode losslessly.

What it reads

exif.js is a small JPEG EXIF reader that pulls only the fields that actually expose you.

Field Why it matters
GPS latitude / longitude Where the photo was taken, often someone's home
Camera make / model Ties separate photos to the same device
Date taken / modified When you were there
Editing software What you used, sometimes your OS

It isn't a full EXIF library. A malformed file degrades to "metadata present" rather than crashing, since a privacy tool falling over on the file you were worried about is the worst possible failure.

Files

index.html      the whole app plus landing page, inline
exif.js         the EXIF reader, works in browser and Node
exif.test.js    node exif.test.js, builds a JPEG with GPS and reads it back
image-policy.js validates file signatures, MIME types, size and dimensions
image-policy.test.js covers JPEG, PNG, spoofed files and safety limits
node exif.test.js
node image-policy.test.js

Limits

Reads EXIF from JPEG. PNGs rarely carry EXIF and are still fully wiped on download, you just won't get the "here's what was in it" readout.

The wipe re-encodes. That's the mechanism, which also means it isn't a lossless metadata edit.

It reads the fields that matter, not all 400 EXIF tags. The download strips everything regardless.

More tools

  • Carryover, AI chat context transfer for ChatGPT, DeepSeek and Grok
  • Invisibles, reveal and strip hidden Unicode from text
  • Search Restore, add archive links and load more Google results on demand

MIT licensed. Ko-fi if it was useful.

About

Reveal the hidden GPS, camera and timestamp data in a photo, then wash it off. Runs in your browser, nothing is uploaded.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages