Skip to main content

Photo MetaClean

Remove sensitive metadata from JPEG and PNG images before you share them. One command, three modes.

Why

Every photo taken with a smartphone quietly carries GPS coordinates, camera model, software and exact timestamps in EXIF. When you email it, upload it to a client portal, or post it publicly, that data travels with the file — a geotag can reveal your home, your office, or a private shoot location. Photo MetaClean strips it at the byte level: no re-encode, no quality loss, no cloud upload.

Install & Run

Zero dependencies — Python standard library only.

# Inspect what's hidden in an image
python -m tools.photo-metaclean photo.jpg

# See the full metadata list (GPS, camera, timestamps)
python -m tools.photo-metaclean photo.jpg --verbose

# Write a sanitized copy
python -m tools.photo-metaclean photo.jpg --clean
# -> photo_clean.jpg

# Overwrite the original
python -m tools.photo-metaclean photo.jpg --in-place

# Verify the tool works on your machine
python -m tools.photo-metaclean --self-check

Works with multiple files at once: python -m tools.photo-metaclean *.jpg --clean.

Options

Flag Description
--clean Write cleaned copy as <name>_clean.<ext>
--in-place Overwrite the original file after cleaning
--verbose List all metadata found before cleaning
--self-check Run a built-in correctness test

Why the byte-level strip

Most editors "remove metadata" by re-encoding the image — losing quality and, in some cases, leaving thumbnail or maker-note residue. Photo MetaClean rewrites the JPEG/PNG container and drops the metadata segments themselves:

  • JPEG: APP1 (EXIF and XMP), APP13 (IPTC/Photoshop) and COM comments. JFIF, ICC color profile and Adobe APP14 are preserved. Pixel data (SOF/SOS/entropy) is copied byte-for-byte.
  • PNG: tEXt, zTXt, iTXt, tIME and eXIf chunks removed. Image data (IDAT) untouched.

No re-encode — an 8 MB photo stays an 8 MB photo, only lighter in data.

Support the Project

Photo MetaClean is free and open source. Like it?

Report a bug

Found a bug or something weird? Run:

python -m tools.photo-metaclean --report

This opens a pre-filled email. Send it and I'll get notified automatically.

You can also email danyblitz@googlemail.com directly. Use the subject format:

[TOOL-REPORT] photo-metaclean <what happened>

Attach the image or log output if you have one.

License

MIT

Metadata

Release files for photo-metaclean 1.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for photo-metaclean 1.1.0
File Size Uploaded
photo_metaclean-1.1.0.tar.gz 9.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for photo-metaclean 1.1.0
File Interpreter ABI Platform
photo_metaclean-1.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 18.3 kB

Release files / photo_metaclean-1.1.0.tar.gz

Download URL photo_metaclean-1.1.0.tar.gz
Size 9.2 kB
Tags Source
SHA-256 checksum
How to use checksums
a33fe018d5599911ebb66e45e4da93c13d3e25fc7ce41cb951346ec1839c27b2
BLAKE2b-256 checksum
How to use checksums
489ffe898cbf64ca8245dad882a3502a5da51b881ba0694e7913409504bd4bab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / photo_metaclean-1.1.0-py3-none-any.whl

Download URL photo_metaclean-1.1.0-py3-none-any.whl
Size 9.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
35ab9b2f8bdbf2ea78bd36ed88d809834647eb5c67e7e18e0e0c2370d636f378
BLAKE2b-256 checksum
How to use checksums
c00321d925882d2b8d34c8e7842d7b7b6ab93fcd6cde070b35e13490e6e8e3ef
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

This release

1.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page