← DupeCheck

DupeCheck Help

Find and manage duplicate files across local and network volumes.

Why Duplicates Matter on Shared Storage

Media production workflows generate duplicates constantly. Project imports copy source footage into new timelines. Archive passes duplicate deliverables across volumes. Multi-editor environments scatter identical assets across shares and local caches. On shared storage, every duplicate consumes capacity your team can't use for new work.

DupeCheck is designed for environments where duplicate management needs to span network volumes, reach outside the user sandbox, and handle large file counts efficiently — the scenarios that matter most in media production and that sandboxed App Store tools can't address.

Getting Started

Quick Start

  1. Launch DupeCheck and add one or more source folders from the toolbar
  2. Click Scan to begin scanning
  3. Review duplicate sets in the main table, sorted by wasted space (every copy except one)
  4. Choose which copy of each set to keep: select a file and choose Promote to Primary, or right-click a folder in the sidebar and choose Mark Files Here as Primary…
  5. Clean a single file or set from the list, clean a folder from the sidebar, or click Clean Up to clean every set
  6. Every cleanup saves a report automatically; see them with File → Show Cleanup Reports in Finder
DupeCheck main window with duplicate groups and file preview

Main window showing duplicate groups sorted by wasted space, with file preview panel on the right.

Source Folders & Primary Copies

Source folder popover showing local and network folders with primary designation

Source folder management — add local and network volumes.

Adding Source Folders

Click the Folders button in the toolbar to add folders. You can add any combination of local directories and network-mounted volumes. DupeCheck scans all source folders and finds duplicates across them.

If one source folder is a child of another, the child is automatically excluded from the parent's scan to prevent double-counting. If you remove the child folder later, click Scan to pick up the files the parent was skipping.

DupeCheck scans only when you click Scan — not at launch, when a volume mounts, or when you add or remove a source folder. A source folder on a share that isn't mounted keeps its results and shows Not connected until the share mounts again.

Primary Copies

Each duplicate set has at most one primary copy: the one DupeCheck keeps during cleanup. The other copies in the set are the duplicates that cleanup removes or replaces. Primary is a property of a file, not of a folder, and scans never change it.

Network volumes: DupeCheck works with any network share that macOS has already mounted (SMB, NFS, AFP). Mount the share in Finder first (Go → Connect to Server), then add it as a source folder in DupeCheck. For large SMB shares, see NAS Helper.

The sidebar lists your source folders and every subfolder that contains duplicates, with a count of the duplicate files in it and below it. Select a folder to see only the duplicate sets with a file there; files in that folder are marked in the file list. Show or hide the sidebar with the Sidebar toolbar button or View → Hide Sidebar (⌃⌘S).

Right-click a file in the list and choose Go to Folder to jump to its folder in the sidebar. Right-click a folder in the sidebar to:

Each action asks for confirmation first. It covers every duplicate set with a copy in the folder or its subfolders, including source folders inside it. The type filter and search don't change what an action covers; they only change what the list shows.

Duplicate Folders

Find whole folders that were copied, such as a project copied to a second share, and clean the copies in one step. Click Folders above the list to see groups of identical folders: folders with the same file names, the same layout, and the same content. Only the highest identical folder is listed; its identical subfolders aren't listed again.

Folders are compared using the files DupeCheck recorded in its last scan. Small, hidden and excluded files aren't part of the comparison; DupeCheck checks them when you clean.

Keep One Copy and Clean the Others

  1. In the Folders list, right-click the folder you want to keep and choose Keep This Copy…. DupeCheck lists the other copies again, including the files it never scanned, and compares those files with the kept folder.
  2. Review the confirmation. Show Files lists every file to clean with the copy it's kept against.
  3. Click OK. In Move to Trash mode, if the other copies hold files DupeCheck never scanned that have no identical copy in the kept folder, the confirmation names them. Choose Remove Folders Anyway to remove them with their folder, or Keep Unscanned Files to leave those folders in place with them.

The files in the kept folder become their sets' primary copies where needed. The files in the other copies are then cleaned with the cleanup mode selected in Settings:

If a file in a folder you're cleaning no longer matches the kept folder, DupeCheck doesn't clean anything and asks you to scan again.

NAS Helper

Scanning a large SMB share from a Mac means listing and reading every file over the network. The NAS helper is a small program that runs on the NAS itself: it lists and hashes the files there, so finding files on a large share takes minutes instead of hours, and hashing no longer reads files over the network. Cleanup still moves and deletes files over SMB.

Setup

  1. Mount the share in Finder and add a folder on it as a source folder
  2. Choose DupeCheck → Connect to NAS Helper… and click Deploy Helper… for the share. DupeCheck copies the helper files onto the share and shows a command
  3. On the NAS, open a root shell (sudo -s), cd into the share if you can, and paste the command. It installs the helper as a service and starts it
  4. Back in DupeCheck, the share shows Connected. The first time, macOS asks to allow DupeCheck to find devices on your local network — allow it

