Skip to content

IschNehmDirGleichDemTabletWeg/SimpleDuplicateChecker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SimpleDuplicateChecker

This tool lets you create an index of your local storage (e.g. NAS) and checks if local files are duplicates or need to be backed up.

No bloat. No cloud. No hash scanning. Just filename, extension, size and date — fast and deliberate.


Screenshot

Coming soon


How it works

1. Add an INDEX via "+ New" (supports one or multiple source paths)
2. Select an INDEX from the dropdown
3. Hit "Rescan" to build or refresh the index
4. Pick a local SCAN folder to compare
5. Optionally enable "Include subfolders"
6. Hit "Compare" — results appear instantly
7. Use filters, checkboxes and action buttons to clean up

Traffic light

Symbol Color Default Meaning
NEW Yellow #f6f787 File not found in INDEX — keep it or back it up
MAYBE Pink #f4b4f2 Same name+ext found, but size differs >1% — check manually
DUPE Green #d4e9da Same name+ext+size — very likely a duplicate

Features

  • Multi-path INDEX — each index can span multiple source folders (e.g. "All Movies" = A:\moviez + A:\gopro)
  • Subfolder overlap detection — adding a subfolder of an already-listed path is blocked with a clear message
  • Path list sorted alphabetically — always tidy, regardless of add order
  • Fast scanning — SQLite with indexed lookup, no hashing, no network thrashing
  • ESC to cancel scan — abort a running index build at any time; partial count is shown
  • Subfolder option — SCAN folder can optionally include subfolders (checkbox)
  • Filter bar — All / NEW / MAYBE / NEW & MAYBE / DUPLICATE with one click
  • Persistent filter — active filter is remembered across sessions
  • Persistent index selection — last selected index is restored on next launch
  • Local file info in result — MAYBE and DUPE rows show local size + date in the filename column
  • File Info dialog — right-click -> Info shows LOCAL vs INDEX file details side by side (resizable)
  • Checkboxes — select individual files or use Select All / Deselect All (filter-aware)
  • Move to Recycle Bin — safe delete, recoverable
  • Permanent Delete — with confirmation dialog
  • Copy to clipboard — right-click -> Copy puts the file into the Windows clipboard, paste it anywhere in Explorer (Ctrl+V)
  • Copy selected — action bar "Copy" button copies all checked files to clipboard at once (multi-file paste supported)
  • Explore Local — right-click -> opens Explorer with the local file selected
  • Explore Index — right-click -> opens Explorer with the INDEX match selected (disabled for NEW files)
  • Right-click context menu — Explore Local / Explore Index / Copy / Info / Move to Recycle Bin per single row
  • Tab-aware Reset in Settings — Reset button resets only the active tab (Colors or Exclude Patterns) to defaults
  • Exclude patterns — skip files like desktop.ini, *.tmp, thumbs.db
  • Customizable colors — pick your own background colors for each status
  • App icon — custom .ico included
  • Window position memory — saves on move/resize, skips maximized state
  • Last SCAN folder — restored automatically on next launch
  • ESC to cancel compare — abort a running comparison at any time

Index management buttons

Button Action
New Create a new index (one or multiple paths)
Edit Add or remove paths from the selected index
Rescan Rebuild the index for the selected entry
Rename Rename the selected index entry
Delete Remove the index entry and its database (no confirmation)
Gear Open settings (colors, exclude patterns)

Requirements

Running from source:

pip install send2trash pywin32
python SimpleDuplicateChecker.py

Running as .exe: no Python, no extra installation needed — everything is bundled.


Building the .exe (Windows)

pyinstaller --onefile --windowed --icon=icon.ico --name SimpleDuplicateChecker SimpleDuplicateChecker.py

The .exe will be in the dist/ folder. Copy it anywhere together with icon.ico — it creates SimpleDuplicateChecker.config and an indexes/ folder next to itself on first run.


File structure

SimpleDuplicateChecker.exe          <- the app (after building)
icon.ico                            <- app icon (copy next to exe)
SimpleDuplicateChecker.config       <- settings + index registry (JSON)
indexes/
    a1b2c3d4e5f6.db                 <- index database (one per entry)
    9f8e7d6c5b4a.db

