A native macOS application built with SwiftUI that helps you organize your media files by scanning folders recursively and moving photos and videos to a destination folder of your choice.
- 📂 Folder Selection: Easy-to-use macOS file picker for selecting source and destination folders
- 🔍 Recursive Scanning: Automatically scans all nested subfolders to find media files
- 🖼️ Media Detection: Identifies photos and videos by file extension (case-insensitive)
- Images:
.jpg,.jpeg,.png,.heic,.gif,.bmp,.tiff,.webp - Videos:
.mp4,.mov,.mkv,.avi,.flv,.wmv,.webm
- Images:
- 🔄 Image Conversion: Convert images to different formats (JPEG, PNG, TIFF, BMP) using macOS built-in tools
- 🛡️ Safe Moving: Automatically renames files on conflicts (e.g.,
photo_1.jpg,photo_2.jpg) - 📊 Metadata Preservation: Preserves file creation and modification dates
- 📈 Progress Tracking: Real-time progress bar and detailed statistics
- 📝 Detailed Logging: Comprehensive log of all operations with timestamps
- ⚡ Non-Blocking UI: All operations run on background threads to keep the UI responsive
- macOS 12.0 (Monterey) or later
- Xcode 13.0 or later (for building from source)
- Download the latest release from the MufeezQadri-main/Media Organizer page
- Extract the ZIP file or open the DMG
- Drag
MediaOrganizer.appto your Applications folder - Open the app (you may need to right-click and select "Open" the first time)
-
Clone this repository:
git clone https://github.com/yourusername/media-organizer.git cd media-organizer -
Open the project in Xcode:
open MediaOrganizer.xcodeproj
-
Build and run:
- Press
⌘Ror click the Run button - Or build only: Press
⌘B
- Press
- Launch the app from your Applications folder
- Select Source Folder: Click "Select Source Folder" and choose the folder containing your media files
- Select Destination Folder: Click "Select Destination Folder" and choose where you want the media files moved
- Optional - Enable Image Conversion:
- Toggle "Convert Images" if you want to convert images to a different format
- Select the target format (JPEG, PNG, TIFF, or BMP)
- Start Processing: Click "Start Scan & Move" to begin
- Monitor Progress: Watch the progress bar and logs to track the operation
If macOS shows a security warning:
- Right-click
MediaOrganizer.app - Select "Open"
- Click "Open" in the security dialog
- This is a one-time requirement
MediaOrganizer/
├── MediaOrganizerApp.swift # SwiftUI app entry point
├── ContentView.swift # Main UI view
├── MediaOrganizerViewModel.swift # Business logic, scanning, and file operations
└── README.md # This file
-
Create a new macOS App project in Xcode:
- File → New → Project
- Choose macOS → App
- Use SwiftUI for interface
- Name it
MediaOrganizer
-
Add the source files to your project:
- Copy
MediaOrganizerApp.swift,ContentView.swift, andMediaOrganizerViewModel.swiftto your project - Ensure all files are added to the app target
- Copy
-
Configure App Sandbox:
- Select your app target
- Go to Signing & Capabilities
- Enable App Sandbox
- Under File Access, set User Selected File to Read/Write
See PACKAGING_INSTRUCTIONS.md for detailed instructions on creating distributable packages.
- Framework: SwiftUI + AppKit
- Language: Swift 5.0+
- Image Conversion: Uses macOS built-in
sipscommand-line tool - File Operations: Native
FileManagerAPIs with security-scoped resource access - Architecture: MVVM (Model-View-ViewModel)
- Concurrency: Background queues with main thread UI updates
This project is licensed under the MIT License - see the LICENSE file for details.
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- None at the moment! If you find any, please open an issue.
- Support for more image formats
- Batch renaming options
- Duplicate file detection
- Preview of files before moving
- Undo functionality
- Custom file organization rules
If you encounter any issues or have questions:
- Open an issue on GitHub
- Check the Documentation
- Built with SwiftUI and native macOS APIs
- Uses macOS built-in
sipsfor image conversion
This app moves files from one location to another. Always:
- Test with a small folder first
- Keep backups of important files
- Review the destination folder before processing large batches
Made with ❤️ for macOS