Choosing a Mac App Uninstaller Beyond AppCleaner
Point two uninstallers at the same app and they will hand you two different file lists. That is not a bug in either one. Each tool picks its own rule for deciding which files belong to an app, its own list of paths it refuses to touch, and its own limit on what it will do with administrator privileges. Those three choices decide everything you see. Once you know how attribution works, choosing an uninstaller stops being a feature comparison and becomes a question of which trade-off you want.
Under the hood: how leftover attribution actually works
An uninstaller has two ways to decide that a file belongs to an app, and they fail in opposite directions.
Bundle identifier matching follows the reverse-DNS string the app declares, such as
com.vendor.app. macOS itself names many files that way:
~/Library/Preferences/com.vendor.app.plist, the sandbox container, the entry in
Saved Application State, WebKit and HTTPStorages directories. It is precise and
produces almost no false positives, but it misses everything the app named after
itself, and most apps keep their real data in an
~/Library/Application Support/VendorName folder holding no identifier at all.
Display-name and vendor-string matching catches those folders, and also things that merely share a word. An app called Notes, Sync, or Player matches paths belonging to something else entirely, and matching on a vendor prefix sweeps in sibling apps you are still using. Name matching finds more and is wrong more often; identifier matching finds less and is right more often. Most disagreements between two scan results reduce to that one choice.
The app's architecture decides how much there is to disagree about. A sandboxed app
keeps its state inside ~/Library/Containers/<bundle id>, so its footprint is one
directory and every tool agrees on it. A non-sandboxed app writes directly into
Application Support, Caches, Preferences, Logs, Saved Application State, WebKit
storage, and Cookies. That scatter is where results diverge.
Three categories deserve caution, and how a tool handles them tells you more than its feature list:
- App Group containers under
~/Library/Group Containersare shared on purpose between apps and extensions signed by the same team. Removing one because a single app was uninstalled can delete data another installed app still reads. Name matching will happily propose them. - LaunchAgents and LaunchDaemons in
~/Library/LaunchAgents,/Library/LaunchAgents, and/Library/LaunchDaemonsare jobs, not just files. Deleting the plist without unloading the job leaves a stray process or a login-time error, and the system-level paths need administrator rights, so a tool without them can only skip. - Privileged helpers in
/Library/PrivilegedHelperToolsare root-owned executables installed through a system API, paired with a daemon that should be unloaded first.
System extensions and network extensions are registered with macOS, not merely placed on disk. Deleting their files does not deregister them, and only the app that installed them can ask the system to deactivate them. An uninstaller honest about its boundary will not touch them, which is why VPN clients, antivirus, virtualization software, and audio drivers still need their vendor's own removal tool.
What a disagreement actually looks like
Point three tools at a non-sandboxed app from a developer who ships several products. One lists the bundle plus a few identifier-named files. One adds the Application Support folder and a group container. One adds the launch agent too. All three are internally consistent, and the middle one is proposing the deletion that could hurt. The total at the bottom of the screen is not a quality score. The categories above it are.
The choices
AppCleaner by FreeMacSoft
AppCleaner is the free baseline. You drop an app onto its window, it collects related files, and you review a checklist before deleting. That is the whole product, and for a self-contained app it is genuinely enough.
One fact from its own pages is worth knowing. The download page lists version 3.6.8 for macOS Mojave up to Tahoe, while the release notes date that release to July 2023. Attribution rules track how macOS and apps lay out storage, and these have not been revised in some time. Use it as a quick remnant remover for simple apps, not as the authority on group containers or privileged helpers.
App Cleaner & Uninstaller by Nektony
Nektony's App Cleaner & Uninstaller is the broadest of the dedicated uninstallers. Its official page covers uninstall with hidden leftovers, remains from apps you already deleted, extensions including Safari extensions and preference panes, startup programs including login items and daemons, and updates for App Store and third-party apps. The page states support across macOS 11 and later and carries a recent update date, so it is actively maintained.
Licensing is the part to read carefully. The purchase page offers both subscriptions and a one-time license, and states plainly that the one-time license includes minor updates while major upgrades cost extra. Single, two-Mac, and five-Mac tiers are listed.
AppZapper
AppZapper is still online, still sells a one-time license, and still describes drag-and-drop uninstall plus a browser for installed apps and a place to store license notes. Its copyright line runs to the current year.
What the official site does not publish is a version number, a supported macOS range, or a changelog, and the download is an unversioned archive. That is not proof of abandonment, but you cannot verify from the vendor that the build you install was written for the macOS you run. For a tool whose job is deleting files from system folders, that is the wrong thing to be uncertain about.
Hazel by Noodlesoft
Hazel is not an uninstaller. It is a rules engine for file automation whose App Sweep feature watches the Trash: throw an app away by hand and Hazel offers the support files it finds, with checkboxes and a Keep All button. Version 6.1.2 shipped in February 2026 and requires macOS 13 or later, on a one-time license with paid major upgrades.
Its own manual sets the boundary better than most marketing does: if the app has its own uninstaller you should use that instead, because removing certain apps requires steps only the uninstaller knows, and App Sweep works best for apps installed by dragging. Hazel suits people who want leftovers caught at the moment of deletion so they never accumulate. It is not the tool for auditing years of accrued remnants.
The vendor's own uninstaller
Apple's own guidance in Delete or uninstall apps on Mac says to check whether a non-Apple app ships an Uninstall app, because that is the best way to remove login items, extensions, and data the app stored elsewhere.
This is the only category that can deactivate a system or network extension, unload a privileged daemon in the right order, release a device authorization, and remove installer receipts. No file scanner substitutes for it, and none should claim to.
Mole's Software tab
Mole handles app updates, startup items, and uninstall with more than fifteen
leftover categories on one surface. It labels iOS wrapper apps, hides around fifty
system-critical bundles, auto-selects orphan leftovers older than thirty days, clears
the app's Dock entry, and takes one administrator authorization per session for
root-owned bundles in Applications. Discovery and confirmed removal are separate steps,
and everything it removes goes through the system Trash, so a wrong call is
recoverable. It does not replace a vendor uninstaller for software with drivers, kernel
or system extensions, VPN components, or antivirus. The license is a one-time purchase
with lifetime updates for two Macs on macOS 14 or later, scanning is always free, each
destructive tool works twice before a license is needed, and terminal users can run the
free open-source CLI with mo uninstall instead.
Quick comparison
| Choice | How it finds leftovers | Scope beyond uninstall | Licensing model |
|---|---|---|---|
| AppCleaner | Drop one app in, match related files | None | Free, donations |
| App Cleaner & Uninstaller | Scans installed apps and old remains | Extensions, startup, updates | Subscription or one-time |
| AppZapper | Drag-and-drop plus an app browser | License note storage | One-time, no published version |
| Hazel | Watches the Trash at delete time | General file automation | One-time, paid version upgrades |
| Vendor uninstaller | Knows its own install manifest | Extensions, daemons, licensing | Included with the app |
| Mole | Bundle identity plus leftover categories | Updates, startup items | One-time, lifetime updates, two Macs |
A safe order of operations
- Look for a vendor uninstaller first. If the app installed a driver, an extension, a VPN component, or antivirus protection, stop here and use it.
- Sign out or deauthorize inside the app while it still runs, and export what you want to keep.
- Quit the app and its visible helpers.
- Run your scanner and read the categories rather than the total. Preferences, caches, and saved state are safe to lose. Application Support may hold a local database.
- Leave group containers alone unless no other installed app from that developer uses them.
- Let the tool unload launch items rather than deleting plists by hand, and expect an
administrator prompt for anything under
/Library. - Keep everything in the Trash while you use the Mac normally for a day, then empty it.
The free tool is the right answer more often than comparison tables suggest. Pay for breadth only when you retire apps often enough that inventory, updates, and startup items in one place save real time. To do it by hand, the procedure for uninstalling apps without losing shared data covers the same ground, and it is worth deciding first whether you need a cleanup utility at all.