keyboard-driven tool for sorting images into folders.
Picsort is a desktop application designed to help you rapidly organize and classify large sets of pictures, primarily using your keyboard. While it was created to assist with sorting image datasets for training computer vision models, it's versatile enough for any large-scale photo organization task.
It is important to clarify that Picsort is not a replacement for general-purpose gallery or photo management tools. Its sole mission is to make the sorting process as fast and ergonomic as possible.
- Keyboard-First Design: Navigate, select, and sort images without leaving the keyboard.
- Vim-like Keybindings: Use
HJKLkeys for efficient navigation. - High Performance: Picsort tries to be as fast as possible, even with thousands of images, however the tradeoff is that it will take a while to load the first time while picsort generates a cache with thumbnails and previews for a fast and smooth experience.
- Non-Destructive: Your original images are sacred. Picsort never modifies them. It reads them to create a cache and copies them to your chosen destination upon export.
- Simple UI: The UI aims to be as simple ans self explanatory as possible without much going on!
- Machine learning ready: Picsort exports your dataset split into three categories: training, validation, and test.
I live in the Arctic Circle, where the Northern Lights are frequently visible. I set up a 24/7 live stream of the sky, both as an early warning system for when the aurora is active and to share the view with everyone.
As part of this project, I wanted to connect a computer vision model to the video feed to automatically detect auroral activity and send notifications. However, I quickly ran into two problems:
- There were no pre-trained models for this, which meant I had to train my own.
- Training a model requires a large, well-organized dataset of images. Getting the dataset right involves frequent sorting, tweaking, and updating.
I tried to manage my images with traditional file explorers, Darktable, and many other tools, but none of them felt efficient enough for the task. This led me down a bit of a yak-shaving journey, and Picsort was born!
if you want to check out the live stream you can find it both on youtube and on twitch
You can watch a quick demo of picsort here
When you open a dataset for the first time, picsort generates a cache containing thumbnails and previews. This is a multi-threaded task that utilizes all available CPU cores to complete quickly. Once this cache is generated, subsequent loads of the dataset will be significantly faster.
All operations within the application are performed on the cached data, ensuring your original images are never modified.
When exporting, picsort copies the selected images from their original location to your chosen destination. The images are organized into directories named with a corresponding number, and any excluded images are ignored.
If you are preparing a dataset for training a computer vision model, the Balance & Export feature helps you create properly structured datasets. It splits your sorted images into three standard sets:
- Training: 60%
- Validation: 20%
- Test: 20%
This 60/20/20 split is applied to each of your sorting categories. The images within each category are randomly assigned to one of the three sets, which helps reduce statistical bias when training your model.
At any time, press ? to view the help menu with all available keybindings.
Thank you for checking out Picsort. I hope you find it useful!
Even though picsort is built and tested in linux it also works on windows and MacOS, check the releases page for the latest builds. More instructions are also available below for each platform.
Picsort is simple to install and there are a few ways to do it, more ways to install can be added in the future if there's interest for it, pease let me know!
Grab the debian package from the releases page and install it with sudo apt install ./picsort_1.1.0_amd64.deb
Grab the rpm package from the releases page and install it with sudo dnf install picsort-1.1.0-1.x86_64.rpm
There's a arch linux AUR package available:
yay -S picsort-binWarning
Please note that curl to bash is not the most secure way to install any project. Please make sure you understand and trust the install script before running it.
Latest version
curl -L https://coolapso.github.io/PicSort/install.sh | bashSpecific version
curl -L https://coolapso.github.io/PicSort/install.sh | VERSION="v1.1.0" bashPicsort is just a binary, and ther's actually no real need for instalation. all the AUR package and install script do is to place picsort in your path and adding a icon and a .desktop entry, but if you want you can just grab the binary from the releases page and just run it
VERSION=$(curl -s "https://api.github.com/repos/coolapso/picsort/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/')
curl -LO https://github.com/coolapso/picsort/releases/download/$VERSION/PicSort_"${VERSION:1}"_linux_amd64.tar.gz
tar -xzf PicSort_${VERSION:1}_linux_amd64.tar.gz picsort
./picsrotTo uninstall you just uinstall with your package manager, ir if you used the install script you can use the uninstall script:
curl -L https://coolapso.github.io/PicSort/uninstall.sh | bashWarning
Again, plaese make sure you understand and trust the uninstall script before running it. The script is pretty simple you can just run the commands yourself!
Picsort is available for windows, and does not require any installation.
just grab the latest windows build form the releases page, extract the zip archive and run the picsort.exe file.
For mac users you have to grab latest macos build form the releases page, extract the tar.gz archive.
If you get a warning / error about the app being damaged, that's because the app is not signed. To work around it you must remove the application from quarantine by running the following command in the terminal:
xattr -r -d com.apple.quarantine /path/to/picsort.app
Improvements and suggestions are always welcome, feel free to check for any open issues, open a new Issue or Pull Request
If you like this project and want to support / contribute in a different way you can always ❤️ Sponsor Me or

