DEV Community

orville wang
orville wang

Posted on

Deleting Photos Is Not a Storage Problem

I have built photo cleanup software, and the most surprising thing I learned has nothing to do with machine learning or storage optimization. It is about trust.

The Real Problem

Storage is technically simple. You buy more iCloud space. You delete duplicates. You offload to an external drive. If storage were the real blocker, everyone with a 256 GB phone would have a clean camera roll.

They do not. People with 512 GB phones have a messy camera roll. People with 2 TB iCloud plans have a messy camera roll. Storage is not the constraint — it is the excuse.

The real constraint is fear.

Fear of deleting the one photo that mattered. Fear of losing the last picture of someone. Fear of realizing three weeks later that you need that screenshot and it is gone forever. This is not irrational. It is a completely reasonable response to tools that ask you to make irreversible decisions with incomplete information.

The Trust Deficit

Most photo cleanup tools operate on one assumption: the user wants to delete as much as possible. They sort by size, surface the biggest files, and say "click here to free up 12 GB." They are optimized for storage recovery, not for trust.

But deleting photos is fundamentally different from deleting files. A duplicate of a tax document can be deleted safely. A duplicate of your child's first steps is not a duplicate — it is the angle from a slightly different moment, and people can tell the difference.

This is why the trust deficit exists. The tool cannot know which photos matter, so it optimizes for what it can measure: file size, similarity scores, blur detection. The user feels the gap between what the tool suggests and what they value, and they respond rationally: they ignore the tool entirely.

A Different Approach

What if a photo cleaner did not ask you to decide? What if it grouped similar items, labeled them by type (screenshot, duplicate set, blurry shot), and let you review in bulk?

  • Screenshots are visually distinct from real photos — flat UI regions, status bars, text density. A Core ML classifier can flag them with high precision, no cloud required.
  • Duplicates and near-duplicates can be clustered by perceptual hash and ranked by sharpness. Show the set, highlight the best one, let the user swipe.
  • Blurry shots — pocket photos, motion blur, accidental captures — have zero sentimental value and a blur-detection model catches them reliably.

The key difference: the tool does not decide. It organizes. The user reviews groups, not individual photos. Deleting 300 screenshots at once feels safe. Deleting one at a time feels risky.

On-Device Is Not Optional

For this kind of tool, on-device processing is not a nice-to-have. A person's photo library is the most intimate dataset they own. Uploading it to a server to classify screenshots is a terrible trade. Core ML and the Vision framework run classification, feature extraction, and perceptual hashing directly on the Neural Engine. A modern iPhone can scan thousands of photos locally in minutes.

This is the approach behind Swipe Cleaner: on-device Core ML classification for screenshots, duplicates, and blurry shots, with nothing ever leaving the phone. You can check out the project here: https://www.opennomos.com/en/project/01KW95TC7VFJXZNYHNV3SJ04CN

What Builders Should Take Away

If you are building a cleanup tool, a recommendation system, or anything that asks users to delete their own data: the trust deficit is your actual product problem. Until you solve for "what if I delete the wrong thing," every gigabyte freed is an accident the user suspects might have cost them something.

Group. Label. Let the user review. Never decide for them. That is how you build a photo cleaner people actually use.

Top comments (0)