HARTWELL LABS / PHOTOSCRUB
LOCAL · OFFLINE · NO UPLOAD
Metadata hygiene for people who post photos

See what your photos leak. Then strip it.

GPS to six decimals. The second full copy of the image hidden in the JPEG. Your camera serial, which leads to your purchase history. Photoscrub finds it passively, locally, with no upload and no account. Windows and Linux.

12leak classes
15features scored
1.8 KBclassifier
97.4%accuracy
0bytes uploaded
01 — What it finds

The leak nobody looks for, because it isn't a tag.

FindingLevelWhy it matters
GPS coordinatesHIGHExact position, 6 decimal places
Embedded thumbnailHIGHA JPEG can carry a second, complete copy of the original as a 160×120 preview
Body serial numberHIGHIdentifies the device, and through purchase history, you
XMP: City, Country, GPSHIGHA second place for the same data — cleaning EXIF is not enough
IPTC: byline, City, CountryHIGHEditorial fields people forget about
GPS in video (MP4/MOV udta)HIGHVideo has no EXIF tags; location lives in the container
PNG tEXt / iTXt / zTXt / tIME / eXIfMEDAuthor, description, comment, embedded EXIF
Artist / Copyright / Software / LensMEDWho, with what, where
Data appended after the imageMEDInvisible in preview, readable in a hex editor
Addresses, postcodes, phone numbersMEDPII in free text
ZIP: .DS_Store, Thumbs.db, sidecarsLOWUsernames and full paths inside archives
HEIC/HEIF (iPhone) and RAW extensions — DNG, CR2, NEF, ARW, ORF, RW2 — are read.
02 — The model

Not an LLM. A 1.8 KB classifier.

Logistic regression

Scored from 15 features. 1.8 KB, trained on 8,000 synthetic metadata profiles. Runs fully offline — your photos never leave the machine.

97.4% on held-out data

Measured against a test set it never saw. Small on purpose: a model you can download, read, and run without a GPU is worth more than a bigger one you can't audit.

Versioned rulesets

v1 — basic: EXIF, GPS, serial, artist, thumbnail. v2 — full: everything above plus HEIC, XMP, IPTC, PNG chunks, appended data, video GPS and PII in free text. A v1 license keeps working on v1 forever.

03 — Get it