A CLI tool to remove, edit, or selectively filter metadata from images, documents, audio, and video files.
Project description
Metadata Cleaner
Metadata Cleaner is a privacy-focused CLI for viewing and removing metadata from local files. It writes cleaned copies by default and avoids modifying originals in-place.
Supported Files
- Images: JPG, JPEG, PNG, TIFF, WEBP, AVIF, HEIC, HEIF
- Documents: PDF, DOCX, EPUB, ODT, TXT
- Audio: MP3, WAV, FLAC, OGG, AAC, M4A, WMA
- Video: MP4, MKV, MOV, AVI, WEBM, FLV
Video support requires ffmpeg and ffprobe. AVIF and broader metadata
coverage benefit from exiftool.
Installation
Requires Python 3.11 or newer.
pip install metadata-cleaner
metadata-cleaner --help
For development:
git clone https://github.com/sandy-sp/metadata-cleaner.git
cd metadata-cleaner
poetry install --with dev
poetry run metadata-cleaner --help
CLI Usage
View metadata:
metadata-cleaner view sample.jpg
Print metadata for automation:
metadata-cleaner view sample.jpg --json
Write metadata JSON to a file:
metadata-cleaner view sample.jpg --json-output reports/metadata.json
Remove metadata from one file:
metadata-cleaner delete sample.jpg
Write to a specific file:
metadata-cleaner delete sample.jpg --output cleaned/sample.jpg
Process a folder recursively:
metadata-cleaner delete ./photos --output ./cleaned-photos
Preview a run without writing files:
metadata-cleaner delete ./photos --dry-run
Write a JSON summary report:
metadata-cleaner delete ./photos --summary-file reports/summary.json
The shared --json-output reports/summary.json option writes the same delete
summary payload.
Summary reports include per-file status and output paths for audit trails.
Add --checksums to include input/output hashes. SHA-256 is the default; use
--checksum-algorithm sha512 or --checksum-algorithm blake2b for stronger
hash reports.
Add --preserve-timestamps when cleaned files should keep source file times.
Use --report-detail compact or --report-detail summary for smaller reports.
Use --report-filter failed to list only failed per-file entries.
Formats that copy, rewrite, re-save, use ExifTool, delete audio tags, or remux
video include precise per-file processing notes in JSON summary reports.
Edit metadata where supported:
metadata-cleaner edit song.mp3 --changes '{"artist": "Unknown"}'
Start the local Web UI:
metadata-cleaner web
The Web UI runs on 127.0.0.1 by default and shows original metadata next to
cleaned-copy metadata so you can verify what changed before using the cleaned
file. Use the Files button to view or delete uploaded originals and cleaned
copies saved in the current local session.
Development Checks
python3 manage.py test
python3 manage.py lint
python3 manage.py check
CI runs tests, lint, and pip-audit on pull requests and pushes to main.
Docker
docker build -t metadata-cleaner .
docker run --rm -v "$(pwd)/photos:/data" metadata-cleaner delete /data
Published release images are available from GitHub Container Registry:
docker run --rm -v "$(pwd)/photos:/data" ghcr.io/sandy-sp/metadata-cleaner:latest delete /data
Logging
By default, logs go to stderr only. To write a log file, opt in explicitly:
METADATA_CLEANER_LOG_FILE=./metadata-cleaner.log metadata-cleaner delete sample.jpg
Use debug logging when needed:
METADATA_CLEANER_LOG_LEVEL=DEBUG metadata-cleaner view sample.jpg
Resources
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file metadata_cleaner-3.18.10.tar.gz.
File metadata
- Download URL: metadata_cleaner-3.18.10.tar.gz
- Upload date:
- Size: 26.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.3.4 CPython/3.12.3 Linux/6.17.0-1013-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
98166da598e4c0f4cfdb4a63dfead8e303a23c0e6405eed1539a692e4070382a
|
|
| MD5 |
2a2c7fdb6cd0513bcea0a602b35a48c9
|
|
| BLAKE2b-256 |
37feaef7c9322dab13405b819dfcc9e03dbca19762e86bd056b4cb2d016df13e
|
File details
Details for the file metadata_cleaner-3.18.10-py3-none-any.whl.
File metadata
- Download URL: metadata_cleaner-3.18.10-py3-none-any.whl
- Upload date:
- Size: 32.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.3.4 CPython/3.12.3 Linux/6.17.0-1013-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4c9460bf4f4e66ac1e0c55fb4acbf48f9f5b5ecacc315b0bd4e4820e2826b304
|
|
| MD5 |
e490c74a729a387eae0fa80bcb53b47b
|
|
| BLAKE2b-256 |
dbe2236e4fe51f5409e62e7dccef1032e587698bce7c0618f6a3111e1aa54117
|