Uninstalr 2.0 – Or why making this Windows software uninstaller was the hardest thing I have ever done

The morning rain is clouding up my window. I stare at the droplets sliding down the glass pane and I remember how as a kid I would imagine them to be like cars racing down to the bottom. I’m thinking about how much I should tell you about what goes on behind the scenes.

If you don’t want to read anything personal and you came here just to download my app, that’s fine: You can skip all this and go to Uninstalr.com and download it from there.

I will go down the memory lane a bit, because it’s important for this story.

When I was a kid, my father bought me my first computer. That is what got me into computer sciences and by the time I was 10 years old, I had learned programming. I was 16 years old when I released my first real computer program. It was a free app called RegCleaner. Perhaps you have heard about it, maybe you even used it back in the day.

Six months ago I released the first version of Uninstalr. It is a freeware Windows app for uninstalling software. It came with two party tricks: You could select many apps and have them uninstalled in a batch without having to click through dozens of those “Are you really sure?” dialogs.

And the second party trick was that it was very accurate in detecting data apps created to your system. Accurate, yes, but unfortunately not accurate enough. I’ll get to that in a bit.

To take a few more steps back, I need to explain that all this really started when I compared and benchmarked how well the common uninstaller software performed.

It’s because that’s the kind of man I am. I find these sorts of things interesting and I like to measure and benchmark and experiment with things. Opinions are great. But benchmarks are better.

Uninstalr 1 was pretty good …

In any case, about six months ago I did this benchmark : Comparing Windows uninstallers, getting upset and then deciding to make my own – Since no one got time to read all that, here’s the TLDR: all the popular uninstallers for Windows performed very poorly.

When I say they performed poorly, that is not my opinion or commentary about their user interface bells and whistles (although I did take a few cheap shots at some of the user interfaces too – pretty funny cheap shots if you ask me).

Instead, I’m talking about the objective, measured performance of these apps: Bulk Crap Uninstaller, Geek Uninstaller, HiBit Uninstaller, IObit Uninstaller, Revo Uninstaller Pro and Total Uninstall.

The original test showed two facts about these software:

  1. None of these software uninstallers were able to perform an unattended batch uninstallation. That is, I choose what apps I want to remove, click a button and the uninstaller removes the apps while I sip tea. None. Some claim they can do that, but they failed to actually do that.
  2. Uninstalling some common Windows apps with these uninstallers left a lot of things behind. Files, folders and registry keys.

Or, in short: their performance was pretty sad.

This was the reason why I took on the monumental (and probably dumb) task of trying to make something better myself.

After a few months of full time work, I finally had something. That something was called Uninstalr. Yes, that’s “Uninstalr” instead of “Uninstaller”, because, you know, Uninstalr.com was available.

Uninstalr 1.0 went viral and made quite a splash.

… But it was not good enough, and I’m sorry

The original version release didn’t go without its issues, though.

The first version had a bug that caused Windows to basically die with Blue Screen of Death (BSOD) when uninstalling specific apps. This was a rare issue and entirely cosmetic, simply restarting the computer fixed the issue and it caused no damage to the system.

I was able to quickly analyze what caused it: Funnily enough, Windows will crash with BSOD if an app terminates a specific Windows system process. And since Uninstalr attempts, by default, to close all currently running programs when the uninstallation process starts, this was the culprit. I find it funny how a modern operating system can crash simply when a user level program terminates a process. Oh well.

After I had fixed this issue, I quickly released Uninstalr version 1.1 to address it.

Unfortunately, there was more.

I had spent a lot of time testing the uninstallation process with every system and Virtual Machine that I had access to. I also published beta versions before the official launch but that testing was not thorough enough: The original Uninstalr could get confused and mix paths of different software.

For example, uninstalling Paint.NET could sometimes cause paths from Microsoft Paint or Microsoft Paint 3D to be listed for removal as well, because they all share the same word “paint” in them.

The root cause for this is, of course, that Windows doesn’t really care what you or the installed software do within the system. When you install a new app, it can create and modify almost any data it wants, and sadly, Windows doesn’t track or keep a log of these changes at all.

Therefore, for Uninstalr to be able to detect all the data of installed apps, there is a lot of data analysis and processing happening, and with the original Uninstalr, that analysis would sometimes go wrong.

That being said, the program did always list everything it suggested to remove. In other words, the program asked the user to confirm whether these paths were okay to be removed and only after that explicit permission would anything be removed.

But nevertheless, some users ended up with wrong data being removed and this was my fault.

And for this I do apologize: I should have done better. This kind of issue should have not been in the program.

This is also the reason why it took so many months for me to finally release Uninstalr 2.0 – I wanted to spend a lot more time in testing to ensure the accuracy was significantly better.

Uninstalr 2.0

For Uninstalr 2.0, there were a total of 160 internal test builds and six release candidates, some of which were also made available for a group of testers.

With the new Uninstalr 2.0, I also addressed a lot of user feedback. The main one being that the program could use a more modern and more functional user interface. That is why, this is how it looks like:

