Uninstalling apps + leftovers

Why Dragging an App to Trash Isn't Enough to Uninstall It on Mac

You dragged the app to Trash, emptied it, and called it done — but dragging an app to Trash on Mac is not enough to fully uninstall it. The .app bundle is only the visible tip of the iceberg. macOS stores support files, preferences, caches, and background agents across half a dozen directories that Trash never touches. This guide explains exactly what stays behind, where to find it, how to remove it safely, and when you should think twice before deleting anything.

What Dragging to Trash Actually Does

A macOS .app is a self-contained bundle — a folder disguised as a single file. When you drag it to Trash, you are moving that one bundle to ~/.Trash/. That's it. macOS has no built-in "uninstall" event that fires, no script that cleans up after the app, no registry to scrub (unlike Windows). Every piece of data the app scattered outside its bundle stays right where it is, even after you empty Trash.

Where the Leftover Files Actually Live

The leftovers fall into a predictable set of locations. Here is what each one is and roughly how much space apps typically leave behind.

Location What's stored there Typical size range Safe to delete?
~/Library/Application Support/<AppName> Databases, user data, app-managed files 1 MB – several GB Yes, once the app is gone — but verify first
~/Library/Caches/<BundleID> Cached assets, compiled shaders, thumbnails 10 MB – 2 GB Yes — caches are always regenerable
~/Library/Preferences/com.<vendor>.<app>.plist User settings stored as property lists A few KB each Yes — tiny, no functional impact
~/Library/Containers/<BundleID> Sandboxed app data (App Store apps) Varies widely; can be 1+ GB Yes — sandbox is isolated per app
~/Library/Group Containers/<GroupID> Shared data between an app and its extensions Varies Usually yes, but check for shared suite apps
/Library/LaunchAgents/ or ~/Library/LaunchAgents/ Background daemons and auto-starters Tiny (KB) Yes — but unload first (see below)
/Library/Application Support/<AppName> System-wide data (installer receipts, kernel exts) A few MB Usually yes; kernel extensions require more care
/Library/Logs/ or ~/Library/Logs/ Crash reports and diagnostic logs KB – tens of MB Yes — logs are for diagnostics, not function

Real-World Examples of What Gets Left Behind

Spotify

Spotify stores its offline cache and downloaded podcasts in ~/Library/Caches/com.spotify.client/ and ~/Library/Application Support/Spotify/. Depending on your offline library size, these folders routinely reach 2–5 GB combined — still sitting on your drive after you drag the .app to Trash.

Slack

Slack's Electron-based app writes a large GPU shader cache and workspace message cache to ~/Library/Application Support/Slack/. On an account with several workspaces, this folder commonly exceeds 1–2 GB.

Xcode

Xcode is the king of leftovers. The app itself is large, but the derived data, simulators, and device support files scattered across ~/Library/Developer/ regularly consume 30–80 GB long after Xcode is removed from Applications.

Adobe Creative Cloud apps

Adobe apps install shared libraries under /Library/Application Support/Adobe/ and install launch daemons in /Library/LaunchAgents/. These services continue running even after you trash individual apps, because they're owned by the Creative Cloud suite, not any single app.

The Launch Agent Problem: Background Processes That Survive

Launch agents are the most insidious leftovers because they are not just wasted disk space — they continue executing. If an app registered a launch agent, that agent will keep loading at login indefinitely until you explicitly remove and unload it.

To find and remove a launch agent left behind by a trashed app, open Terminal and run:

# List all user launch agents
launchctl list | grep -i <appname>

# Unload it (replace the path with the actual .plist you find)
launchctl unload ~/Library/LaunchAgents/com.vendor.appname.plist

# Then delete the plist
rm ~/Library/LaunchAgents/com.vendor.appname.plist

System-wide agents in /Library/LaunchAgents/ or /Library/LaunchDaemons/ require sudo to remove and were likely installed by a privileged installer. Remove them with the same launchctl unload step before deleting.

How to Manually Find and Remove Leftover Files

