DupeOut
Support
Built and maintained by one person. Email gets you a real reply, usually within a day.
Contact
Email: hechen.dream@gmail.com
TestFlight feedback: use the in-app "Send Beta Feedback" option in TestFlight — it routes attachments and device logs.
FAQ
- What's the difference between Strict, Balanced, and Loose?
- Strict surfaces only same-moment bursts and pixel-identical copies — high confidence, low recall. Balanced (the default) also catches near-duplicates that look like the same shot taken seconds apart. Loose adds semantically similar photos — different angles or lighting of the same subject. Switch presets from the Duplicates header; rescan happens instantly using the cached features, no re-indexing.
- I deleted something by accident. Can I get it back?
- Yes. Open the Trash tab. DupeOut keeps a 30-day local backup of every deletion you make through the app. Tap Restore on a row to put the photo back in your library with its Live Photo pairing intact (if it had one). After 30 days the local backup is purged automatically.
- Does DupeOut work with iCloud Photos?
- Yes. The engine asks PhotoKit for each asset's image data; if a photo is iCloud-only, PhotoKit downloads it on demand the same way Photos.app would. iCloud-only photos take slightly longer to scan because of the download step. Photos that fail to download (offline, account issue) are skipped and the indexing pass moves on.
- How does it find duplicates without uploading my photos?
- For each photo DupeOut computes a perceptual hash, a small Vision feature embedding, sharpness via Laplacian variance, and a luminance histogram — all on-device using Apple's Vision framework. Clusters are formed by comparing those tiny feature vectors; the original images never leave your iPhone. Full privacy details →
- What goes in the Bad Photos tab?
- Five categories: Corrupted (visible storage damage), Overexposed (blown-out near-white frames), Too Dark (pocket shots with the lens covered), Low Info (uniform/featureless captures — finger over lens, blank scans), Blurry (out-of-focus or motion-blurred). Each category gates on multiple signals — screenshots and photos with detected faces are intentionally exempted from Dark / Blurry / Low-Info to avoid false positives. Tune via Settings → Bad Photos → Sensitivity (Strict / Balanced / Aggressive).
- The keeper algorithm picked a weird photo. Can I override it?
- Yes. In any cluster's detail view, swipe to the photo you'd rather keep and tap the "Make Keeper" capsule in the top-leading slot. The previous keeper auto-stages for trash. The cluster list also shows a crown badge on the chosen keeper, with a distinct accent when it's a manual override versus the app's suggestion.
- Why does scanning take a while the first time?
- The first scan computes a feature embedding for every photo — that's the expensive step. Subsequent scans reuse the cache; only photos added or changed since the last scan get re-processed. A library of ~10,000 photos takes a few minutes the first time, ~30 seconds on rescans.
- Will DupeOut work without internet?
- Yes, completely. The app makes zero network calls. The only time the network is involved is when iCloud Photos transparently downloads an iCloud-only photo for scanning — and that's iOS's network, not DupeOut's.
- How do I export my data?
- There's nothing to export. DupeOut doesn't store your photos — it stores a small local index of feature vectors that's regenerated from your library on demand. To wipe the index, Settings → Cache → Clear cache. To free space, use the Trash tab to permanently purge already-trashed photos before the 30-day window expires.
- Something is broken / I have an idea
- Email hechen.dream@gmail.com. Bug reports with screenshots and the device + iOS version get fastest turnaround.
Known issues
None at this time.
Release notes
Release notes for each TestFlight build are visible in the TestFlight app. Public-release notes will live here once DupeOut ships to the App Store.