The new user interface includes things such as filters, sorting, hiding specific types of apps and a more clear indication of which apps are selected.

It’s uninstaller benchmark time again

As I mentioned, I released Uninstalr 1.0 with a benchmark, showing how poorly the most popular Windows uninstallers performed.

Since I didn’t get sued for doing that, I did it again.

This time, I also included a few more uninstallers to the comparison, because you suggested them.

I benchmarked: Ashampoo UnInstaller FREE, Bulk Crap Uninstaller, Geek Uninstaller, HiBit Uninstaller, IObit Uninstaller, Revo Uninstaller Pro, Total Uninstall, Uninstall Tool and WinToys.

The test setup was basically the same as last time: I got myself a VirtualBox virtual machine running a freshly installed and activated copy of Windows 10 Pro 22H2 with all the updates.

I installed 28 popular Windows apps. Namely, these: 7-Zip, AIMP, AllDup, Audacity, Blender, Core Temp, Evernote, FastStone Image Viewer, FileZilla, Foxit PDF Reader, Internet Download Manager, IrfanView, iTunes, KMPlayer, KeePass 2, Mailbird, Mozilla Firefox, Mozilla Maintenance Service, Netflix, Paint.net, Spotify, TikTok, Winamp, Winrar and Winzip. Also, when installing iTunes, also Apple Mobile Device Support, Apple Software Updates and Bonjour were automatically installed.

After these software were installed, a snapshot was created of the virtual machine, so the exact same system could be used with each of the uninstallers.

Then, one by one and restoring the virtual machine state from the snapshot before each test, I installed and ran each of the uninstallers and used WinFindr to search how many files, folders, registry keys and registry entries remained in the system matching the names of the uninstalled apps. These were counted as leftovers.

Before I started, I had some ground rules. They are:

  1. I’m going to uninstall everything using the default uninstallation method of each uninstaller,
  2. If I need to click something, I will click the default or recommended buttons. If one is not clearly given, I will click the button that says “Yes” unless it is asking whether I want to restart the computer now.

Testing: Ashampoo UnInstaller FREE

I included this uninstaller because it was requested. I don’t really see why, because using it was painful. There were browser popups, ads and even a forced account creation. You need to give them your email address just to be able to try this software. I cannot even find the words of how much I didn’t want to do that.

But, what I wouldn’t do for you.

The program doesn’t support batch uninstallation, so I had to uninstall all the apps one by one. After this rather painful user experience, 627 leftovers remained. Not a great start.

Version tested: 9.00.00
Leftovers remained: 627

Testing: Bulk Crap Uninstaller

Bulk Crap Uninstaller or BCUninstaller is one of my personal favorites. The UI looks rather wonky but at least it’s free, there are no annoying popups and it even supports batch uninstallation.

Unfortunately, the batch uninstallation doesn’t work very well. It failed to perform an unattended uninstall for AIMP, Firefox, KMPlayer, Internet Download Manager, IrfanView, Mailbird, Bonjour and Winrar.

Version tested:
Leftovers remained: 411

Testing: Geek Uninstaller

When it comes to user interfaces, I think Geek Uninstaller offers one of the cleanest ones and it even supports dark mode. It’s 2024, every UI should support dark mode already. And its portable version is only 7 MB, I can see why so many people like it.

Too bad its free version doesn’t have the batch removal enabled, you’d need to buy the pro license for that.

So, I had to uninstall each of the apps one by one. That was very tedious.

As a funny side note, while using Geek Uninstaller to uninstall Bonjour, it recommended that Geek Uninstaller should be closed for the uninstallation to run correctly. Oh the irony.

Version tested:
Leftovers remained: 393

Testing: HiBit Uninstaller

Trying HiBit Uninstaller already started oddly, when Windows prevented the program from being run for my safety. I had to bypass that even to be able to start the program.

When the program did start, it started with an error message about “Missing Windows 11 dark” and the user interface had some of its colors wrong, making it fairly difficult to use.

Here is a screenshot:

HiBit Uninstaller claims to be able to batch uninstallation of software, but in this test it failed to automate the uninstallation of Core Temp, Internet Download Manager, KMPlayer, Mailbird and it required user’s help in uninstalling these apps.

The uninstallation performance was good with only 241 leftovers remaining after everything was uninstalled.

Version tested: 3.1.81
Leftovers remained: 241

Testing: IObit Uninstaller

IObit Uninstaller is one of those programs that want to install everything and the kitchen sink. When you install it, it suggests you to also install something called iTop VPN Free and iTop Screen recorder as pre-checked bundled software and it also suggests installing iTopEasy Desktop as an optional bundled software.

It is deeply ironic that a software uninstaller wants to install more nonsense to your computer and I cannot express how much I didn’t need these to be installed.

At least it supports batch uninstallation, but unfortunately it doesn’t work very well. It failed to automate the uninstallation of AIMP, Core Temp, FileZilla, Internet Download Manager, iTunes, KMPlayer, Mailbird, Firefox and it required user’s help in uninstalling these apps.

