How to uninstall a Mac app properly, leftovers and all
Dragging to the Trash removes the app. It does not remove the eleven other places the app wrote to.
Mac uninstallation has a reputation for being simple: drag the icon to the Trash, done. That is true for the application itself, and it has been quietly untrue for everything else since about 2005.
An app that has been running for a year has usually written to somewhere between four and a dozen locations outside its own bundle. None of them go anywhere when you trash the app.
What gets left behind
Here is the full set of places to check, in the order they are most likely to hold something:
| Location | What lives there |
|---|---|
~/Library/Application Support/<app> |
Databases, projects, downloaded content |
~/Library/Preferences/com.vendor.app.plist |
Settings |
~/Library/Caches/com.vendor.app |
Cache, sometimes gigabytes of it |
~/Library/Containers/com.vendor.app |
Everything, for sandboxed apps |
~/Library/Saved Application State/<app>.savedState |
Window positions |
~/Library/Logs/<app> |
Logs |
~/Library/LaunchAgents/com.vendor.plist |
Things that start at login |
/Library/Application Support/<app> |
Shared support files |
/Library/LaunchDaemons/com.vendor.plist |
Background services, root level |
/Library/PrivilegedHelperTools/ |
Helper tools installed with an admin prompt |
The two LaunchAgents and LaunchDaemons entries are the ones worth caring about most, because they keep running after the app is gone.
Finding them
Every app has a bundle identifier that looks like com.vendor.appname. Find it first, because it is what most of the leftover files are named after:
osascript -e 'id of app "Spotify"'
Then search for it:
find ~/Library /Library -maxdepth 4 -iname "*spotify*" 2>/dev/null
That one command covers most of the table above. Read the output before deleting any of it — you are looking for things clearly named after the app, not for anything that happens to match.
For a quick look at what a departed app left in the two biggest folders:
du -sh ~/Library/Application\ Support/* | sort -h | tail -20
du -sh ~/Library/Containers/* | sort -h | tail -20
Anything in that list belonging to an app you no longer have is dead weight.
The order that avoids trouble
- Quit the app. Properly — check it is not still in the menu bar.
- Look for a real uninstaller first. Adobe, Microsoft Office, most VPNs, most antivirus products and anything with a kernel or system extension ship one, and you should use it. These apps install pieces that a manual sweep will miss.
- Drag the app to the Trash.
- Search for the bundle identifier with the
findcommand above. - Deal with launch agents last — see below.
- Empty the Trash, then restart if the app had a background service.
Launch agents deserve a moment
A launch agent is a small file telling macOS to start something at login. When an app is deleted and its agent is not, macOS keeps trying to run something that no longer exists — usually harmlessly, occasionally with an error dialog at every login that nobody can explain.
ls ~/Library/LaunchAgents /Library/LaunchAgents /Library/LaunchDaemons
On the Mac I used for this, that is seven, six and fourteen entries respectively. Most are legitimate. Look for names matching apps you have removed.
Before deleting one, unload it:
launchctl unload ~/Library/LaunchAgents/com.vendor.something.plist
Then delete the file. For anything under /Library/LaunchDaemons you will need sudo, and you should be correspondingly more careful — that folder also contains things macOS itself relies on.
Also check System Settings → General → Login Items, which shows the friendlier version of the same list and lets you switch things off without touching a file.
What to leave alone
- Preferences for apps you might reinstall. A
.plistis a few kilobytes. Deleting it only means reconfiguring later. - Anything in
~/Libraryyou cannot connect to a specific app. If you cannot name the owner, leave it. - Shared frameworks. Two apps from the same vendor often share support files, and removing one can break the other.
Is it worth the effort?
Honestly, for a single small app, no. A leftover preferences file costs you nothing.
It becomes worth it in two cases. The first is the big ones: creative apps, virtualization, developer tools and anything that syncs will leave multiple gigabytes in Application Support and Caches. The second is an app that misbehaved — a clean reinstall only counts as clean if the old settings are gone, and half the “reinstalling did not fix it” stories come from preferences that survived.
If you would rather not do the find dance every time, this is precisely what CleanSpace’s uninstaller does: it maps an app to its files, shows you the list with sizes, and removes what you tick.