Sort your media files fast. Version 3.0 is a rewrite in Rust.
The documentation site has a short demo video of every workflow.
Media Sort is a desktop app for sorting your media collection. It handles images, video, and audio files. You drive it from the keyboard.
- It's fast. Built in Rust, rendered with wgpu.
- Keyboard-first. All actions are bindable. Move, delete, rename, browse: your hands stay on the keyboard.
- Undo and redo. Moved a file into the wrong folder? Press Q. You can undo it. Press E to redo.
- Pinned folders. Pin folders you often sort into, then quick-move files with Alt+1 through 9.
- In-app previews. View images, play videos with seek and volume control, listen to audio. No need to open another app.
- Metadata panel. EXIF for photos, ID3/FLAC/MP4 tags for audio. Shown in a side panel you can collapse.
- Multi-language. English, German, Japanese. Picks up your system locale.
| Type | Formats |
|---|---|
| Images | PNG, JPEG, GIF, BMP, TIFF, ICO, WebP, JXL, HEIC, HEIF, AVIF |
| Audio | MP3, FLAC, OGG (Vorbis), WAV, AAC (M4A), WMA, Opus, AIFF |
| Video | MP4, MKV, WebM, AVI, MOV, WMV, FLV, M4V, and any other format your installed mpv can handle |
The central idea behind Media Sort is speed. The best way to use it is to keep your hands on the keyboard. But you can also use the mouse if you want. The app should help you either way.
On the left is your folder tree. Navigate it with the WASD keys. W is up, S is down, A collapses a folder, D expands it. Hit Enter to open the selected folder, or O to pick some other folder.
Pin folders you use often with P (pin current) or F (pin selected). Unpin with U. After pinning, Alt+1 through 9 moves the current file to that pinned folder instantly. Reorder pins with Ctrl+W (up) and Ctrl+S (down).
This lets you sort files from one location into several destinations, even across different drives.
| Action | Shortcut |
|---|---|
| Move to selected folder | Up Arrow |
| Delete (move to trash) | Down Arrow |
| Previous file | Left Arrow |
| Next file | Right Arrow |
| Rename file | R |
| Undo | Q |
| Redo | E |
| Create new folder | C |
| Toggle search/filter | I |
| Toggle metadata panel | M |
All keybindings are customizable in the Settings dialog. Media keys (Play/Pause, Volume, Track skip) work for video and audio too.
Read the Privacy Policy.
No data is willingly collected. If you turn on "Check for updates on startup" in Settings, the app queries the GitHub API. That may collect data per GitHub's privacy statement. Turn it off if you don't want that.
- Linux, macOS, or Windows
- Rust 1.99 or later (if building from source)
- libmpv (needed for video and audio playback)
- libdav1d (needed for AVIF image decoding)
- ffmpeg (bundled on Windows and macOS for fast video thumbnails; optional on Linux — falls back to mpv)
Install libmpv through your package manager:
- Ubuntu/Debian:
libmpv-dev - Fedora:
mpv-libs-devel - Arch:
mpv - macOS:
brew install mpv - Windows: download from mpv.io
Install libdav1d through your package manager:
- Ubuntu/Debian:
libdav1d7 - Fedora:
dav1d-libs - Arch:
dav1d - macOS: bundled into the app automatically via
brew install dav1dat build time - Windows: bundled statically into the app
libjpeg-turbo (used for fast JPEG decoding) is vendored statically at build time — no installation needed.
git clone https://github.com/Lolle2000la/Media-Sort.git
cd Media-Sort
cargo build --release
cargo run --release
Build dependencies:
- Linux:
cmakeandnasm(x86_64 only) for the vendored libjpeg-turbo SIMD build, pluslibdav1d-dev(strongly preferred — if missing, dav1d is compiled from source via meson, ninja, and git). - macOS:
brew install dav1dandcmake(preinstalled on most dev machines / available via brew). No nasm needed on Apple Silicon. - Windows:
pip install meson ninjaandchoco install nasm(x64/x86 only), in addition to the existing requirements.
Pre-built binaries for Linux, Windows, and macOS are provided with automatic updates via the GitHub Releases page.
Pre-compiled standalone binaries with automatic updates are provided for Linux, Windows, and macOS via the GitHub Releases page.
All platforms require libmpv to be installed on your system to manage video and audio playback pipelines. Linux additionally requires libdav1d for AVIF image decoding. The Linux snap bundles these libraries (plus ffmpeg for faster video thumbnails), so no separate installation is needed when using it.
- Download the latest
.AppImagefrom Releases. - Grant executable permissions and launch:
chmod +x MediaSort-Linux.AppImage ./MediaSort-Linux.AppImage
A snap is published to the Snap Store. It bundles libmpv, libdav1d, ffmpeg and ALSA support, so no extra runtime libraries are required:
sudo snap install media-sortThe snap is strictly confined, so it sorts anything under your home directory. To also sort files on external drives (/media, /mnt), connect the removable-media interface once:
sudo snap connect media-sort:removable-mediaAudio plays through the sound server (PipeWire/PulseAudio) out of the box. On a system with no sound server, connect the raw-ALSA interface:
sudo snap connect media-sort:alsaUpdates are delivered automatically by snapd.
The .snap files are also attached to each release for offline installation:
sudo snap install ./media-sort_*_amd64.snap --dangerous- Download the standalone
Setup.exefrom Releases. - Run the installer wrapper to deploy the application to your local system.
Because this open-source variant is published without a paid Apple Developer ID signature, macOS will flag the application bundle as untrusted under Gatekeeper rules.
To install and execute:
- Download and extract the
.ziparchive from Releases. - Drag
Media Sort.appto your/Applicationsdirectory. - Open a terminal and strip the quarantine flag appended by your browser:
xattr -cr /Applications/Media\ Sort.app - Alternatively, try launching the program normally. When blocked, navigate through System Settings > Privacy & Security, scroll to the Security section, and click Open Anyway.