Version tested:
Leftovers remained: 553

Testing: Revo Uninstaller Pro

Revo Uninstaller Pro is probably the most established and most popular out of all these uninstallers. I personally don’t really understand why.

It claims to be able to batch uninstall software, but in this test it failed to automate the uninstallation of Blender, iTunes, Mailbird, KMPlayer, Apple Mobile Device Support, AIMP, Internet Download Manager and Apple Software Update and it required user’s help in uninstalling these apps.

I also find it very troubling that within its default uninstallation mode, Revo Uninstaller Pro deletes user data without confirming this first with the user at all. Revo Uninstaller Pro is the only tested uninstaller that does this.

There are also annoying browser popups and ads.

Version tested: 5.1.7
Leftovers remained: 440

Testing: Total Uninstall

Total Uninstall – not to be confused with Total Uninstaller which seems to be a copycat program – claims to be able to batch uninstall software, but in this test it failed to automate the uninstallation of Mailbird, Winrar, KMPlayer, Internet Download Manager, IrfanView, Core Temp, AIMP and Firefox and it required user’s help in uninstalling these apps.

Out of all of the tested uninstallers so far, Total Uninstall had the best accuracy with only 142 leftovers remaining after using it.

Version tested: 7.6.0
Leftovers remained: 142

Testing: Uninstall Tool

Uninstall Tool by CrystalIDEA was one of those programs that was also recommended to me and that’s why I wanted to include it in this test.

Unfortunately, it’s also again one of those programs that don’t allow batch uninstallation, or “Batch Force Removal” as it calls it, without paying for the program first.

Not only is that feature disabled, the user interface is quite annoying, because the leftover scan is automatically run after the uninstallation of each app, but the listed leftovers cannot be removed in the free trial mode. There is also a buy popup ad when closing the program.

After tediously uninstalling every app one by one, and watching the program to list leftovers that it cannot remove in the trial mode, 448 leftovers were left behind. Not very impressive.

Version tested:
Leftovers remained: 448

Testing: WinToys

WinToys is a bit different out of all the other programs tested, because it’s more of a Windows system utility suite and not just a program uninstaller. It was also recommended to me and that’s why I included it in this test.

Unfortunately, the program doesn’t have any kind of batch uninstallation functionality and the entire uninstallation feature seems to be just a wrapper for the normal Windows Installed Apps tool.

Version tested:
Leftovers remained: 445

Testing: Good ol’ Windows Installed Apps

And speaking of the normal Windows Installed Apps tool, I also used it to uninstall each of the apps one by one. After doing so, 458 leftovers remained.

Version tested: Windows 10 Pro 22H2
Leftovers remained: 458

Lastly, testing: Uninstalr 2.0

Uninstalr was the only tested program that was able to perform a full, unattended batch uninstallation of all the apps.

After it was done, only 26 leftovers remained which is clearly the best score out of all the tested uninstallers.

Version tested: 2.0
Leftovers remained: 26

One could say that the apps that were uninstalled in this benchmark test were cherry picked to favor Uninstalr.

However, that’s not the case, because if you take a look at the previous benchmark test from six months ago, I used the exact same test setup and test apps.

In other words, Uninstalr 2.0 wasn’t even available when these apps were chosen for the test, and furthermore, the developers of all the other uninstallers also had time to review the results of the original test and improve their programs.

I think it’s fair to say that Uninstalr 2.0 seems far superior to the rest of the uninstallers that I tested. But I urge you not to take my word on it, please do your own testing. Compare these uninstallers yourself and choose the one that is the best for you.

I hope this time it’s good enough. If you want to give it a try, you can download it from Uninstalr.com

Final words

When I released the first version of Uninstalr last year, I said it was the most difficult thing I have ever built. Little did I know how much more difficult it would get.

I now know that the most difficult lines of code one can write are not those that are technically the most challenging, or when one is the most careful not to make any mistakes.

When I was a teenager, I needed a more powerful computer for my programming work. I was working on freeware programs and I didn’t have money to buy a new computer

So, I made a deal with my father that if he buys me a new computer, I will give him 10% of my next product I was working on at that time.

That program never got released, which is probably a good thing, because it was not very good.

A few years passed by and I started my company and released my first commercial software (jv16 PowerTools). After its launch it became clear that the software was selling, so I gave my father a piece of the company as I had promised.

I’m now a grown man and living abroad. I’m not able to visit as often as I want or as often I know I should, but not a day passes by when I don’t remember how he helped me.

During the time while I have been working on Uninstalr 2.0, my father was diagnosed with a degenerative brain disease. He is still alive but he is no longer there.

It took me a long time to write this and the rain is slowing down. I sit alone in my office, thinking about the journey of how I got here.

I don’t know where I will go from here, but for now, I will turn off my computer and go outside for a walk.

I think I will have a video call with you again. It’s okay if you can no longer say anything. There is nothing you need to say. I only hope you are not in pain or feel scared. And I hope I have done enough to make you proud.