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.
- 🧹 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
- Download MetaSort from GitHub
- Open Terminal and run:
./scripts/build_macos.sh
- Double-click
Run_MetaSort.command
to start!
- Download MetaSort from GitHub
- Right-click
scripts/install_windows.bat
→ "Run as administrator" - Follow the prompts - it will install everything automatically!
# Clone and build
git clone https://github.com/iamsanmith/MetaSort.git
cd MetaSort
cargo build --release
cargo run --release

💙 Donate via UPI
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.
- macOS 10.13+ or Windows 10+
- 4GB RAM (recommended)
- 500MB free space for the application
- ExifTool - For metadata extraction and embedding
- Rust - For building the application
💡 Don't worry! Our installation scripts handle all dependencies automatically.
# Download and extract MetaSort
git clone https://github.com/iamsanmith/MetaSort.git
cd MetaSort
# Build and create launchers
./scripts/build_macos.sh
# 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
# Run PowerShell installer
powershell -ExecutionPolicy Bypass -File scripts/install_windows.ps1
# Or run batch installer
scripts/install_windows.bat
# 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
- macOS: Double-click
Run_MetaSort.command
- Windows: Run
cargo run --release
or use the generated executable
- Drag and drop your Google Photos Takeout folder
- Or type the path to your media folder
- MetaSort works with any folder containing photos/videos!
- Separate WhatsApp/Screenshots? (Recommended: Yes)
- Metadata embedding method (Recommended: Auto-detect)
- Output directory (Default:
MetaSort_Output
)
MetaSort will:
- 🔍 Scan your files
- 🧹 Clean up filenames
- 📅 Extract dates
- 🏷️ Embed metadata
- 📦 Sort into folders
- 📊 Generate reports
- Photos/Videos:
MetaSort_Output/Media Files/
- Reports:
MetaSort_Output/Technical Files/
- HTML Summary: Open
MetaSort_Output/Technical Files/report.html
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
- 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
- JSON files (Google Photos metadata)
- Filename patterns (WhatsApp, Screenshots, etc.)
- EXIF data (embedded in files)
- File timestamps (fallback)
MetaSort can extract dates from countless filename patterns:
- 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
- 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
wallpaper - IMG_20240113_143213Jan 13 2024
→2024:01:13 14:32:13
San-1 Oct 2024.jxl
→2024:10:01 00:00:00
RMLmc20250531_115820_RMlmc.7
→2025:05:31 11:58:20
💡 MetaSort is smart! If your filename contains a date, it will likely find it!
# 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"
- HTML Report: Beautiful web-based summary with statistics
- CSV Reports: Detailed logs for spreadsheet analysis
- Error Logs: Track any issues during processing
- Process multiple folders
- Resume interrupted operations
- Skip already processed files
macOS:
brew install exiftool
Windows:
winget install ExifTool.ExifTool
macOS:
chmod +x scripts/build_macos.sh
Windows:
- Right-click script → "Run as administrator"
macOS:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Windows:
- Download from https://rustup.rs/
- Use
Run_MetaSort.command
instead of app bundles - Right-click → Open (if needed)
- 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
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 & folder creation
│ ├── csv_report.rs # CSV report generation
│ ├── html_report.rs # HTML report generation
│ ├── filename_date_guess.rs # Date extraction from filenames
│ └── utils.rs # Utility functions
├── 📁 scripts/ # Build & installation scripts
│ ├── build_macos.sh # macOS build script
│ ├── build_windows.bat # Windows build script
│ ├── install_windows.ps1 # Windows installer (PowerShell)
│ └── install_windows.bat # Windows installer (Batch)
├── 📁 docs/ # Documentation
│ ├── SIMPLE_INSTALL.md # Non-technical user guide
│ └── CROSS_PLATFORM_CHANGES.md # Technical details
├── 📁 assets/ # Resources
│ ├── logo.png # MetaSort logo
│ └── upi.png # UPI QR code
├── 🚀 Run_MetaSort.command # Easy launcher (macOS)
├── 🚀 MetaSort.command # Advanced launcher (macOS)
├── 📄 README.md # This file
├── 📄 LICENSE.txt # Apache 2.0 License
└── 📄 Cargo.toml # Rust project configuration
We welcome contributions! Here's how you can help:
- Check existing issues first
- Provide detailed error messages
- Include your OS and MetaSort version
- Describe the feature clearly
- Explain why it would be useful
- Consider implementation complexity
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
- Improve README sections
- Add examples
- Fix typos or unclear instructions
MetaSort is licensed under the Apache License 2.0 - see the LICENSE.txt file for details.
This means you can:
- ✅ Use MetaSort for personal or commercial projects
- ✅ Modify and distribute MetaSort
- ✅ Use MetaSort in proprietary software
- ✅ Distribute modified versions
Requirements:
- Include the original license and copyright notice
- State any changes you made
- ExifTool - For powerful metadata handling
- Rust Community - For the amazing ecosystem
- All Contributors - For making MetaSort better
- You - For using and supporting MetaSort!
Transform your digital memories into organized treasures!