Apps & uninstalling
How to Completely Delete Apps on Mac (Including Their Hidden Files)
A complete app delete on Mac means more than emptying the trash. Here's how to remove every hidden file, cache, and helper an app leaves behind.
There’s a difference between deleting an app and getting rid of it. Deleting is what happens when you trash the .app and empty the bin. Getting rid of it means the support files are gone too — the prefs, the caches, the launch helpers, the random gigabyte of data buried in ~/Library/Containers.
Most people stop at the first one and never realize the second one exists.
Where the hidden files actually live
macOS doesn’t hide app data to be sneaky — ~/Library is just hidden by default in Finder so users don’t accidentally break their settings. To see it, open Finder and hit Cmd+Shift+G, then type ~/Library and press return.
Once you’re in there, the folders that matter are:
Application Support/— saved data, plugins, project files for some appsCaches/— temp files, can balloon to several GB per appPreferences/—.plistsettings filesContainers/— sandboxed app data (App Store apps live here)Group Containers/— data shared between an app and its extensionsLogs/— diagnostic logsSaved Application State/— window positions, last-open documentsWebKit/,HTTPStorages/,Cookies/— for apps that use embedded browsersLaunchAgents/—.plistfiles that auto-start helpers at login
There’s also a system-level /Library/ (no tilde) which contains everything an installer wrote with admin permissions. Adobe, Microsoft, anti-cheat tools, and most pro apps leave files there too.
The actual delete process
Here’s the workflow that gets everything:
- Quit the app and any background helpers (check Activity Monitor).
- Move the app from
/Applicationsto the Trash. - Find the bundle ID (e.g.
com.figma.Desktop). Easiest way: open Terminal and runosascript -e 'id of app "AppName"'. - In Finder, search each library folder above for both the app’s display name and its bundle ID.
- Drag matching files and folders to the Trash.
- Check
~/Library/LaunchAgents/,/Library/LaunchAgents/, and/Library/LaunchDaemons/for.plistfiles belonging to the app. - Empty Trash.
The frustrating part is step 4. App folders aren’t always named what you’d expect. A music app called “Bandwidth” might leave files under com.someparentcompany.bandwidth.app2024 because the developer renamed the company. You hunt by partial match.
What gets missed most often
Even people who know about ~/Library/Application Support tend to miss a few things:
- Group Containers — easy to skip because the names are unhelpful, like
group.com.adobe.AdobeMobileApps - Saved Application State — small files but they pile up
- WebKit storage — Spotify, Discord, and any Electron app store cookies and IndexedDB here
- HTTPStorages — same idea
- Crash reporter logs —
~/Library/Logs/DiagnosticReports/
Add up the missed pieces across a few dozen apps you’ve removed over the years and you’re looking at multiple gigabytes of orphaned data.
A worked example: deleting Slack properly
Slack is a useful test because it leaves substantial debris.
- Quit Slack from the menu bar (not just close the window).
- Drag
Slack.appto Trash. - Bundle ID:
com.tinyspeck.slackmacgap. - Look in:
~/Library/Application Support/Slack/(this is the big one — message attachments and cache, often 1–4 GB)~/Library/Caches/com.tinyspeck.slackmacgap/~/Library/Preferences/com.tinyspeck.slackmacgap.plist~/Library/Containers/com.tinyspeck.slackmacgap.helper/(if present)~/Library/Logs/Slack/~/Library/Saved Application State/com.tinyspeck.slackmacgap.savedState/
- No LaunchAgents in most installs.
- Empty Trash.
Took five minutes. Recovered around 3 GB on a typical Mac.
The launchd problem
LaunchAgents are the most consequential thing people leave behind. A LaunchAgent is a .plist file in ~/Library/LaunchAgents that tells macOS to start a process at login. When you trash the parent app, the LaunchAgent sticks around and tries to launch the missing executable on every login. It fails silently, writes to the system log, and contributes to a slower boot.
You can list active LaunchAgents from Terminal with:
launchctl list
The output is messy but you can spot stragglers — ones with non-zero exit codes or labels referencing apps you’ve already deleted. Removing them is just deleting the matching .plist file from ~/Library/LaunchAgents (no admin password needed for user agents, which is most of them).
~/Library/LaunchAgents directly if you suspect one is hanging around.Why drag-to-trash leaves so much behind
Apple has historically wanted Mac to feel simple, so the user-facing model is “trash the app, you’re done.” That model works for the cleanest apps but most apps aren’t clean. Anything with a sync component, a menu-bar icon, an auto-updater, or a license check writes files to multiple library locations during install or first run.
The result: a Mac that’s been used for 5+ years almost always has 10–30 GB of orphaned app data. None of it is doing anything useful, none of it is being cleaned up by macOS, and none of it would have been left behind by a proper uninstall.
Doing it with Sweep
Sweep’s app uninstaller automates everything in the Slack example above. You select the app, it locates the matching files across ~/Library and the system library, presents a list with sizes, and lets you confirm before anything is deleted.
Two specific things worth noting about how Sweep handles it:
- Preview before delete. Sweep never removes anything you haven’t approved. The list it shows is exactly what will go.
- Bundle ID matching. It identifies leftover files even when the folder names are unhelpful — Group Containers especially.
For apps that are gone but left files behind, Sweep also has a leftover-files scan that finds orphans without needing the original app present. Useful if you’ve already trashed an app months ago and want to clean up the remains now.
Reinstalling and starting clean
If you’re deleting an app to fix a bug — corrupted preferences, broken sync, weird visual glitches — getting rid of the prefs and caches is the whole point. Reinstalling the app on top of old preferences just brings the bug back.
Order of operations for a clean reinstall:
- Uninstall the app and all its support files (manually or via Sweep)
- Restart your Mac (clears anything still in memory)
- Download the latest version from the developer’s site or the App Store
- Install fresh
Skipping the support-file cleanup is the reason “I tried reinstalling and it didn’t help.”
What to keep, what to throw away
Not every leftover is a bad leftover. If you’re planning to reinstall an app — say, your video editor for an upcoming project — you might want to keep its license file, project library, or preset folder. Those usually live in ~/Library/Application Support/<app>/ or somewhere under ~/Documents.
Manual uninstall lets you cherry-pick. Sweep’s preview lets you cherry-pick. The thing that doesn’t let you cherry-pick is dragging the app to the trash and assuming everything’s gone.
Recap
To completely delete an app on Mac:
- Quit the app and any helpers
- Trash the
.appfrom/Applications - Search
~/Libraryand/Libraryfor files matching the app name and bundle ID - Remove matching folders in Application Support, Caches, Preferences, Containers, Group Containers, Logs, Saved Application State
- Remove matching LaunchAgents and helper plists
- Empty Trash
Or have Sweep do it in one click and just confirm the list.