Image Metadata Cleaner

Clean privacy-sensitive metadata (C2PA, EXIF, XMP, IPTC, GPS) from user-owned images by writing sanitized copies. For privacy hygiene and file preparation.

Audits

Pass

Install

openclaw skills install image-metadata-cleaner

Image Metadata Cleaner

Clean privacy-sensitive metadata from user-owned images by writing sanitized copies. Designed for legitimate privacy hygiene, file preparation, and reproducible publishing workflows.

Use only for: images you own or are authorized to process, for privacy protection, file-size optimization, and clean publishing.

What it does

  • Re-encodes image pixels into a fresh output file — all metadata discarded
  • Writes copies instead of modifying originals in place
  • Defaults folder output to metadata-cleaned/ subdirectory
  • Refuses output paths that resolve to the same file as the input
  • Reopens outputs and scans for residual metadata keys and provenance markers
  • Produces a human-readable summary and optional JSON manifest

Usage

Single file

User: clean metadata from this image: photo.png
User: remove EXIF data from IMG_2024.jpg

Folder batch

User: clean metadata from all images in "C:\Users\me\Downloads"
User: remove privacy data from /path/to/folder

Steps

  1. Confirm the task is for privacy hygiene on images the user owns or is authorized to process.

  2. Preview with dry-run (optional):

    uv run --with "pillow>=10.0" scripts/strip.py "<path>" --dry-run
    
  3. Run the cleanup:

    uv run --with "pillow>=10.0" scripts/strip.py "<path>" --manifest
    

    Options:

    • -o <path> — Output file path (single file only)
    • --output-dir <dir> — Output directory (batch mode)
    • -f preserve|jpg|png — Output format (default: preserve — JPEG stays JPEG, others become PNG)
    • -q <1-100> — JPEG quality (default: 95)
    • --recursive — Process subdirectories
    • --overwrite — Overwrite existing output (only after user confirmation)
    • --dry-run — Preview without writing files
    • --manifest [path] — Write JSON manifest

    If uv is not available:

    pip install "pillow>=10.0" && python scripts/strip.py "<path>" --manifest
    
  4. Report results:

    • Files processed, failed, or dry-run previewed
    • Output filenames and location
    • File size before → after
    • Dimensions preserved
    • Verification scan results (any residual metadata keys or provenance markers)

    Note: this removes file-level metadata only. Pixel-level watermarks and external platform records are outside the scope.

Error Handling

ErrorCauseFix
"No supported image files found"Folder has no matching extensionsCheck input path and file types
"Output already exists"Explicit output path existsUse --overwrite after user confirmation
"Refusing to overwrite input file"Output path = input pathChoose a different output path
"Unsupported image extension"File extension not in supported listUse PNG, JPEG, WebP, BMP, or TIFF
"cannot identify image file"Corrupted or non-image fileSkip and continue with other files
Pillow ImportErrorMissing dependencyRun pip install "pillow>=10.0"

What gets removed

Metadata TypeNotes
EXIFCamera, GPS, device tags. Orientation applied before saving.
XMPAdobe and application metadata
IPTC/PhotoshopPress and photo metadata
ICC ProfileColor profile (not copied to output)
C2PA/JUMBFProvenance containers removed by re-encoding

Output behavior

  • Format: Default preserve — JPEG inputs stay JPEG, others written as PNG
  • Naming: {name}-clean.{ext} (e.g., photo-clean.png)
  • Folder mode: Outputs go to metadata-cleaned/ subdirectory
  • Single file: Sibling copy next to the original
  • Never overwrites input — script refuses if output resolves to input

Supported inputs

.png, .jpg, .jpeg, .webp, .bmp, .tiff, .tif

Known limitations

  • Does not remove pixel-level watermarks, fingerprints, or invisible signals
  • Does not affect external platform records or server-side provenance
  • Removing ICC profiles may affect color management in some workflows
  • JPEG output is lossy; PNG preferred for pixel fidelity
  • Transparent images written as JPEG are composited onto white background