Scans of source folders on that share then run through the helper. To go back to scanning over SMB, choose Disconnect; Uninstall… gives you a command to remove the helper from the NAS.

With SHA-256 or MD5 verification, background verification and the check before cleanup also run on the NAS. The helper has its own NAS helper hash workers and NAS helper enumeration workers settings (Settings → Performance, defaults 16 and 4); lower them if other people use the NAS while you scan.

SMB only. The NAS helper works with source folders on SMB shares. Folders on NFS, WebDAV or local disks scan as usual. With watching on, a folder that changes on a share connected through the helper is scanned through the helper (see Live Monitoring).

How Detection Works

Three-Phase Scan Pipeline

DupeCheck uses a multi-phase approach to find duplicates efficiently without hashing every file on disk:

  1. Enumeration — discover all files across source folders, collecting path, size, and modification date
  2. Size grouping — files with unique sizes across the entire database are skipped immediately. Two files can only be duplicates if they're the same size
  3. Content hashing — files that share a size are hashed for content verification. A fast multi-sample hash narrows candidates, then full SHA-256 or MD5 confirms the match

Hash Verification

Duplicates are always compared with multi-sample hashing during the scan. The Hash Method setting chooses whether cleanup also checks each file against a full-file hash first:

SHA-256 (Recommended)

Cryptographically strong verification. Hardware-accelerated on Apple Silicon for fast performance even on large files.

MD5

Alternative verification method. Faster on older hardware but less collision-resistant than SHA-256.

Multi-sample

No full-file hash before cleanup. Fastest, but relies on the multi-sample hash from the scan. Cleanup still skips a file whose primary is missing or that changed since the scan.

With SHA-256 or MD5, Verify in background after scan computes full hashes for all duplicates at low priority after a scan and logs any false positives in the Activity log.

Concurrent Processing

DupeCheck uses concurrent workers for both directory enumeration and file hashing. The default configuration (2 enumeration workers, 4 hash workers) balances speed with I/O pressure on the volume being scanned. Shares connected through the NAS helper use their own settings (16 hash workers, 4 enumeration workers by default).

Cleanup Modes

DupeCheck Settings showing cleanup mode selector with APFS Clone, Symlink, and Trash options

Three cleanup modes: APFS Clones, Symlinks, and Move to Trash.

DupeCheck offers three strategies for handling confirmed duplicates. Choose the mode that best fits your storage and workflow:

Replace with APFS Clones

The duplicate is replaced with an APFS clone of the primary copy. Clones share physical disk blocks but behave as completely independent files — applications see two separate files, but the underlying storage is shared. If either file is later modified, only the changed blocks are written (copy-on-write).

DupeCheck preserves the duplicate's original metadata (modification date, permissions, extended attributes) through an atomic clone-swap operation. The original file's inode is preserved, so references from other applications remain valid.

Requires APFS volumes. Clone mode only works on APFS-formatted volumes. Cross-volume duplicates are skipped automatically — the Clean Up confirmation tells you how many. DupeCheck checks clone capability when you add source folders and warns if any are incompatible.

Replace with Symlinks

The duplicate is replaced with a symbolic link pointing to the primary copy. This saves space without requiring APFS, but symlinks are visible to applications and may not work with all software. DupeCheck uses a safe rename-verify-move pattern to ensure atomic replacement.

Like clone mode, symlinks require both copies to be on the same volume. Cross-volume duplicates are skipped automatically — the Clean Up confirmation tells you how many.

Move to Trash

Duplicate files are moved to the system Trash. This is the simplest option — duplicates are removed but recoverable from Trash if needed. For privileged paths where the system Trash is unavailable, DupeCheck creates a DupeCheck-Trash recovery folder at the source root.

Cleanup confirmation dialog showing mode, file count, and recovery information

Cleanup confirmation — review mode, file count, and recovery options before any files are modified.

Protected Files

DupeCheck protects certain files from cleanup regardless of mode:

Live Monitoring

DupeCheck can continuously monitor source folders for new duplicates using the Start Watching / Stop Watching toolbar button. When watching is active, macOS FSEvents detects file changes in near real-time with intelligent debouncing to batch event bursts. Watching is off by default; the watching state persists across app launches.

On a share connected through the NAS helper, a folder that changes is scanned through the helper. Whether changes made from other computers are noticed depends on the file server: a Mac file server reports them, but some NAS servers report only the changes made from this Mac. Click Scan to pick up everything. If the helper isn't connected when a change arrives, the Activity log says which changes weren't scanned; the next scan covers them.

Changes you make from within DupeCheck — cleaning, renaming, or cloning duplicates — update the UI immediately without waiting for a rescan, regardless of whether watching is enabled.

Keyboard Shortcuts

DupeCheck supports full keyboard navigation. Press Tab to switch focus between the duplicate groups table and the file list below it. Use Up/Down arrows to navigate within the focused pane. The active pane is indicated by an accent-colored border.

File Actions (Edit Menu)

