Uninstalling a program on Windows leaves three things behind
Settings removes the program and not its data. Where the leftovers are, how to tell whose they are, and what is safe to remove.
Remove a program through Settings, Apps and Windows runs the vendor's uninstaller. What that uninstaller removes is the program. What it almost never removes is everything the program wrote while you were using it.
The three places leftovers live
| Where | What stays | Why |
|---|---|---|
AppData\Roaming | Settings, profiles, licences | Kept deliberately, so reinstalling keeps your setup |
AppData\Local | Caches, downloaded components, indexes | Nobody wrote the code to remove it |
ProgramData | Shared data, sometimes licences | Machine wide, and the uninstaller runs as you |
Program Files | An empty folder, or a stubborn one | Files in use at uninstall time |
| The registry | Settings keys under HKCU and HKLM | Small, and genuinely harmless |
Finding them
Get-ChildItem $env:LOCALAPPDATA, $env:APPDATA, 'C:\ProgramData' -Directory -Force -ErrorAction SilentlyContinue |
ForEach-Object {
$s = (Get-ChildItem $_.FullName -Recurse -Force -File -ErrorAction SilentlyContinue |
Measure-Object Length -Sum).Sum
[PSCustomObject]@{ MB = [math]::Round($s/1MB); Path = $_.FullName }
} | Where-Object MB -gt 50 | Sort-Object MB -Descending | Select-Object -First 25Read that list with one question: can you name the program that made each folder, and is it still installed? Anything you cannot place is a candidate, and anything belonging to software you removed is dead weight.
Checking whether the program is still there
Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*,
HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*,
HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* |
Select-Object DisplayName, DisplayVersion |
Where-Object DisplayName | Sort-Object DisplayNameThat is the same list Settings, Apps shows, read from the registry. If a folder's owner is not in it, the program is gone and its folder is a leftover. The 32 bit view matters: a lot of everyday software installs there and reading only the 64 bit list makes installed programs look uninstalled.
What is safe to remove
- Folders belonging to programs no longer installed. Check inside first, because some apps keep documents there.
- Cache folders inside
Localfor programs you still use. They rebuild. - Empty folders in
Program Files. Harmless either way. - Leave the registry alone. Orphaned keys are kilobytes and registry cleaners cause more problems than they solve.
Why the space did not come back
If uninstalling a large program freed far less than expected, the leftovers are usually why: a design tool's asset cache or a game launcher's downloads can be most of what it occupied. That is also why our own uninstaller moves files to the Recycle Bin rather than deleting them, so a wrong guess is recoverable.
The folder all of this sits in is AppData, and the wider question of where a full drive went is in the seven places Windows hides it.
Common questions
Why does uninstalling a program not free much space?
Because the uninstaller removes the program, not the data it wrote. Caches, profiles and downloaded content in AppData and ProgramData stay behind, and for large applications that can be most of what they occupied.
Where do leftover files go after uninstalling on Windows?
AppData\Roaming for settings, AppData\Local for caches and components, ProgramData for shared data, and sometimes an empty folder in Program Files. Registry keys remain too, and those are harmless.
How do I know if a folder belongs to a program I removed?
Compare it against the uninstall registry, which is the same list Settings, Apps shows. Read both the 64 bit and 32 bit views, or installed software will look uninstalled.
Should I use a registry cleaner to remove leftovers?
No. Orphaned registry keys take kilobytes and removing the wrong one causes real problems. The space is in the folders, not the registry.