Skip to content

About

Native macOS app to find and clean duplicate files — turbo scan, package safety, local & NAS

Resources

Stars

4 stars

Watchers

0 watching

Forks

Latest commit

 

History

23 Commits

Folders and files

Repository files navigation

Fast Duplicate Finder

English | 简体中文

A native macOS app that finds and removes duplicate files on local disks and network volumes (NAS) — fast by default, with safety checks before cleanup.

version platform arch license

Features

  • Turbo scan — Size buckets + multi-point xxHash; trusted for default keep/delete marks
  • Precise compare — Optional per-group full-file check; becomes a green Compared badge when done
  • Packages as wholes — .app, disc packages, etc. stay opaque; compared as single items (structure + light content checks)
  • Purpose-risk safety — Locale / multi-product / package-shell roles are flagged and not pre-checked for delete (different filenames alone are fine)
  • User-controlled cleanup — Checkbox selection per item; Clean Up uses your marks; Trash by default
  • Network / NAS aware — Lower concurrency, path-ordered hashing, sequential-friendly network path
  • Scan cache — Reuse hashes across runs; package fingerprints skip interior walks when mtime is unchanged
  • Modern UI — Dense outline results, filters (All / Needs review / Packages), search, timing breakdown
  • Language — English & Simplified Chinese, follows macOS Language & Region (no in-app language switch)
  • Settings — Gear or ⌘, (standard Settings window)

Requirements

  • macOS 13 or later
  • Apple Silicon recommended (build.sh targets arm64)

Installation

Download (recommended)

Download the latest FastDuplicateFinder.zip from the Releases page:

  1. Unzip the file
  2. Drag Fast Duplicate Finder.app into /Applications
  3. First launch: right-click the app → Open (ad-hoc signed, not notarized)

Older releases →

Build from source

git clone https://github.com/kDolphin/Fast_Duplicate_Finder.git
cd Fast_Duplicate_Finder
bash build.sh
open "build/Fast Duplicate Finder.app"

Install to Applications:

cp -R "build/Fast Duplicate Finder.app" /Applications/

Xcode (optional)

open finddup.xcodeproj
# Scheme: finddup · Product: Fast Duplicate Finder

How to use

  1. Add one or more folders in the sidebar.
  2. Click Start Scan.
  3. Review groups: expand, mark items to delete (or leave purpose-risk groups unchecked).
  4. Optionally run Precise compare on a group you are unsure about.
  5. Clean Up → preview → Trash / permanent per Settings.

Settings: ⌘, or the gear icon.

Changelog

1.0.9

  • Default marks — Turbo multi-point matches are trusted; large-file / crowded-bucket “Needs review” heuristics removed so most groups are pre-checked after scan
  • Purpose risk — Only locale, multi-product role, and package-shell cases block auto-check (not “different filenames” alone)
  • Group titles — Related/same basenames show a representative name; unrelated names use the count label
  • Precise compare UX — Per-group action (blue) → green Compared badge; spinner only on the active group; no layout-jumping top progress strip; purpose-risk groups can compare too
  • Rescan persistence — After compare, the scan snapshot stores verified/precise groups so the next identical scan keeps Compared

1.0.8

  • Scan cache — Split per volume so a home scan does not load NAS hashes; Settings shows real on-disk size
  • Precise compare — Results are saved and reused on the next scan; full-file xxHash; can be stopped; UI stays responsive on tens of thousands of groups

1.0.7

  • Search + Clean Up — Cleanup, Will free, and the preview only include marked files that match the current search (other marks stay until you clear the search)

1.0.6

  • Updates — Optional daily check (and Check for Updates…) against GitHub Releases; never downloads or installs
  • Will free — Shows marked copies in the current filter (same scope as Clean Up)
  • Search — Typing stays responsive on large result lists

1.0.5

  • Folders persist — Chosen scan locations restore on next launch (security-scoped bookmarks)
  • First scan — Hash cache loads off the main thread; no more freeze at 5% “Scanning files…”
  • Cleanup — Mixed local + NAS batches no longer permanently delete local files; groups update without a full rescan
  • Compare cache — Precise SHA-256 verify no longer splits the same content on the next turbo scan
  • Sidebar — Add / Clear / drop hit the full control; empty and cancelled scans have their own result screens

1.0.4

  • Scan cache — Merge per scan root so NAS (/Volumes/…) hashes are not wiped by a later home scan; progressive cache flush during long network hashes
  • NAS progress — Shows hits · new · conc so cache reuse is visible when only new files need hashing

1.0.3

  • Results UI — Expand/collapse all is O(1) (no freeze on 10k–40k groups); purpose-risk badge keys precomputed
  • Clean Up — Button count and delete batch respect the current filter (All / Needs review / Packages) and search
  • Settings cache — Entry count updates immediately after scan or clear (no app relaunch required)

1.0.2

  • NAS enumeration — Parallel first-level subtree listing (concurrency 6); reuse package metadata to avoid extra SMB RTTs
  • Large-library prepare / finalize — Faster list fingerprints, in-memory hash cache, no incomplete snapshot on cancel; group assembly without filesystem path resolution; async cache write
  • Purpose-risk cleanup UX — Toolbar Apply keep suggestions and per-group Mark others (still unchecked by default for safety)
  • Scan timing — Breakdown bars sum to wall-clock total; clearer multi-minute duration format

1.0.1

  • NAS performance — Three-point sample windows reduced to 12 KB; network hash concurrency fixed at 6
  • Cancel / resume — Stopping a scan no longer publishes an incomplete result snapshot (which made the next run look “done” too early). Partial per-file hashes are still kept for faster resume

1.0.0

  • Initial public release

Known limitations (v1.0)

Topic Detail
Sandbox Only folders you grant access to can be scanned
Signing Ad-hoc signature; not notarized by Apple
Heuristics Purpose-risk rules are path/name heuristics; rare false positives/negatives possible
Architecture build.sh is arm64-focused

Privacy

Action Detail
Read Folders you select (App Sandbox + user-selected files)
Write Only when you confirm cleanup
Network Only mounted volumes you choose to scan
Cloud Nothing uploaded — all work stays on your Mac

Project layout

finddup/                 # App sources, assets, localizations
  Models/  Services/  Views/
  en.lproj/  zh-Hans.lproj/
build.sh                 # → build/Fast Duplicate Finder.app + zip
finddup.xcodeproj
LICENSE

Stack

  • Swift / SwiftUI
  • CryptoKit + custom xxHash
  • No third-party dependencies

Build outputs

bash build.sh
# → build/Fast Duplicate Finder.app
# → build/FastDuplicateFinder.zip

Troubleshooting

Issue Try
Permission denied Re-select the folder when prompted
Slow on NAS Keep the volume mounted; first full scan warms the cache
Language wrong Change system / per-app language in System Settings → Language & Region, then relaunch
Build fails Use full Xcode (not only CLT); run bash build.sh from the repo root

License

MIT © contributors

Repository

github.com/kDolphin/Fast_Duplicate_Finder

About

Native macOS app to find and clean duplicate files — turbo scan, package safety, local & NAS

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages