FileDupes
Guide

Screenshots of your photos: why duplicate finders miss them

24 August 2026 · 9 minute read

It is the most ordinary thing in the world. You have a photo, and somewhere in the same folder you have a screenshot you took of that photo. Same picture, twice, both eating space. You run a duplicate finder over the folder and it groups neither. This is not a bug in your tool — it is what happens when you compare two images that share a subject and share almost nothing else.

What the file actually looks like

Take a phone photo, 1080 by 1440 pixels. Now take a screenshot of that photo open on the same phone, whose screen is 1080 by 2400. What lands on disk is not the picture. It is the screen.

The photo sits in the middle, scaled to fit the width. Above and below it are black bands, 480 pixels each, together filling 40% of the image. Painted on top of the upper band is the clock, the signal bars, the wifi arc and the battery. At the bottom there is usually a navigation pill.

So the two files disagree about almost everything measurable. The photo's proportions are 0.75 wide-to-tall. The screenshot's are 0.45. Nearly half of the screenshot is padding that has no counterpart in the original. Feed those two into a visual comparison and you get, measured on our own test images, 66%.

That number is well under any threshold worth using. As we covered when explaining how appearance gets measured, below roughly 94% you are in territory where two genuinely different photos can score as high as two versions of the same one. A tool that grouped a 66% pair would be a tool that groups anything.

The aspect ratio guard kills it before the comparison even runs

There is a second obstacle, and it fires first. Most careful duplicate finders refuse to compare images whose proportions differ by more than a few percent, because a crop is not a duplicate — grouping a crop with its original invites you to delete the full-frame version.

Here the difference is 0.75 against 0.45. That is 40%, not a few percent. The pair is discarded before anyone measures anything.

The obvious fix, and why it fails

The instinct is immediate: cut the black bands off, then compare. It is the right instinct, and the first attempt at it produces a result that looks like progress and is not.

Trimming flat edges off the screenshot works well. In our test the 1080×2400 screenshot came back as exactly 1080×1440, starting at row 480 — the photo recovered to the pixel. And the match went from 66% to 85%. Still not enough. Why?

Because the same trimming ran on the original photo too, and ate into it. The photo is a landscape: a sky that fades from blue to pale across the top, and a solid band of dark mountain along the bottom. Measured row by row, both of those are flat. The detector took them for padding and removed 189 rows.

So the comparison was no longer photo against photo. It was a perfectly recovered screenshot against a mutilated original. Fixing one side broke the other.

How to tell padding from sky

The distinction that solves it is not about the row. It is about the next row.

A band of padding is one colour, repeated. Row 5 and row 300 of a black bar are the same black. A sky is a gradient: it looks flat across any single row, but it shifts steadily as you move down. So instead of asking "is this row uniform?", the test compares every row against the tone of the very first row at the edge. Padding holds that reference for hundreds of rows. A sky drifts away from it within a few dozen and the walk stops.

That one change is what separates a frame from a photograph, and it costs nothing to compute.

The status bar interrupts the band

There is a wrinkle. The clock and the icons sit on the black band, and those rows are not flat. Walking down from the top edge, the run of padding breaks at row 38 — before it has covered even a tenth of the band.

The fix is to allow the walk to step over short interruptions and keep going, as long as real padding resumes on the other side. Which raises the question of how short is short, and that is where a second failure hides.

Our first attempt used a rule based on proportions: keep extending while most of the rows so far have been padding. It is a reasonable-sounding rule and it is wrong, because once the walk enters the photograph the accumulated count keeps the rule satisfied for a while. Instead of stopping at row 480, it carried on to 631, and from the bottom it stopped at 1733 instead of 1920. The result was a crop of 1080×1090 — an over-trim of 350 rows of actual photograph, which is worse than not trimming at all.

The rule that works is simpler: track the last row that was genuinely padding, and stop when the gap since then grows too long. A notification banner pulled down over the black band occupies about 7.7% of the screen height, so the tolerance has to clear that. At 6% the walk died on the notification; at 10% it stepped over and reached the true edge. Higher values changed nothing, so 10% is the tightest setting that does the job.

Never replace the signature — add one

Even with a perfect trim, there is a design decision that matters more than any threshold.

The temptation is to let the trimmed version replace the image's visual signature. Do that and every photo with a flat edge — every sunset, every studio shot on white, every document scan — quietly starts being compared by a different region than before. Pairs that used to group might stop. You would be trading a known set of successes for an unknown one.