⌘C / ⌥⌘CCopy Path (⌘C in the duplicate list)
⌘RReveal in Finder
⌘ERename
⌘PPromote to Primary
⌘⌫Clean Selected Duplicate

Navigation (View Menu)

⌃⌘SShow / Hide Sidebar
⌘↑ / ⌘↓Previous / Next Group
⌥⌘↑ / ⌥⌘↓Previous / Next File
SpaceToggle Preview
TabSwitch between Groups and Files

All shortcuts are also shown in context menus for discoverability. Destructive actions show a confirmation dialog which can be suppressed via Don't Ask Again. Use Reset Dialogs in Advanced settings to re-enable suppressed confirmations.

Exclusions & Filtering

DupeCheck Settings showing exclusion categories and pattern configuration

Exclusion settings with implicit system protections, user-configured directories, and pattern-based filtering.

Implicit Directory Exclusions

The following directories are always excluded from scanning. These are detected automatically based on filesystem metadata and cannot be disabled:

Implicit File Type Exclusions

User-Configured Exclusions

Add directories to the exclusion list in Settings to skip them during scanning. The /Applications directory is excluded by default.

Exclude Patterns

Define filename-based exclusion patterns using glob syntax (*, ?) or regex (/pattern/). Patterns match against filenames only, not full paths. One pattern per line. Default patterns:

Minimum File Size

Files below the minimum size threshold are skipped during duplicate detection. The default of 100 KB is recommended — smaller files are rarely meaningful duplicates in media workflows and skipping them significantly reduces scan time. Options range from no minimum to 10 MB.

Type Filter and Search

The type filter and the search box only change what the list shows, to help you find specific media. They never change what a cleanup, a folder action or the Duplicates Report covers. To keep files out of DupeCheck, use the exclusions above.

Privileged Helper

By default, DupeCheck can only scan and modify files within your home folder. To operate on files outside your home directory — including shared volumes, system-wide locations, and other users' directories — enable the privileged helper in Settings.

Setup

  1. Enable Use privileged helper in Settings → Advanced
  2. DupeCheck registers a helper daemon — you may be prompted for your administrator password
  3. Approve the helper in System Settings → General → Login Items & Extensions (under "Allow in the Background")
  4. Grant Full Disk Access to the helper in System Settings → Privacy & Security → Full Disk Access

The helper status indicator in Settings shows green when the helper is running and ready, or orange when approval is still pending.

Why a helper? macOS application sandboxing limits what apps can access. The privileged helper runs as a separate daemon with elevated permissions, communicating with DupeCheck via XPC. This is Apple's recommended architecture for apps that need to operate outside the sandbox.

Reports & Export

Cleanup complete dialog with Export Report button

Every cleanup saves a report; Export Report saves another copy where you choose.

Every cleanup — including cleaning a single file or set from the list — saves a CSV report automatically. See them with File → Show Cleanup Reports in Finder. The Cleanup Complete message lists files that weren't cleaned and why, and Export Report saves a copy in the format chosen in Settings. Reports include per-file status, the action taken, recovery paths, and summary statistics.

Before a cleanup, Show Files in the confirmation lists every file it will process with the copy that is kept, and Save List… saves the list as a CSV file.

File → Export Duplicates Report… saves every file in every duplicate set, grouped by set, as a CSV file. The type filter, search and sidebar folder don't limit the report.

Export Formats

CSV

Machine-readable format with columns for status, action, file path, primary path, error message, file size, recovery path, and timestamp. Includes a summary footer with counts for succeeded, failed, and skipped files.

PDF

Printable report with title page, summary statistics, and per-file detail pages with color-coded status (green for success, orange for skipped, red for failed).

What Gets Reported

The report captures every file processed during cleanup, including:

Troubleshooting

Cleanup Fails on Network Volume

APFS clone and symlink modes only work when both copies are on the same volume. Cross-volume duplicates are automatically skipped in these modes. If most of your duplicates span volumes, use Move to Trash mode instead.

Helper Not Available

Files Not Found After Cleanup

In Trash mode, cleaned files are in your system Trash (recoverable via Finder → Trash). For privileged paths where system Trash is unavailable, look for a DupeCheck-Trash folder at the root of each source folder.

In Clone mode, both copies still exist — they just share physical storage blocks. The file at each path is fully functional and independently modifiable.

Scan Takes a Long Time

Stale "Busy" Files

If cleanup reports files as busy, DupeCheck checks whether the busy flag has been idle for more than 24 hours. Stale busy flags (common with SMB oplocks that weren't properly released) are automatically cleared before retrying the operation.

Database Reset

If the file index becomes corrupted or you want to start fresh, use Reset Database in Settings → Advanced. This stops any running scan, clears all scanned file records and requires a full rescan. Your source folder configuration and preferences are preserved.

Debug Logging

Enable Debug Logging in Settings → General for verbose diagnostic output. Logs are written to ~/Library/Logs/daveco/ and include scan progress, hash computations, cleanup operations, and error details.

← Back to DupeCheck Support Development on Ko-fi