I’m going to get some flack for this , but my answer is yes, followed by a very strong NO.
Let me explain why.
Become a Patron of Ask Leo! and go ad-free!
Because installing software in Windows is complex, it’s common to have duplicate copies of the same file, all of which are required. Sometimes you can delete duplicates safely, but it requires knowing how your files are organized — something duplicate file finders can’t do. Duplicates rarely take up excessive room. You’re best served using different techniques if you’re running low on space.
Installing is a mess
Over the years, software programs have gone from attempting to share large numbers of components to keeping separate copies of those components to protect themselves from unexpected changes.
As a result, today some files are shared and some are not, and there’s no consistent rule.
Let’s use an example.
A versus B: fight!
Scenario 1: shared
Installing A installs STATS.DLL such that any other program can use it. When you install B sometime later, it sees STATS.DLL is already present, and does not install it a second time.
Sounds fantastic, since disk space is saved and there’s only one STATS.DLL to keep track of.
Updating STATS.DLL updates it for both programs A and B. Put another way, an update to A that includes an update to STATS.DLL updates it for B whether or not B needs it, wants it, or B works with the new version. If B breaks because of this unexpected update, you’re stuck until B is updated to work with the newer STATS.DLL. Sadly, this happens often.
If B is never updated, you’re screwed. Sadly, this, too, happens often.
Scenario 2: duplicates
Installing A places STATS.DLL into a private location where only A can use it. Later, installing B does the same, placing a second copy of STATS.DLL for only B to use.
When A is updated, it only updates its copy of STATS.DLL. B is unaffected.
You have two copies of STATS.DLL on your machine. In fact, you may have two identical, duplicate copies of STATS.DLL.
But deleting either one would be a big mistake: deleting A’s copy would break A and deleting B’s copy would break B. You need both copies, even if they are duplicates.
What you can delete, maybe
It can be safe to delete some of the duplicate files your duplicate file finder identifies. For example, if you have duplicate copies of photos on your machine, you may need only one.
But which one? If you’ve organized your photos in a folder, and a second copy of an image happens to be elsewhere, which one will the duplicate file finder delete? How does it know which one matters?
Even if you restrict yourself to certain file types (only look for duplicate “.jpg” image files, for example), you still run the risk of deleting images that were installed by multiple programs you use — if both program A and program B happened to install “smiley.jpg” as part of some kind of resource library, how do you know whether either can be deleted safely?
It’s just not easy to tell what is safe to delete. Without knowing, it’s quite possible you’ll break something — sometimes immediately and sometimes in ways you won’t discover for some time.
My advice: don’t.
When in doubt, don’t delete
If you insist on deleting duplicate files, I strongly suggest you take an image backup first, in case it turns out I’m right and something breaks.
But I really recommend you don’t go down this path to begin with. Don’t bother looking for duplicate files.
Instead, if you’re trying to free space on your hard drive, use tools that show you where the most space is being used, and target your efforts there to get the biggest bang for your efforts.
But in general, unless you know what you’re doing, leave duplicate files alone.
If you found this article helpful, I'm sure you'll also love Confident Computing! My weekly email newsletter is full of articles that help you solve problems, stay safe, and give you more confidence with technology. Subscribe now and I'll see you there soon,
Footnotes & References
1: A “.EXE” file is an executable program. A “.DLL” file is a Dynamic Link Library of software typically designed to be shared among multiple programs. (DLLs need not be shared; sometimes they represent nothing more than structural organization.)