MetaSort
๐ธ Smart Google Photos organizer! Clean files, extract dates, embed metadata, sort by date, generate reports. Supports 50+ formats including RAW.
Install / Use
/learn @iamsanmith/MetaSortREADME
ย
ย
ย
๐ฏ What is MetaSort?
MetaSort is your all-in-one solution for organizing Google Photos Takeout exports (or any messy media folder). It's lightning-fast, user-friendly, and works on both macOS and Windows.
โจ What MetaSort Does:
- ๐งน Cleans up filenames and removes .json clutter
- ๐ Extracts dates from filenames, JSON metadata, or file timestamps
- ๐ท๏ธ Embeds metadata (date, camera, GPS) directly into your photos/videos
- ๐ฆ Sorts everything into organized folders by year/month/type
- ๐ฌ Separates WhatsApp & Screenshots (optional)
- ๐ Generates beautiful reports (CSV + HTML)
- ๐จ Beautiful UI with progress bars and emoji-rich feedback
๐ Quick Start (5 Minutes)
For Non-Technical Users:
macOS:
- Download MetaSort from GitHub
- Open Terminal and run:
./scripts/build_macos.sh - Double-click
Run_MetaSort.commandto start!
Windows:
- Download MetaSort from GitHub
- Right-click
scripts/install_windows.batโ "Run as administrator" - Follow the prompts - it will install everything automatically!
For Developers:
# Clone and build
git clone https://github.com/iamsanmith/MetaSort.git
cd MetaSort
cargo build --release
cargo run --release
๐ Support & Donations
<div align="center"> <!-- UPI Donation --> <a href="https://upier.vercel.app/pay/sanmith@superyes" target="_blank"> <img src="https://img.shields.io/badge/Donate%20via-UPI-green?style=for-the-badge&logo=google-pay" alt="Donate via UPI" /> </a> <br/><br/> <!-- PayPal Donation --> <a href="https://www.paypal.com/paypalme/iamsanmith" target="_blank"> <img src="https://raw.githubusercontent.com/stefan-niedermann/paypal-donate-button/master/paypal-donate-button.png" alt="Donate with PayPal" width="200" /> </a> <br/><br/> <!-- Ko-fi Donation --> <a href="https://ko-fi.com/L3L01JGIUW" target="_blank"> <img height="36" style="border:0px;height:36px;" src="https://storage.ko-fi.com/cdn/kofi6.png?v=6" border="0" alt="Buy Me a Coffee at ko-fi.com" /> </a><br/><br/>
<em>
If MetaSort saved you hours, please consider supporting the project!
Every contribution, no matter how small, makes a difference and helps keep MetaSort free and actively maintained.
</em>
๐ Requirements
System Requirements:
- macOS 10.13+ or Windows 10+
- 4GB RAM (recommended)
- 500MB free space for the application
Dependencies:
- ExifTool - For metadata extraction and embedding
- Rust - For building the application
๐ก Don't worry! Our installation scripts handle all dependencies automatically.
๐ ๏ธ Detailed Installation
macOS Installation
Option 1: Automated (Recommended)
# Download and extract MetaSort
git clone https://github.com/iamsanmith/MetaSort.git
cd MetaSort
# Build and create launchers
./scripts/build_macos.sh
Option 2: Manual Installation
# 1. Install Homebrew (if not installed)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 2. Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Press 1 when prompted, then restart Terminal
# 3. Install ExifTool
brew install exiftool
# 4. Build MetaSort
git clone https://github.com/iamsanmith/MetaSort.git
cd MetaSort
cargo build --release
Windows Installation
Option 1: Automated (Recommended)
# Run PowerShell installer
powershell -ExecutionPolicy Bypass -File scripts/install_windows.ps1
# Or run batch installer
scripts/install_windows.bat
Option 2: Manual Installation
# 1. Install Rust from https://rustup.rs/
# 2. Install ExifTool
winget install ExifTool.ExifTool
# 3. Build MetaSort
git clone https://github.com/iamsanmith/MetaSort.git
cd MetaSort
cargo build --release
๐ฎ How to Use MetaSort
Step 1: Launch MetaSort
- macOS: Double-click
Run_MetaSort.command - Windows: Run
cargo run --releaseor use the generated executable
Step 2: Select Your Folder
- Drag and drop your Google Photos Takeout folder
- Or type the path to your media folder
- MetaSort works with any folder containing photos/videos!
Step 3: Choose Options
- Separate WhatsApp/Screenshots? (Recommended: Yes)
- Metadata embedding method (Recommended: Auto-detect)
- Output directory (Default:
MetaSort_Output)
Step 4: Watch the Magic! โจ
MetaSort will:
- ๐ Scan your files
- ๐งน Clean up filenames
- ๐ Extract dates
- ๐ท๏ธ Embed metadata
- ๐ฆ Sort into folders
- ๐ Generate reports
Step 5: Enjoy Your Organized Media! ๐
- Photos/Videos:
MetaSort_Output/Media Files/ - Reports:
MetaSort_Output/Technical Files/ - HTML Summary: Open
MetaSort_Output/Technical Files/report.html
๐ Output Structure
After processing, you'll find:
MetaSort_Output/
โโโ Media Files/
โ โโโ 2023/
โ โ โโโ 01_January/
โ โ โ โโโ Photos/
โ โ โ โโโ Videos/
โ โ โ โโโ Screenshots/
โ โ โโโ 02_February/
โ โโโ 2024/
โโโ Technical Files/
โ โโโ report.html # Beautiful summary report
โ โโโ processing_log.csv # Detailed processing log
โ โโโ metadata_summary.csv # Metadata statistics
โ โโโ error_log.txt # Any issues encountered
โโโ Original Files/ # Backup of original structure
๐ฏ Supported File Types
Media Files:
- Photos: JPG, JPEG, PNG, WEBP, HEIC, HEIF, BMP, TIFF, GIF, AVIF, JXL, JFIF
- Raw Formats: RAW, CR2, NEF, ORF, SR2, ARW, DNG, PEF, RAF, RW2, SRW, 3FR, ERF, K25, KDC, MEF, MOS, MRW, NRW, SRF, X3F
- Design Files: SVG, ICO, PSD, AI, EPS
- Videos: MP4, MOV, MKV, AVI, WEBM, 3GP, M4V, MPG, MPEG, MTS, M2TS, TS, FLV, F4V, WMV, ASF, RM, RMVB, VOB, OGV, MXF, DV, DIVX, XVID
Metadata Sources:
- JSON files (Google Photos metadata)
- Filename patterns (WhatsApp, Screenshots, etc.)
- EXIF data (embedded in files)
- File timestamps (fallback)
๐ Smart Date Detection
MetaSort can extract dates from countless filename patterns:
๐ฑ Mobile Apps:
- WhatsApp:
IMG-20220101-WA0001.jpgโ2022:01:01 00:00:00 - Screenshots:
Screenshot_2023-01-01-12-00-00.pngโ2023:01:01 12:00:00 - Telegram:
photo_2023-01-01 12.00.00.jpgโ2023:01:01 12:00:00
๐ท Cameras & Phones:
- Samsung/Android:
20230101_123456.jpgโ2023:01:01 12:34:56 - Google Photos:
PXL_20230101_123456789.jpgโ2023:01:01 12:34:56 - Sony Camera:
DSC01234_20230101_123456.JPGโ2023:01:01 12:34:56 - MIUI:
IMG_20230101_120000.jpgโ2023:01:01 12:00:00
๐ฏ Custom Patterns:
wallpaper - IMG_20240113_143213Jan 13 2024โ2024:01:13 14:32:13San-1 Oct 2024.jxlโ2024:10:01 00:00:00RMLmc20250531_115820_RMlmc.7โ2025:05:31 11:58:20
๐ก MetaSort is smart! If your filename contains a date, it will likely find it!
๐ ๏ธ Advanced Features
๐ง Command Line Options
# Run with specific options
cargo run --release -- --help
# Process specific folder
cargo run --release -- --input "/path/to/folder"
# Custom output directory
cargo run --release -- --output "/path/to/output"
๐ Report Customization
- HTML Report: Beautiful web-based summary with statistics
- CSV Reports: Detailed logs for spreadsheet analysis
- Error Logs: Track any issues during processing
๐ Batch Processing
- Process multiple folders
- Resume interrupted operations
- Skip already processed files
๐ Troubleshooting
Common Issues:
"ExifTool not found"
macOS:
brew install exiftool
Windows:
winget install ExifTool.ExifTool
"Permission denied"
macOS:
chmod +x scripts/build_macos.sh
Windows:
- Right-click script โ "Run as administrator"
"Rust not found"
macOS:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Windows:
- Download from https://rustup.rs/
"App won't open" (macOS)
- Use
Run_MetaSort.commandinstead of app bundles - Right-click โ Open (if needed)
Getting Help:
- Check the error logs in
MetaSort_Output/Technical Files/ - Ensure ExifTool is installed and accessible
- Try running in terminal for detailed error messages
- Open an issue on GitHub with error details
๐๏ธ Project Structure
MetaSort/
โโโ ๐ src/ # Source code
โ โโโ main.rs # Main application
โ โโโ platform.rs # Cross-platform compatibility
โ โโโ ui.rs # User interface & progress bars
โ โโโ media_cleaning.rs # File cleaning & organization
โ โโโ metadata_extraction.rs # JSON metadata extraction
โ โโโ metadata_embed.rs # Metadata embedding
โ โโโ sort_to_folders.rs # File sorting
Related Skills
himalaya
346.8kCLI to manage emails via IMAP/SMTP. Use `himalaya` to list, read, write, reply, forward, search, and organize emails from the terminal. Supports multiple accounts and message composition with MML (MIME Meta Language).
imsg
346.8kiMessage/SMS CLI for listing chats, history, and sending messages via Messages.app.
oracle
346.8kBest practices for using the oracle CLI (prompt + file bundling, engines, sessions, and file attachment patterns).
taskflow
346.8kname: taskflow description: Use when work should span one or more detached tasks but still behave like one job with a single owner context. TaskFlow is the durable flow substrate under authoring layer
