Pro is free for family & friends — for a limited time. Grab your copy →
Desktop-first · macOS & Windows · Read-only by default

Get your files
in a row.

DeDuck finds the duplicate and near-identical files clogging your drives and NAS, then tidies everything into one clean master library — without ever modifying your originals.

Inventory before action · Originals are immutable · Every operation is logged

DeDuck — Duplicates
The row
128,460
files inventoried
3,218
duplicates found
47 GB
reclaimable
Read-only by default
Originals are immutable
Every action is logged
Fast incremental rescans
Nothing destructive happens automatically
How it works

The duck does four things, in order.

Friendly on the surface, ruthless about clutter underneath. Its one job is to bring order — leading your files into a single clean row, never hoarding them.

01

Scan

Finds and gathers scattered files across drives, folders and NAS — walking each once, then rescanning incrementally.

02

Compare

Spots exact and look-alike copies through five escalating levels of matching — from file size all the way to perceptual similarity.

03

Organize

Places everything in order — a curated master library, sorted by media year, type or folder, with identical files stored once.

04

Lead

Leaves you with everything in line: a clean, duplicate-free row you can trust — and a full report of what changed.

What's inside

A complete home for your digital archive.

DeDuck inventories, understands, preserves and organizes everything across external drives and NAS devices — with cloud connectors on the roadmap.

Drive discovery & identity

Finds mounted volumes and recognizes the same physical drive across remounts. Add any folder or NAS mount as a scannable root.

Inventory scanning

Walks a drive once and records every file, built to handle millions with batched, resumable writes. Rescans skip unchanged files and flag vanished ones.

incremental · resumable

Duplicate detection

Five escalating levels — size, xxHash quick hash, SHA-256 confirmation, media verification and perceptual similarity for near-identical images.

5 levels

Duplicate cleanup

Choose the copy to keep — newest, oldest or shortest path — preview the exact plan, then move to Trash, Quarantine (undoable) or delete. A group is never left without a copy.

preview first

Compare & reconcile folders

Match two folders by content — Matched, A-only, B-only and Conflicts — then reconcile: Make A = B, or fill one from the other. Every copy is additive; nothing is moved or overwritten.

matched by hash

Media metadata

Dimensions, camera make and model, capture time, GPS and a perceptual hash — degrading gracefully when the media extra isn't installed.

Recommendations

Evidence-based suggestions: reclaimable duplicate space, folders that live on only one drive, stale scans. Nothing destructive ever happens automatically.

Dashboard & reports

Totals, category breakdown, largest folders and scan history — in a simple native window or straight from the command line.

Master libraries

Build one or several curated libraries (DDL<n>) — originals stay put, identical files stored once. Organize by type, year/month or flat, and merge libraries into one.

3-2-1 backup coverage

Tag folders Master / Onsite / Offsite and check coverage — matched by content hash, so it counts even if a backup renamed the file. See exactly which files still need a second (or offsite) copy.

3 copies · 2 media · 1 offsite

Trust & safety, built in

Every file is re-hashed right before it's touched, every action is written to an audit trail, and destructive steps always require explicit approval.

Duplicate detection

Five levels of certainty before anything is called a duplicate.

DeDuck escalates carefully — cheap checks first, cryptographic proof before any action. Only byte-identical groups are ever eligible for cleanup.

LEVEL 1

File size

An instant first pass — files of different sizes can't be identical.

LEVEL 2

xxHash quick hash

A fast, non-cryptographic fingerprint to narrow the field cheaply.

LEVEL 3

SHA-256 confirm

Cryptographic confirmation that two files really are byte-for-byte equal.

LEVEL 4

Media verification

Validates decoded media so photos and videos are checked as media, not just bytes.

LEVEL 5

Perceptual similarity

Finds near-identical images — resized, re-saved or lightly edited look-alikes.

The signature

Scattered → waddling → in a row.

The whole promise, in one motion: doubled, disordered files settling into a single clean line behind the duck.

Scattered
Waddling
In a row
Trust & safety

Built to be trusted with your only copy.

DeDuck's core principles aren't a settings screen — they're how the engine is wired. Only Move to folder and Delete ever change an original, and both ask first.

Read-only by default

Scanning and detection never write to your drives. Data lives only in DeDuck's own application-support folder.

Preview before anything happens

See the exact cleanup plan — every file marked Keep, Moved or Deleted — before a single one is touched.

Reversible by default

Cleanup moves duplicates to the Trash unless you choose otherwise. Permanent deletion is always double-confirmed.

A group is never left empty

Every file is re-hashed right before it's touched, and a duplicate group always keeps at least one copy.

A full audit trail

Every action is written to a log and a CSV report — Name, Location, Size, Modified, Type, and Keep / Moved / Deleted.

$ deduck scan /Volumes/Photos
walked 128,460 files · 512 GB · incremental
$ deduck dedupe
3,218 exact duplicates in 1,140 groups
$ deduck dupes --keep newest
dry run — nothing changed. 47 GB reclaimable.
 
