How to completely uninstall an app on Mac, with leftovers
Dragging an app to the Trash removes the app bundle and nothing else. The files it created while running, such as support data, caches, preferences, containers and background helpers, stay in your Library. To uninstall an app completely you delete the app, then find those leftovers by the app's bundle identifier and remove them too.
This guide shows where leftovers live, how to find them, and how to remove background items without leaving broken entries behind.
Why dragging to the Trash leaves files behind
A Mac app is a single bundle in /Applications, and macOS has no uninstaller that tracks what an app writes elsewhere. Apps store their data in standard folders inside your Library so that it survives updates and reinstalls. That is useful when you reinstall, and it is clutter when you do not.
Most leftovers are small: a preferences file, a saved window state. Some are not. Chat apps, browsers, design tools and development tools can leave several GB of caches and support data. Apps that installed a background helper may also leave something that keeps running after the app is gone.
Before you delete: check for an uninstaller and sign out
A few minutes of preparation avoids the common mistakes.
- If the app came with its own uninstaller, use it. Apps that install drivers, system extensions or security tools usually provide one, and it removes parts you cannot easily reach by hand.
- Sign out or deactivate the licence inside the app if it limits the number of computers.
- Export anything you want to keep. Removing support files deletes local data such as projects, chat history or settings.
- Quit the app, including any menu bar icon it has, before moving it to the Trash.
Where leftovers live
These are the standard places. Folders are named after the app, the developer, or the app's bundle identifier.
- ~/Library/Application Support: the app's data and databases. Usually the largest leftover.
- ~/Library/Caches: files the app could rebuild.
- ~/Library/Preferences: settings, as .plist files named with the bundle identifier.
- ~/Library/Containers: the whole data folder of a sandboxed app, which includes most Mac App Store apps. Finder shows these folders with the app's name.
- ~/Library/Group Containers: data shared between apps and extensions from the same developer.
- ~/Library/Saved Application State: window positions for the next launch.
- ~/Library/Logs, ~/Library/HTTPStorages and ~/Library/WebKit: logs, cookies and web data.
- ~/Library/LaunchAgents: background jobs that start when you log in.
- /Library/LaunchDaemons: background jobs that run for the whole system, as root.
- /Library/PrivilegedHelperTools: helper programs with administrator rights, each paired with a launch daemon.
- /Library/Application Support and /Library/LaunchAgents: the same things, installed for all users.
Find leftovers by bundle identifier
Every app has a bundle identifier, a reverse-domain name such as com.example.appname. Most of its files and folders carry that name, which makes it the most reliable thing to search for. Get it before you delete the app. This command prints the identifier for Slack: replace Slack with the name of your app.
osascript -e 'id of app "Slack"'Search your Library for the identifier
Now search your Library for it. In the command below, replace com.example.appname with the identifier you just found. It only lists matches and deletes nothing.
Run the search a second time with the app's name and with the developer's name, since Application Support folders often use those instead. Repeat in /Library for system-wide files. Read each result before removing it, and move matches to the Trash in Finder, so you can put them back if something else breaks.
find ~/Library -iname "*com.example.appname*" 2>/dev/nullRemove launch agents and helpers safely
Launch agents and daemons are small .plist files that tell macOS to start a program in the background. If you delete the app but leave the plist, macOS keeps trying to start something that no longer exists. If you delete the plist while the job is loaded, it keeps running until the next restart.
The clean way is to unload the job first, then remove the file. For a launch agent in your own Library, use the command below with the real file name. It stops the job and removes nothing from disk. Afterwards, move the plist to the Trash.
For a daemon in /Library/LaunchDaemons, the equivalent is sudo launchctl bootout system followed by the full path to the plist. Then move the plist, and the matching file in /Library/PrivilegedHelperTools, to the Trash. Finder will ask for your administrator password.
You can also see and switch off background items in System Settings, under General, then Login Items & Extensions. Only remove plists whose name clearly matches the app you are uninstalling. Leave anything that starts with com.apple alone.
launchctl bootout gui/$(id -u) ~/Library/LaunchAgents/com.example.appname.agent.plistWhat to leave alone
Be careful with anything that may be shared. A Group Containers folder can belong to several apps from the same developer, so removing it while you still use one of the others deletes that app's data too. The same is true of developer-named folders in Application Support that hold data for a whole suite of apps.
If you are not sure a file belongs to the app, leave it. A stray preferences file takes almost no space and does no harm. Once everything is in the Trash, restart, check that your other apps behave normally, and only then empty the Trash.
How Diskzy uninstalls an app
Diskzy is a native Mac app with an Uninstall tab that does this search for you. It removes an app together with what it left behind: support files, caches, preferences, containers, launch agents and privileged helpers. It has guards so that files shared with another app are not touched.
Everything Diskzy removes goes to the Trash, so nothing is gone until you empty the Trash. It needs Full Disk Access to see everything, and it is signed and notarized by Apple. It is free for 72 hours with everything unlocked, then $9 once for 2 Macs.
Common questions
- Does dragging an app to the Trash uninstall it completely?
- No. It removes the app itself, but support files, caches, preferences and any background helpers stay in your Library until you delete them.
- Where are leftover app files stored on a Mac?
- Mostly in your user Library: Application Support, Caches, Preferences, Containers, Group Containers and Saved Application State. Background items are in ~/Library/LaunchAgents, /Library/LaunchDaemons and /Library/PrivilegedHelperTools.
- How do I find an app's bundle identifier?
- In Terminal, run osascript -e 'id of app "AppName"' with the app's name. It prints an identifier such as com.example.appname, which most of the app's files are named after.
- Is it safe to delete files in ~/Library/Preferences?
- It is safe to delete the preferences file of an app you have uninstalled. If you delete one for an app you still use, the app starts with default settings.
- How do I stop a deleted app from running in the background?
- Open System Settings, General, Login Items & Extensions and switch off its background item. Then unload and remove its plist from ~/Library/LaunchAgents or /Library/LaunchDaemons.
Related guides
- Application Support~/Library/Application Support
- Caches~/Library/Caches
- Logs~/Library/Logs
- Trash~/.Trash
Uninstall guides
See where your Mac's space went
Diskzy maps your disk, explains System Data and clears what's safe. Free for 72 hours, then $9 once for 2 Macs.
Try Diskzy for free