After you drag an app to Trash and empty it, work through these locations to find what's left. Substitute AppName and the app's bundle identifier (e.g., com.spotify.client) as you go. You can find the bundle ID by looking at the app's Info.plist before removing it, or by searching the directories below for folder names that match the app.

  1. Open Finder. Press Cmd + Shift + G and go to ~/Library/Application Support/. Delete any folder named after the app.
  2. Go to ~/Library/Caches/. Delete folders whose name matches the app's name or bundle ID.
  3. Go to ~/Library/Preferences/. Delete .plist files whose name starts with the app's bundle ID (e.g., com.spotify.client.plist).
  4. Go to ~/Library/Containers/. Delete the container folder for the app's bundle ID.
  5. Go to ~/Library/Group Containers/. Look for a folder with the app's group ID (often starts with a Team ID followed by a product name).
  6. Check ~/Library/LaunchAgents/ and /Library/LaunchAgents/ for .plist files referencing the app. Unload them with launchctl unload before deleting.
  7. Check ~/Library/Logs/ and /Library/Logs/ for a subfolder named after the app and delete it.
  8. Check /Library/Application Support/ for system-wide data (requires admin password to delete).

This is tedious for one app. For ten apps? It becomes a Saturday afternoon project.

What Is NOT Safe to Delete

Not every file tied to an app's name is safe to remove. Before deleting anything in ~/Library/, be aware of these situations:

  • Shared preference files. Some apps share a bundle-ID prefix. Deleting a plist for one app can affect a companion app from the same developer.
  • Files inside ~/Library/Containers/ for apps you still use. The Containers directory holds sandboxed data for App Store apps. Deleting a container for a running app can corrupt it.
  • Kernel extensions (/Library/Extensions/). kext files require careful removal with kextunload before deletion. Incorrectly removing kexts can cause boot failures.
  • Receipts in /var/db/receipts/. These are macOS package receipts used by the installer system. They're tiny; leave them alone.
  • Anything you cannot identify. If you're unsure whether a folder belongs to an app, don't delete it. Use the "Is this safe to delete?" check in Crumb to get a plain-English explanation of what a folder contains and what the risk of removing it is — especially useful before deleting anything in /Library/.

A Faster Way: Uninstall Tools That Find Leftovers Automatically

The manual method works, but it requires you to already know the bundle ID, visit eight directories, and carefully match folder names. An uninstaller that indexes files at install time — or uses heuristics to match by bundle ID, vendor name, and executable path — can surface every leftover in seconds.

Crumb includes an Uninstall tab that does exactly this. Drag an app onto it (or pick it from the list), and it scans all the locations above, shows you each leftover file with its size, and lets you review before anything is removed. If you want to be able to undo the removal, the Pro tier moves files to a recoverable location rather than permanently deleting them — worth considering for large, hard-to-reinstall apps. You can download Crumb and try the first cleanup for free.

Whatever tool you use, always review the list before confirming. Cleanup is permanent.

Conclusion

Dragging an app to Trash on Mac is only the first step. The app's caches, preferences, containers, and launch agents remain scattered across ~/Library/ and /Library/, quietly consuming disk space and in some cases running background processes. The manual approach requires visiting eight or more directories, knowing the app's bundle ID, and carefully unloading any launch agents before deletion. It's doable, but it's slow. Whether you go manual or use a tool, the key habit is the same: after removing an app, check what it left behind — because macOS certainly won't tell you.

Reclaim your disk in one click

Crumb audits your whole Mac, tells you what's safe to delete, and frees the space in seconds — private, local, and Apple-notarized.

Download Crumb for macOS

Frequently asked questions

Does deleting an app on Mac remove all its files?
No. Dragging a Mac app to Trash only removes the .app bundle. Support files, caches, preferences, containers, and launch agents stored in ~/Library/ and /Library/ are not touched by Trash and must be removed separately.
Where do Mac apps store their leftover files after being trashed?
The main locations are ~/Library/Application Support/, ~/Library/Caches/, ~/Library/Preferences/, ~/Library/Containers/, ~/Library/Group Containers/, and ~/Library/LaunchAgents/. System-wide data may also live under /Library/Application Support/ and /Library/LaunchDaemons/.
Is it safe to delete leftover files after uninstalling a Mac app?
Most leftover files — caches, preferences, log files, and container data for the removed app — are safe to delete once the app itself is gone. Exceptions include files shared with other apps from the same developer, kernel extensions, and anything you cannot positively identify as belonging only to the removed app.
How do I remove a launch agent left behind by an uninstalled Mac app?
First unload it with 'launchctl unload ~/Library/LaunchAgents/com.vendor.appname.plist', then delete the .plist file. For agents in /Library/LaunchAgents/ you need sudo for both steps. Deleting the plist without unloading it first means the agent stays loaded until the next reboot.