How to completely uninstall apps on a Mac, leftovers included
Uninstalling a Mac app looks simple: drag it to the Trash. But an app is more than its icon. While you use it, it writes settings, caches, containers, logs and sometimes background helpers into your Library folders. Dragging the app to the Trash leaves all of that behind.
On a test Mac we checked, eight everyday apps had files in 1 to 14 different places each, and three apps that had already been deleted still had system helpers and extensions installed, one of them registered to run as root.
Here is how to remove an app completely on macOS 27, by hand or with an app.
Step 1: Remove the app itself
- Quit the app.
- Open Finder and click Applications in the sidebar.
- Drag the app to the Trash (or select it and press Command-Delete).
Changed your mind? Select it in the Trash and choose File > Put Back. Once you empty the Trash, it’s gone.
Some apps come with their own uninstaller, often apps with drivers, plug-ins or system extensions. If the app’s folder contains Uninstall [App] or [App] Uninstaller, use that instead; it knows what the app installed.
You can’t remove apps macOS needs, such as Mail, Music, Notes or Maps.
Note: Many older guides say to delete apps from Launchpad. Launchpad no longer exists in macOS 27; the Apps app took its place. Finder is the reliable way.
Step 2: Find what the app left behind
Leftovers are named after the app’s bundle ID, a reverse-domain name such as com.example.app. Get it before you delete the app:
osascript -e 'id of app "AppName"'
Then look for that ID in your Library folder. In Finder, choose Go > Go to Folder (Command-Shift-G), type ~/Library, and check these folders:
| Folder | What’s inside |
|---|---|
Application Support |
The app’s main data; sometimes a folder with the app’s name instead of its ID |
Containers |
Everything a sandboxed app stores, often the biggest leftover |
Group Containers |
Data shared between apps from the same developer (name starts with a team ID) |
Caches, HTTPStorages, WebKit |
Caches and web data |
Preferences |
Settings files (<bundle ID>.plist) |
Logs, Application Scripts, Cookies |
Logs, scripts and cookies |
LaunchAgents |
Background items that start when you log in |
Two warnings before you delete anything:
- Group Containers can be shared. If another app from the same developer is still installed (for example one office app of a suite), its group container may be in use. Leave it.
- Some folders are protected. On our test Mac, Terminal could not read
~/Library/Cookiesor the Trash (“Operation not permitted”) until it had Full Disk Access, and macOS can ask before one app reads another app’s data inContainers.
Move what clearly belongs to the app to the Trash, not straight to permanent deletion.
Step 3: Check background items and helpers
Some apps install parts that run without the app: login items, background agents, and privileged helpers that run as root.
- System Settings > General > Login Items & Extensions lists what opens at login (Open at Login), what runs in the background (Background App Activity) and installed Extensions. Turn off items from apps you removed.
- System-wide helpers live in
/Library/LaunchDaemonsand/Library/PrivilegedHelperTools(what they are and how to remove them). In Terminal,ls /Library/LaunchDaemons /Library/PrivilegedHelperToolsshows them, andlaunchctl print system/<label>shows whether one is still loaded. Removing them needs an administrator, so only do this if you’re sure what they are. - System extensions, for example virtual cameras, are listed by
systemextensionsctl listand removed from Login Items & Extensions in System Settings. - Installers also leave package receipts;
pkgutil --pkgslists them. They’re small records, not worth hunting down by hand.
App by app: what we measured
Every app leaves something different, and the names don’t always match the app. For these apps we listed every location we found on macOS 27, and which ones to keep:
- Google Chrome: your profile, caches, and Google’s updater with three launch agents, shared with other Google apps.
- WhatsApp: its containers and group containers, two of which you keep if you also use WhatsApp Business.
- ChatGPT: leftovers named
com.openai.codex, so searching for “ChatGPT” finds almost nothing. - Claude: an Application Support folder plus files under its bundle ID, next to a cache that belongs to Claude Code.
The faster way: Doff
Doing all of this by hand for every app is slow, and it’s easy to miss something or delete the wrong folder. Doff, our app, does it for you:
- Drag an app to the Trash and Doff offers to remove its leftovers too.
- It shows how much space the app really takes, split by where it lives.
- It finds leftovers of apps you already deleted, including launch daemons and helpers that can keep running as root.
- It only preselects confident matches. Shared data and iCloud Drive folders are never preselected, and Apple’s files are off-limits.
- Everything goes to the Trash, with History and Put Back.
Scanning is free; moving leftovers to the Trash takes a one-time $12.99 license. It needs macOS 15 or later and Full Disk Access.
Related
- Freed up space? Keep an eye on it with free disk space in your menu bar.
- More small gaps in macOS and what fills them: macOS missing features.
- Weighing an all-in-one cleaner? CleanMyMac alternatives, job by job.
- Other utilities worth a place on your Mac: the best Mac menu bar apps.
Questions
Does moving an app to the Trash uninstall it completely?
No. It removes the app itself, but its settings, caches, containers, logs and any background helpers stay in your Library folders. They can take up gigabytes, and some helpers keep running.
Where is Launchpad in macOS 27?
Launchpad is gone in macOS 27; its place is taken by the Apps app. To remove an app, drag it from the Applications folder in Finder to the Trash.
Is it safe to delete files in ~/Library?
Only files that clearly belong to the app you removed, matched by its exact bundle ID. Don't delete folders you aren't sure about, never touch Apple's com.apple files, and move things to the Trash instead of deleting them so you can put them back.