📷 Foto Sortierer
A cross-platform desktop tool
that automatically sorts photos and videos into date-based folders.
Built with Python and Tkinter
— no internet connection required, works entirely offline.
📥 Download & Run (No Python needed)
Platform File Instructions
🪟 Windows Foto_Sortierer.exe Download and double-click to run
🍎 macOS Foto_Sortierer.app Open the .app bundle — right-click →
Open if blocked by Gatekeeper
🐧 Linux Foto_Sortierer
(binary) chmod +x Foto_Sortierer
&& ./Foto_Sortierer
Linux note: If the app
doesn't start, make it executable first:
chmod +x Foto_Sortierer
./Foto_Sortierer
🎯 What it does
Select a folder full of
unsorted photos and videos — the app reads the EXIF date from each file
(or falls back to the file
creation date) and moves or copies them into automatically
created subfolders by date.
Before:
📁 Photos/
IMG_0001.jpg
IMG_0002.jpg
VID_2024.mp4
DSC_9981.NEF
After (YYYY/Month name):
📁 Photos/
📁 2024/
📁 June/
IMG_0001.jpg
IMG_0002.jpg
VID_2024.mp4
📁 March/
DSC_9981.NEF
✨
Features
• EXIF date reading — uses the original
capture date from photo metadata, not the
file modification date
• 4 folder structures — choose how
subfolders are named and organized
• Move or Copy — keep originals untouched
by choosing Copy mode
• Duplicate detection — skips files with
identical content (MD5 hash) so nothing
is imported twice
• Undo — one click to reverse the last sort
operation completely
• Preview — see exactly where each file
will go before sorting starts
• Cancel — stop a running sort at any time
• File type filter — sort only images, only
videos, both, or all files
• Persistent settings — last folder, mode,
structure and filter are remembered
on next launch
• 12 languages — switchable from the menu
at any time
📁 Folder Structures
Option Example result
DD.MM.YYYY 15.06.2024/
YYYY/MM 2024/06/
YYYY/MM/DD 2024/06/15/
YYYY/Month name 2024/June/ (language-aware)
🖼️ Supported File Formats
Images: JPG, JPEG, PNG, GIF,
BMP, TIFF, WEBP, HEIC, HEIF, RAW, CR2, CR3,
NEF, ARW, DNG, ORF, RW2, PEF,
SRW
Videos: MP4, MOV, AVI, MKV,
WMV, FLV, M4V, 3GP, MTS, M2TS, TS,
WEBM, MPG, MPEG
🌍 Languages
Switch language at any time
from the Language menu — saved automatically.
🇩🇪 Deutsch 🇬🇧
English 🇫🇷 Français 🇪🇸
Español
🇮🇹 Italiano 🇳🇱
Nederlands 🇵🇱
Polski 🇹🇷
Türkçe
🇬🇷 Ελληνικά 🇷🇺
Русский 🇺🇦 Українська 🇭🇺
Magyar
Month names in folder names
are always in the selected language
(e.g. 2024/Juni in German,
2024/June in English).
Adding a new language
Open Foto_Sortiren.py and add
a new entry to the LANG dictionary —
the menu entry appears
automatically:
"Svenska": {
"title": "Fotosorterare",
"source_label": "Källmapp:",
"no_folder": "Ingen mapp vald",
"btn_choose": "Välj mapp",
"btn_start": "Starta sortering",
"btn_preview": "Förhandsgranskning",
"btn_open": "Öppna mapp",
"btn_undo": "Ångra",
"btn_cancel": "Avbryt",
"btn_quit": "Avsluta",
"lbl_mode": "Åtgärd:",
"mode_move": "Flytta",
"mode_copy": "Kopiera",
"lbl_structure":
"Mappstruktur:",
"struct_day": "DD.MM.ÅÅÅÅ",
"struct_ym": "ÅÅÅÅ/MM",
"struct_ymd": "ÅÅÅÅ/MM/DD",
"struct_ymon": "ÅÅÅÅ/Månadsnamn",
"lbl_filter": "Filtyper:",
"filter_images": "Endast
bilder",
"filter_videos": "Endast
video",
"filter_both": "Bilder + Video",
"filter_all": "Alla filer",
"lbl_dupes": "Hoppa över dubbletter",
"status_ready": "Redo",
"status_start": "Startar sortering...",
"status_cancel": "Avbrott
begärt",
"status_done": "Klar",
"log_folder": "Mapp vald",
"log_start": "Sortering startad.",
"log_cancel": "Avbrott begärt...",
"log_done": "Klart: {moved} av {total} filer
{action}.",
"log_skipped": "Inget datum för {f} — hoppades
över",
"log_dupe": "Dubblett hoppades över: {f}",
"log_moved": "{action}: {f} → {d}",
"log_error": "Fel med {f}: {e}",
"log_undo_done": "Ångra: {n}
filer återställda.",
"log_undo_none": "Inget att
ångra.",
"log_undo_error":"Fel vid
ångra: {e}",
"action_moved": "flyttade",
"action_copied":
"kopierade",
"prev_title": "Förhandsgranskning",
"prev_no_files": "Inga filer
i mappen.",
"prev_no_date": "inget datum",
"err_open": "Kunde inte öppna mappen: {e}",
"err_sort": "Fel under sortering: ",
"months":
["Januari","Februari","Mars","April","Maj","Juni",
"Juli","Augusti","September","Oktober","November","December"],
},
⚙️
Settings storage
Settings (last folder,
language, mode, structure, filter, duplicate option)
are saved automatically:
Platform Path
Windows %APPDATA%\FotoSortierer\settings.json
macOS ~/Library/Application Support/FotoSortierer/settings.json
Linux ~/.config/FotoSortierer/settings.json
🐍 Run from Source
Requirements: Python 3.8+ and
Pillow
pip install Pillow
python Foto_Sortiren.py
📄 License
MIT License — free to use,
modify and distribute.
