Skip to main content

📷 Metadata Stripper

Metadata Stripper

Your photos know more than you do. Read it, then erase it.

Python License PyPI Platform

"The photo was innocent. The GPS coordinates were not."


What is it?

Every file whispers: where it was taken, with what camera, by whom and at what exact moment. That whisper is metadata — and half the time it includes GPS coordinates. Metadata Stripper v2 reads the whisper, shows it to you in a beautiful Textual TUI, and then removes it for good.

JPEG / PNG / WebP / TIFF / BMP / GIF / ICO     — EXIF, GPS, XMP, ICC, thumbnail
PDF                                           — document info, XMP packet
DOCX / XLSX / PPTX / ODT / ODS / ODP          — core/app/custom properties
ZIP                                           — comments, timestamps, junk files
MP3 / FLAC / WAV / OGG / OPUS                 — ID3, vorbis, RIFF INFO
MP4 / MOV / MKV / WEBM / AVI                  — tags, covr, LIST INFO
DOC / XLS / PPT / MSG (OLE2)                  — read-only analysis

Run it

pip install "metadata-stripper[all]"   # or: pip install -e .[all]
metastrip                              # 🚀 opens the TUI

metastrip with no arguments opens the Textual TUI — the main interface. All subcommands below also work for scripting.

The TUI

Six tabs, keyboard-first, dark theme with a fire-gradient dragon banner:

Tab What you can do
Explorar type a path, scan (F5), filter GPS-only / high-risk, click a file
Detalle every metadata field grouped (EXIF/GPS/XMP/ICC/doc/audio…)
GPS decimal + DMS coordinates, geohash, plus code, altitude, nearest cities, map/OSM links, plausibility check
Limpiar profile select (full/gps/dates/author/device/paper), keep/remove fields, dry-run, rename, output dir, live log
Batch parallel mass-clean with N workers, progress bar, cancel
Reporte export scan results as JSON / CSV / HTML
Renombrar chameleon rename: random or {index} {name} {ext} {date} {time} {rand}

Key bindings: F5 rescan · Ctrl+S clean selection · Ctrl+B clean all · R rename · E export · Q quit.

CLI (scripting)

metastrip scan ~/fotos -v                    # risk report per file
metastrip exif photo.jpg                     # full technical dump
metastrip gps show photo.jpg                 # coordinates + cities + map URL
metastrip gps remove photo.jpg               # strip only GPS
metastrip strip photo.jpg --profile gps      # selective by profile
metastrip strip ./export --keep make,model   # keep camera info
metastrip batch ./export --workers 8 --report html
metastrip report ./dir --format html --out report.html
metastrip verify clean.jpg                   # exit 0 = clean
metastrip rename ./dir --mode random         # no date hints
metastrip profiles                           # list cleaning profiles

Cleaning profiles

Profile What it removes
full everything
gps coordinates, latitude, longitude, altitude, geotag
dates date/time/created/modified/datetime
author author/creator/artist/owner/company/last
device make/model/software/lens/camera/focal
paper keeps only resolution/width/height/dpi/orientation/pixel

Optional dependencies

Pillow + textual are required. Everything else is optional per format:

pip install "metadata-stripper[pdf]"    # pypdf
pip install "metadata-stripper[audio]"  # mutagen
pip install "metadata-stripper[ole]"    # olefile
pip install "metadata-stripper[all]"    # everything

Without an optional dep the format simply isn't registered (the TUI and CLI keep working) and a clear pip install hint is shown if you try to use it.

Tests

pip install pytest
pytest

109 tests cover every format handler, GPS parsing, risk scoring, batch, reports, rename and redaction.

License

MIT — clean your own files and let the protagonist's geotag be a plot point, not a leak.

Release files for metadata-stripper 0.1.1

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

Source distribution (sdist)

Source distribution for metadata-stripper 0.1.1
File Size Uploaded
metadata_stripper-0.1.1.tar.gz 77.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for metadata-stripper 0.1.1
File Interpreter ABI Platform
metadata_stripper-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 143.9 kB

Release files / metadata_stripper-0.1.1.tar.gz

Download URL metadata_stripper-0.1.1.tar.gz
Size 77.7 kB
Tags Source
SHA-256 checksum
How to use checksums
7a313316ee20a059454a4ae7e49bf4a0340469ffaf8d7ee51122a0db35cf3058
BLAKE2b-256 checksum
How to use checksums
ada12366c7b8acd05c14db9fa2bfa08889762264abd9735d8802e45e048bdd0c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.3

Release files / metadata_stripper-0.1.1-py3-none-any.whl

Download URL metadata_stripper-0.1.1-py3-none-any.whl
Size 66.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5418d8c662a4e4ee9b0ac30d684d6a3b75b90a39959306fc3aece8198d3bd2cb
BLAKE2b-256 checksum
How to use checksums
4d173d46a5ebf507021e1b5d353f832587f04e3a62250c07bb78c660ede3500a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.3

Release history Release notifications | RSS feed

0.2.0

2 release files

This release

0.1.1 This release

2 release files

0.1.0

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