Why we built similar-photo grouping into Culr

Last year, a photographer sent us a message that stuck with me. She'd taken 47 near-identical shots of the same moment. Culr had helped her delete the obvious dupes, but she was still staring at a wall of almost-identical frames, trying to pick the best one by eye. She asked, simply: 'Why can't the app just group these for me?' We didn't have a good answer. So we built one.

The 47-frame problem

Anyone who shoots photos on their phone, or especially anyone who photographs events, knows the feeling. You tap the shutter button three times in a second to make sure you get the shot. Then you do it again. Then again. By the end of a wedding, a concert, or even just a garden party, your camera roll is full of photos that are almost, but not quite, the same.

The problem isn't duplication in the technical sense. Duplicate detection looks for pixel-perfect matches or near-identical files. But what about photos taken half a second apart, where everyone's expression is slightly different, or the light has shifted just enough? Those photos exist in a grey zone. They're not duplicates. They're 'similar'. And they're the real reason people with 5,000+ photos in their roll feel like they're drowning.

Most camera roll cleaners ignore this problem entirely. They'll find your 12 accidental screenshots and offer to delete them all at once, which is useful. But they don't help you sort through 47 frames of the same moment and pick the sharpest, clearest one. So users end up doing that work by hand, which defeats the purpose of having a cleaning app in the first place.

What made it different this time

When we started Culr, we didn't set out to solve the similar-photo problem. The core feature was always the swipe-cull workflow: keep or delete, frame by frame, with an undo button. That's how photographers actually work. But as we watched people use the app over the first few months, we kept hearing the same request. 'Can you group similar shots so I don't have to make 47 decisions?'

The technical challenge was real. You can't just look at file size or timestamp. Photos taken seconds apart on the same subject often have wildly different compositions, focus points, and lighting. You need something that actually understands what's in the frame. We decided to use Vision clustering to group photos that are genuinely similar in content and composition, not just timestamp or metadata.

But here's what mattered more: we had to make the grouping understandable to the user. When you open a group in Culr, you see all the similar photos laid out together. You can swipe through them. You can see which ones are sharper or have better focus. You can pick the keeper. It's not a black box that deletes for you. It's a tool that does the boring work of categorisation, and leaves the actual decision to you.

The burst-ranking question

Grouping similar photos opened up another question: if we're clustering frames that are nearly identical, why not also rank them by sharpness? Phone bursts are where this matters most. You press and hold the shutter, and your phone fires off six or eight frames in quick succession. One of them is usually the keeper. The others are soft, slightly blurred, or have someone's eyes half-closed.

We built blur detection using CIEdges sharpness scoring, and then added a per-frame analysis that ranks each photo in a burst. The app highlights the sharpest frame as the likely keeper. Again, you're not forced to take our recommendation. You might prefer a slightly softer frame because the composition is better, or the moment feels right despite the focus being a pixel off. But the grunt work of scanning through eight frames to find the sharpest one is done for you.

This felt like the natural evolution of similar-photo grouping. Once you're clustering photos together, ranking them makes the next decision faster.

Why this matters for your camera roll

Similar-photo grouping isn't glamorous. It doesn't generate the kind of 'wow, this cleaned up 10GB!' moment that some apps pursue with scare tactics. But it's honest work. It solves the actual problem that people with thousands of photos face: not the rare duplicate that was taken twice by accident, but the hundreds of almost-identical frames that pile up over weeks and months.

When you use Culr's swipe-cull workflow, you're making a genuine choice about every photo. Keep it or delete it. But when you come across a group of 23 similar shots, that's a lot of individual choices to make. The grouping feature lets you treat them as a cluster, see them all at once, and pick the best one without scrolling through the rest of your library in the meantime. That's a difference in how the whole experience feels.

We also noticed something else: photographers trust this more than they trust automatic batch-delete tools. Because you're still the one making the final call. The app groups the photos, ranks them by sharpness, maybe even recommends a keeper. But you're the one who sees all the options and decides which one to keep. That's why photographers who shoot weddings or events have been the most enthusiastic users of this feature. They know what it's like to have 200 photos from a single hour, and they know why picking the right one matters.

The thing we got wrong

Early on, we thought we could make similar-photo grouping available to everyone who signed up. Then we realised it was a feature that required more processing power than we could afford to give away for free. Vision clustering, burst ranking, sharpness detection - these all take CPU time and battery. So we made it a Plus feature, which felt like a compromise. We built something people asked for, and then we put it behind a paywall.

But here's what surprised us: people weren't upset. Users understood that if you want an app to do intelligent clustering on thousands of photos, someone has to pay for the compute. We're not running ads or tracking. We're not phoning home with your photos. Everything happens on your device. That means there's no hidden business model subsidising the free tier. Free is free. Paid features cost money to run.

The photographers in particular seemed to get it immediately. They're used to paying for tools that save them time. And this saves them genuine time. Instead of culling 47 frames one by one, you cull one group and move on.

What we learned

Building similar-photo grouping taught us something fundamental about camera roll cleaning. It's not about finding hidden space or scaring people into thinking their phone is 'damaged'. It's about helping people make sense of the photos they've taken. Most people don't want their camera roll cleaned by a robot. They want help managing the decisions they've already made by pressing the shutter button.

Similar-photo grouping is boring. It's not a headline feature. But it's the kind of feature that, once you use it, you wonder how you ever managed without it. That's the difference between a cleaning app and a utility you actually trust.

When you're staring at your camera roll and you see three nearly-identical shots of the same sunset, which one do you actually need to keep? That question is harder than most app makers think.

Want to try Culr?

Visit Culr →