The safer construction is to keep both. Every image retains its normal full-frame signature, and only images with detectable padding get a second signature of the recovered content. Two images group if any combination of their signatures matches.

The property this buys is worth stating plainly: nothing that was detected before can stop being detected, because the original comparison still happens, untouched. The new path can only add. On a 112-image test set the numbers came out at +56 newly detected pairs and zero lost, at every sensitivity setting.

A trap hidden in the frames

One more thing surfaced during testing, and it is the kind that would have quietly caused damage.

Two screenshots of completely different photos scored 94.6% against each other. Not because the photos resemble each other — because the black frame is half of each image, and identical in both. The padding dominated the signature and drowned out the content.

That failure predates any trimming; it is what a full-frame comparison does with two heavily letterboxed images. The remedy is narrow: when both images have detected padding, comparing them frame-against-frame requires a higher score than normal. Correct matches of that kind measured 99.90–99.93%, and the false ones 94.6%, so a threshold anywhere in between separates them cleanly. With that in place the false pairs dropped to zero — including four that existed before any of this work started.

What works now, measured

A screenshot is not one thing. Phones frame photos in at least eight recognisably different ways, and each was tested against the original photo:

How the screenshot is framedMatch
Viewer with black bands, status bar over the band99.9%
Photo flush to the top, status bar over the photo99.3%
Notification banner pulled down on top99.9%
Rounded corners and a notch99.9%
Light-background gallery, dark icons99.9%
Photo off-centre, button row at the bottom99.8%
Full-screen, photo cropped to fillnot grouped
Full-screen with a translucent status barnot grouped

The same holds for a plain border on all four sides, which is what you get screenshotting an image on a flat background:

BorderBeforeAfter
2% margin93.0%100.0%
5% margin72.8%99.9%
10% margin54.9%99.9%

Black, white or flat grey all behave the same, and so does the re-compressed copy a messaging app hands back.

The two that still fail, on purpose

The last two rows of the first table deserve an explanation, because they look like failures and are not.

In a full-screen screenshot the photo is not padded — it is cropped to fill the screen. A 0.75-proportioned photo shown edge to edge on a 0.45 screen loses about 40% of its width, permanently. That file does not contain your photo. It contains part of it.

Grouping it would mean offering to move the complete original into the duplicates folder on the strength of a partial copy. That is precisely the mistake the aspect ratio guard exists to prevent, and the right answer is to leave the pair alone.

Two other cases remain genuinely out of reach: a photo rotated 90° or 180° scores 0% against the original, and a mirrored one scores 51.5%. The comparison reads the grid in the orientation it finds it. Detecting those would mean testing every image in several orientations, which multiplies the work on every file in the folder to catch a case that is far rarer than the screenshot.

What to do with your own screenshots

Two practical notes.

First, the screenshot is almost never the copy worth keeping. It is lower resolution, it has interface elements burned into it, and it usually carries no date or location metadata. When a group appears, the full-resolution original is the one to keep — which is why a sensible tool ranks the largest image first and moves the rest.

Second, be sceptical of any tool that groups these too eagerly. As Ofcom notes in its overview of the field, perceptual hashing "assesses the similarity of the images, not of the content depicted in the images", and its error rates are not negligible. A screenshot pair that matches at 99% is a measurement. A pair that needed the threshold lowered to 80% to group is a guess, and guessing is how people lose photographs.

In short

A screenshot of a photo is the same picture wearing the shape of a screen. Recovering it means recognising the frame — not by asking whether the edges are flat, but by asking whether they stay the same tone, which is the one thing a sky never does. Do it while keeping the original comparison intact, and you gain a common case without risking the ones that already worked.

You can test this on your own folder: check a folder for duplicates in your browser, with nothing installed and no files leaving your computer. Related reading: exact duplicates and visual duplicates, how to find duplicate files without installing anything, and why you have three copies of the same video.

A note on the numbers

Every figure here was measured on purpose-built test images — photographs with synthetic grain, framed the way real phones frame them — rather than on a large corpus of real-world screenshots. They describe how the method behaves, not a guaranteed hit rate on your photo library. If you find a screenshot it misses, or a pair it groups that it should not, tell us: that kind of report is what produced this change.

Sources