Last Updated: 2025-09-27 Version: 1.0.0-beta (Production Ready)
This document provides comprehensive instructions for using ExifAnalyzer's CLI and GUI interfaces.
ExifAnalyzer comes as ready-to-run executables:
- ExifAnalyzer-GUI.exe - Easy-to-use graphical interface
- ExifAnalyzer-CLI.exe - Powerful command-line interface
- Extract the ExifAnalyzer folder anywhere
- Double-click
ExifAnalyzer-GUI.exefor point-and-click operation - OR open Command Prompt and run
ExifAnalyzer-CLI.exe --help
- Launch: Double-click
ExifAnalyzer-GUI.exe - Select Images: Use either method:
- Single File: Click "Browse" next to "File:" field
- Browse Folder: Click "Browse" next to "Folder:" field
- File Browser: Direct file selection with image filters
- Folder Browser: Browse folders to see all images
- File List: Shows all files in selected folder
- Refresh Button: Updates the file list
- Preview: Automatic image preview with size info
- File Details: Image dimensions, color mode, file size
- File Info: Name, format, size, GPS status
- Metadata Tree: Expandable view of all metadata
- Privacy Warnings: GPS data highlighted in red
- Select an image using File or Folder browse
- Metadata appears automatically in the right panel
- Expand categories (EXIF, IPTC, XMP) to see details
- Privacy-sensitive data is marked with warning icons
- Strip All Metadata: Removes everything (EXIF, IPTC, XMP)
- Strip GPS Only: Removes only location data, keeps camera settings
- Automatic Backup: Original files are automatically backed up
- Click "Show Privacy Check" to scan for sensitive data
- Shows all privacy-risky metadata (GPS, device info, etc.)
- Option to immediately remove GPS data
- Export: Save metadata to JSON file for backup
- Import: Restore metadata from previous export (future feature)
ExifAnalyzer-CLI.exe [OPTIONS] COMMAND [ARGS]...-v, --verbose- Enable detailed output-q, --quiet- Show only errors--help- Show help message
# Human-readable format
python -m src.exif_analyzer.cli.main view image.jpg
# JSON format (for scripts/automation)
python -m src.exif_analyzer.cli.main view image.jpg --json
# Verbose output (shows more details)
python -m src.exif_analyzer.cli.main -v view image.jpgExample Output:
File: C:\photos\vacation.jpg
Format: JPEG
Size: 2456789 bytes
Has metadata: True
Has GPS data: True
Metadata blocks:
EXIF: 15 keys
IPTC: 0 keys
XMP: 3 keys
Custom: 0 keys
# Creates automatic backup, overwrites original
python -m src.exif_analyzer.cli.main strip image.jpg
# Save to new file (keeps original unchanged)
python -m src.exif_analyzer.cli.main strip image.jpg --output cleaned_image.jpg
# Disable automatic backup (use with caution)
python -m src.exif_analyzer.cli.main strip image.jpg --no-backup# Strip only privacy-sensitive location data
python -m src.exif_analyzer.cli.main strip image.jpg --gps-only
# GPS stripping with custom output
python -m src.exif_analyzer.cli.main strip image.jpg --gps-only --output safe_image.jpg# Export to JSON (default format)
python -m src.exif_analyzer.cli.main export image.jpg metadata.json
# Export to XMP sidecar (when available)
python -m src.exif_analyzer.cli.main export image.jpg metadata.xmp --format xmp# Restore from JSON backup
python -m src.exif_analyzer.cli.main restore image.jpg metadata.json
# Restore without creating backup
python -m src.exif_analyzer.cli.main restore image.jpg metadata.json --no-backup# Strip metadata from all images in folder
python -m src.exif_analyzer.cli.main batch strip photos/
# Include subdirectories
python -m src.exif_analyzer.cli.main batch strip photos/ --recursive
# Process specific file types only
python -m src.exif_analyzer.cli.main batch strip photos/ --pattern "*.jpg"
# Save processed files to different directory
python -m src.exif_analyzer.cli.main batch strip photos/ --output-dir cleaned_photos/--recursive, -r- Process subdirectories--pattern- File pattern to match (e.g., ".jpg", "IMG_")--output-dir- Directory for processed files--gps-only- Strip only GPS data from all files--dry-run- Preview what would be processed without making changes
# See what files would be processed
python -m src.exif_analyzer.cli.main batch strip photos/ --recursive --dry-runOutput:
Found 15 image files
Dry run - would process:
photos/IMG_001.jpg
photos/IMG_002.jpg
photos/vacation/beach.jpg
...
python -m src.exif_analyzer.cli.main formatsOutput:
Supported image formats:
.jpg
.jpeg
.png
# 1. Check what metadata exists
python -m src.exif_analyzer.cli.main view photo.jpg
# 2. Export metadata for backup
python -m src.exif_analyzer.cli.main export photo.jpg backup.json
# 3. Remove GPS data only (keep camera settings)
python -m src.exif_analyzer.cli.main strip photo.jpg --gps-only
# 4. Verify GPS data is gone
python -m src.exif_analyzer.cli.main view photo.jpg# Clean all photos before sharing
python -m src.exif_analyzer.cli.main batch strip photos_to_share/ --gps-only --recursive
# Process vacation photos
python -m src.exif_analyzer.cli.main batch strip vacation2023/ -r --output-dir vacation2023_clean/# Verbose analysis with JSON output for processing
python -m src.exif_analyzer.cli.main -v view photo.jpg --json > analysis.json
# Quick check for GPS data across multiple files
for file in *.jpg; do
echo "Checking $file..."
python -m src.exif_analyzer.cli.main view "$file" | grep "Has GPS"
done- Default behavior: ExifAnalyzer creates automatic backups before modifying files
- Backup location: Same directory as original with timestamp
- Backup format:
filename.backup.timestamp.extension - Disable with:
--no-backupflag (use carefully)
- Pixel integrity: Original image pixels are never modified
- Atomic operations: Changes are applied safely or not at all
- Rollback: Failed operations automatically restore from backup
- Always test first: Use
--dry-runfor batch operations - Keep originals: Don't disable backups for important files
- Verify results: Check output files after processing
- Export metadata: Save metadata before stripping for future reference
Error: "No adapter available for format"
# Check supported formats
python -m src.exif_analyzer.cli.main formatsError: "File not found"
- Verify file path is correct
- Use absolute paths if relative paths don't work
- Check file permissions
Error: "Cannot read JPEG file"
- File may be corrupted
- File extension may not match actual format
- Try opening file in image viewer to verify integrity
# General help
python -m src.exif_analyzer.cli.main --help
# Command-specific help
python -m src.exif_analyzer.cli.main view --help
python -m src.exif_analyzer.cli.main strip --help
python -m src.exif_analyzer.cli.main batch --helpUse -v flag for detailed logging:
python -m src.exif_analyzer.cli.main -v strip photo.jpg- ✅ JPEG metadata support (EXIF, IPTC, XMP)
- ✅ PNG metadata support (text chunks, XMP)
- ✅ CLI interface with all core commands
- ✅ Batch processing capabilities
- ✅ Privacy-focused GPS detection and removal
- Phase 2: Enhanced CLI with configuration files
- Phase 3: GUI interface for non-technical users
- Phase 4: TIFF, WebP, GIF format support
- Phase 5: Advanced metadata editing capabilities
- Phase 6: Packaging and distribution
# Activate virtual environment
venv\Scripts\activate
# Launch GUI application
python -m src.exif_analyzer.gui.main- Three-panel layout:
- Left: File browser with folder selection
- Center: Image preview with automatic resizing
- Right: Metadata tree view with detailed information
- Select Folder: Browse to folder containing images
- File List: Automatically filters for supported formats (.jpg, .png, etc.)
- Image Preview: Click any file to see preview and metadata
- Strip All Metadata: Remove all metadata with confirmation
- Strip GPS Only: Remove only location/GPS data (privacy-focused)
- Export Metadata: Save metadata to JSON file
- Privacy Check: Scan and highlight privacy-sensitive data
- GPS Detection: Automatically highlights files with location data
- Sensitive Data Warning: Shows privacy-risky metadata entries
- Color-coded Display:
- 🔴 Red: GPS data present (privacy risk)
- 🟢 Green: No GPS data found
⚠️ Yellow: Privacy-sensitive metadata detected
- Open GUI:
python -m src.exif_analyzer.gui.main - Select Folder: Click "Browse" and choose photo directory
- Choose Image: Click on any image file in the list
- Review Metadata: Expand EXIF/IPTC/XMP blocks in tree view
- Privacy Check: Click "Show Privacy Check" to scan for sensitive data
- Strip GPS: Click "Strip GPS Only" to remove location data
- Export: Click "Export Metadata" to save metadata before cleaning
If you encounter CLI issues:
- Check this instructions document for solutions
- Run with
-vflag for detailed output - Verify file formats are supported
- Use
--helpfor command-specific assistance
If you encounter GUI issues:
- Ensure PySimpleGUI is properly installed
- Check console output for error messages
- Verify image files are in supported formats
- Try running CLI commands to isolate issues
- Check project documentation in repository
- Verify virtual environment is activated
- Ensure all dependencies are installed
- Test with sample images first
Note: This document is automatically maintained and updated as new features are added to ExifAnalyzer.