SnapTidy

AI-powered photo deduplication & organizer for macOS. Find duplicate photos, detect similar images, fix EXIF metadata, and restructure your library — safely, through natural-language conversation.

MIT License Python 3.9+ macOS 13+ 42 Scripts Zero-Install Core

How It Works

SnapTidy takes a safety-first approach to photo library management. No automatic deletion — everything is read-only until you explicitly approve.

1. Scan
2. Find Duplicates
3. Review
4. Generate Plan
5. Apply
6. Undo

Key Features

🎯

SHA-256 Exact Dedup

Find byte-perfect duplicate files across your entire photo library.

👁️

Perceptual Hash Similarity

Detect visually identical images using pHash with fuzzy Hamming distance threshold.

🧠

Apple Quality Vectors

Zero-dependency similarity via Apple's pre-computed 17-dim ML feature vectors.

🔀

Cross-Format Dedup

Detect HEIC + JPEG of the same photo across different formats.

📍

Reverse Geocoding

Convert GPS coordinates to place names (city/region/country) with persistent cache.

🔍

Privacy Risk Detection

Find sensitive documents (ID cards, bank cards, passports) in your library.

🎬

Video Dedup

Frame sampling + pHash for duplicate and similar video detection.

☁️

iCloud Optimization

Detect, skip, or download iCloud placeholder thumbnails before scanning.

🛡️

Safety-First Design

Read-only scanning, move-only operations, Trash mode with Finder recovery.

🔬

7-Dimension Quality Scoring

Sharpness, exposure, contrast, resolution, format, filesize, EXIF — weighted composite score.

📎

Bad Extension Detection

Find files whose actual format (via magic bytes) doesn't match their declared extension.

How SnapTidy Compares

Feature SnapTidy Traditional Apps
AI Conversation-Driven
Zero-Install Core
Perceptual Hash Similarity ~
Apple ML Vector Detection
Cross-Format Dedup (HEIC↔JPEG) ~
EXIF Metadata Editing ~
GPS Reverse Geocoding
Privacy Risk Detection
Video Dedup ~
iCloud Placeholder Handling
Live Photo Protection ~
Google Takeout Import
Free & Open Source ~
7-Dimension Quality Scoring
Bad Extension Detection

Quick Start

Install via your AI assistant, or clone and run directly:

# Tell your AI assistant:
#   "Install this skill: https://github.com/chicogong/snaptidy"

# Or run directly:
git clone https://github.com/chicogong/snaptidy.git
cd snaptidy

# Scan your photo library (zero-install core works with just Python stdlib)
python3 scripts/scan_photos.py --source /path/to/your/photos --output ./photo_index.db

# Find exact duplicates (SHA-256)
python3 scripts/find_exact_duplicates.py --index ./photo_index.db --output ./duplicates.csv

# Find visually similar images (pHash)
python3 scripts/find_similar_photos.py --index ./photo_index.db --output ./similar.csv

# Generate a move plan
python3 scripts/generate_move_plan.py --duplicates ./duplicates.csv --index ./photo_index.db --plan ./move_plan.csv --target-root /path/to/your/photos

# Review and apply (move to Trash, recoverable via Finder)
python3 scripts/apply_move_plan.py --plan ./move_plan.csv --mode trash

Performance

50K+
Photos Supported
42
Scripts Included
15+
Languages for Auto-Categorization
100%
Free & Open Source

Benchmarks on MacBook Pro M3 Pro: 1K photos in ~3s, 10K in ~66s, 50K in ~10min

Get Started

SnapTidy is free, open source, and works with Claude Code, Cursor, Windsurf, WorkBuddy, OpenClaw, and any AI agent that supports AGENTS.md.