Config format

{
  "indexes": [
    {
      "uuid": "a1b2c3d4e5f6",
      "label": "NAS Complete",
      "paths": ["A:\\"],
      "last_scan": "03.04.2026 18:12",
      "file_count": 727495
    },
    {
      "uuid": "9f8e7d6c5b4a",
      "label": "All Movies",
      "paths": ["A:\\moviez", "A:\\gopro", "A:\\drohnen"],
      "last_scan": "03.04.2026 19:00",
      "file_count": 12483
    }
  ],
  "last_scan_folder": "C:\\Users\\Me\\Downloads",
  "last_index": "NAS Complete",
  "last_filter": "green",
  "window": { "width": 1200, "height": 750, "x": 100, "y": 80 },
  "colors": {
    "green_bg":  "#f6f787",
    "yellow_bg": "#f4b4f2",
    "red_bg":    "#d4e9da"
  },
  "exclude_patterns": ["desktop.ini", "thumbs.db", ".DS_Store"]
}

Note on config key names: green_bg, yellow_bg, red_bg reflect the original traffic-light logic, not the actual display colors. Current defaults: NEW=yellow, MAYBE=pink, DUPE=green. These keys are intentionally unchanged for backwards compatibility.


Matching logic

Field Used
Filename (without extension) yes
Extension yes
File size yes - tolerance +-1%
Date modified displayed only, not used for classification
Hash not used - by design

INDEX: always recursive - indexes the full subtree of all configured paths.

SCAN folder: flat by default - enable "Include subfolders" for recursive scan.


Workflow tip

  1. Build an INDEX for your NAS share (once, then rescan every few days)
  2. Pick a local folder to clean up as SCAN folder
  3. Set filter to NEW - copy those files to NAS in the background
  4. Hit Compare again - filter stays on NEW, showing only what's left
  5. Filter to DUPLICATE - select all -> Move to Recycle Bin
  6. Filter to MAYBE - use right-click -> Info to compare details

Roadmap

  • v1.0 - Scan & compare, traffic light, filter, checkboxes, delete actions
  • v1.1 - Include subfolders option, app icon, version number
  • v1.2 - Multi-path INDEX entries, NEW & MAYBE filter, persistent filter state
  • v1.3 - File Info dialog, local size/date in filename column
  • v1.3.1 - Info window resizable, remove horizontal scrollbar
  • v1.3.2 - Remember selected index across sessions
  • v1.3.3 - Fix: filter no longer resets after Compare
  • v1.3.4 - Save window geometry on move/resize, skip maximized state
  • v1.3.5 - Edit button for index entries
  • v1.3.6 - Delete index button (removes entry + .db file)
  • v1.3.7 - Fix NameDialog size/cancel, auto-scan non-root paths
  • v1.4 - Unified index type (multi-path only), simplified UI
  • v1.4.1 - Fix Edit button visibility after delete or cancelled scan
  • v1.4.2 - Subfolder overlap detection, version shown in dialog
  • v1.4.3 - ESC cancels index scan, Rescan removed from Edit dialog
  • v1.4.4 - Path list sorted alphabetically on add
  • v1.4.5 - Rename button for index entries
  • v1.5 - Copy to clipboard (single via right-click, multiple via action bar); file sizes shown with 3 decimal places; button order New → Edit → Rescan → Rename
  • v1.6 - Explore Local / Explore Index in right-click menu (opens Explorer with file selected; Explore Index disabled for NEW files)
  • v1.6.1 - Tab-aware Reset button in Settings; *.tmp added to exclude pattern examples; note added that patterns only affect SCAN comparison

Dependencies

Package Purpose License
send2trash Move files to OS Recycle Bin BSD
pywin32 Copy files to Windows clipboard (CF_HDROP) PSF
pyinstaller Build standalone .exe (optional) GPL

All other functionality uses Python stdlib only (tkinter, sqlite3, json, threading, fnmatch).


License

MIT - see LICENSE

About

This tool lets you create an index of your local storage (e.g. NAS) and checks if lokal files are duplicates or needs to be secured

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages