macOS makes uninstalling look effortless: drag the app to the Trash, done. It is genuinely simpler than Windows, and for a lot of small apps it really is the whole job.
For anything larger, it is not. The .app bundle is only the executable. Everything the app created
while it ran — settings, caches, databases, background helpers — lives elsewhere, and dragging the
bundle away leaves all of it untouched.
What gets left behind
When you delete an app the normal way, these survive:
| Location | What lives there |
|---|---|
~/Library/Application Support/<App> | Databases, plugins, downloaded content. Often the biggest. |
~/Library/Caches/<bundle-id> | Rebuildable cache. Frequently gigabytes. |
~/Library/Preferences/<bundle-id>.plist | Settings. Tiny, but why keep them. |
~/Library/Containers/<bundle-id> | Sandboxed apps keep your documents here. Careful. |
~/Library/Saved Application State/ | Window positions. Harmless. |
~/Library/LaunchAgents/ | Background helpers that still launch at login. |
/Library/LaunchDaemons/ | System-wide helpers. Needs an admin password. |
/Library/PrivilegedHelperTools/ | Installed by apps that asked for admin rights. |
~/Library/Logs/<App> | Log files. |
The two that matter most are not about disk space at all. Launch agents and daemons keep running after the app is gone — that is why your Mac still shows an updater prompt for software you deleted months ago. And Containers may hold your actual documents, which is why blanket “delete everything with this name” advice is dangerous.
Method 1: Check for a real uninstaller first
Some apps ship one, and it is always the right choice when it exists:
- Adobe — use Creative Cloud → the app → Uninstall. Never drag Adobe apps to the Trash.
- Microsoft Office — Microsoft provides a removal tool; the manual path leaves licensing files.
- Antivirus and VPN software — almost always installs kernel extensions or system extensions. Use the vendor’s uninstaller, or you will be fighting a system extension you cannot delete.
- Anything installed with a
.pkg— check the developer’s site before doing it by hand.
Method 2: By hand
-
Quit the app, and check Activity Monitor for helper processes with the same name.
-
Find its bundle identifier. This is the reliable way to match leftovers, because folder names are inconsistent but bundle IDs are not:
osascript -e 'id of app "Slack"' # com.tinyspeck.slackmacgap -
Move the app to the Trash from
/Applications. -
Look in each Library location for that name or bundle ID. Open a folder quickly with Finder → Go → Go to Folder (⇧⌘G) and paste the path.
-
Check for launch agents. This is the step everyone skips:
ls -la ~/Library/LaunchAgents /Library/LaunchAgents /Library/LaunchDaemonsAnything matching the app you just removed can go. If you are unsure what one is,
catthe file — theProgramkey tells you exactly what it launches. -
Empty the Trash.
The Containers warning, again
Sandboxed apps store your documents in ~/Library/Containers/<bundle-id>/Data/Documents. If you
delete a text editor’s container, you delete the files you wrote in it. Open the container and look
before you remove it — every time, not just when you think it matters.
Method 3: Find the apps you forgot you had
Space you can reclaim from apps you actively use is limited. The real wins are apps you stopped
opening. Sort /Applications by Date Last Opened in Finder’s list view (View → Show View
Options → Last Opened) and go down the list. Most people find several gigabytes of software they
have not launched in two years.
Note that “last opened” is unreliable for apps that run background helpers — the helper keeps the date fresh even when you never open the app itself. Another reason to check launch agents.
What about sudo rm -rf?
Do not. Not because it will not work, but because the one time you mistype a path there is no Trash to recover from and no undo. Every step above can be done by moving files to the Trash instead of destroying them, and there is no benefit to doing it the permanent way.
Doing it in one pass
The manual method is correct and it is free. It is also fifteen minutes per app, and it depends on you correctly telling a cache from a document in a folder full of both.
Purgy does this pass for you: pick an app, and it finds the bundle plus every leftover tied to its bundle identifier, shows you each one with its size, and flags anything that looks like your own data so it cannot be removed by accident. Launch agents and daemons are listed explicitly, since those are the ones that keep running after the app is gone.
Everything it removes goes to the Trash. If it turns out you needed a file, it is a Finder → Put Back away — which is the only reasonable way to run an uninstaller.
You can see the uninstaller on the front page, alongside the rest of what Purgy does.
Quick reference
# Bundle ID for any installed app
osascript -e 'id of app "AppName"'
# Everything matching a bundle ID across the usual locations
find ~/Library -maxdepth 3 -iname "*com.example.app*" 2>/dev/null
# Launch agents and daemons that still run
ls -la ~/Library/LaunchAgents /Library/LaunchAgents /Library/LaunchDaemons
Read what you find before you delete it. That is the whole discipline.