$ deduck dupes --keep newest --apply --mode trash --yes
✓ moved 2,078 copies to Trash · report written
originals untouched · every group kept a copy
Help & quick guide

Everything you need to get in a row.

This mirrors the in-app Help tab. DeDuck is read-only by default — your originals are never modified. Only Move to folder and Delete change originals, and both ask first.

Getting started
  • SCAN → “Add folder…” → pick a folder in Finder. DeDuck inventories just that folder; nothing else is touched.
  • Re-run “Add folder…” or “Rescan all…” anytime — unchanged files are skipped automatically.
  • While scanning, the top bar shows progress, file count, size, ETA, and Pause / Stop.
The tabs
  • Scan — the folders you've scanned (the ✕ removes DeDuck's index only, never your files), plus an All files browser and Collections, Largest folders and Largest files.
  • DedupeDetect Dupes, then tick the copies to clean up and act (Trash / Quarantine / Delete).
  • Compare — match two scanned folders by content and reconcile them additively.
  • Library — build, organize and merge one or more curated master libraries.
  • Backups — tag folders Master / Onsite / Offsite and check 3-2-1 coverage.
  • Activity — job status, integrity checks, recommendations, reports, and storage & history.
  • Help — this quick reference, plus About (version + core principles).
Cleaning up duplicates

1. Dedupe → Detect Dupes. DeDuck rescans, then finds byte-identical copies (Exact). Tick Include Similar Photos to also group visually-similar images (Similar; slower, needs the media extra). Exact and Similar never overlap.

2. Tick the copies to clean up — the keeper stays. “Show only ticked” narrows the view to the marked copies.

3. Clean up…Move to Trash (reversible), Quarantine (undoable, restorable from Activity), or Delete permanently (double-confirmed).

4. A CSV report is written for every cleanup — Name, Location, Size, Modified, Type, and Keep / Moved / Deleted.

Safety: a group is never left without a copy, and each file is re-checked right before it's touched.

Compare & reconcile folders

Pick two scanned folders (A and B) and Compare. DeDuck matches by content (hash), so a file counts as present even if it was renamed or moved.

  • Four views: Matched · A only · B only · Conflicts (same path, different content). A shared file-type filter + search drives both sides; each pages independently.
  • Reconcile in bulk: Make A = B (union both ways), Fill A (A ⊇ B) or Fill B (B ⊇ A). Or tick individual rows and Copy selected →.
  • Every copy is additive — it mirrors the source's folder structure and keeps both on conflicts; nothing is moved or overwritten. Re-scan A and B afterwards to refresh.
Master libraries

A library is a DeDuck-owned folder (DDL<n>_<name>) holding an organized copy of your files — your originals are never touched. You can have several.

  • New library… names it, picks how to organize — by asset type, by year/month, either order, or flat — and whether to deduplicate or keep every copy.
  • Update this library tops it up; changing Organize by re-files it into the new layout.
  • Merge… folds libraries into one target (optionally de-duplicating). Delete removes only that library's copies — never your originals.
Backups (3-2-1)

Tag each folder Master / Onsite backup / Offsite, then Check backup coverage. Aim for 3 copies, on 2 media, with 1 offsite.

  • Onsite is matched by content hash (counts even if the backup renamed the file); offsite is read from the manifest written by scripts/backup_offsite.sh (rclone → cloud).
  • The table lists files that still need a backup, with the same filters and views as Scan.
Reports & your clutter score

Generate a shareable Digital Clutter Report — a tidiness grade, reclaimable space, what's using space by type, and your biggest duplicate groups — from Activity → Reports, the Library tab, or deduck clutter. Open it to Print / Save as PDF.

  • Reports save to ~/Documents/DeDuck Assets/Reports/. Generation is on-demand by default; you can opt into auto-generating one after each scan.
  • A cleanup CSV report is written after each cleanup (on by default; toggleable).
  • Auto-keep last N (10 / 20 / 50 / 100, or everything) caps Recent scans, Changes, File actions and saved Reports — older entries prune automatically.
Where things are saved
  • ~/Documents/DeDuck Assets/Duplicates (moved files), Reports (CSVs), and MasterLibrary (the curated copies).
  • ~/Library/Application Support/DeDuck/ — database, logs and config (internal; “Wipe all inventory” in Activity → Storage & history resets it).

Nothing is written to your scanned drives.

Good to know
  • System temp files (Office ~$…, *.tmp) are ignored automatically.
  • Scanning the whole Mac (/) is discouraged — pick specific folders; the app warns you.
  • DeDuck can run as a web server (python -m deduck serve) reached from other devices over Tailscale — see docs/DEPLOY-MACMINI.md. Cloud connectors (Immich, Google Photos, Lightroom) are on the roadmap.
Get DeDuck

Line up your
digital life, in a row.

Desktop-first for macOS & Windows. Download the installer, scan a folder, and let the duck lead — or run it as a private web server on your own Mac mini.

macOS & Windows · v0.24 · fully offline · cloud connectors on the roadmap