代替: CleanMyMac
Free up your Mac. Safely. A free, open-source native Mac app that clears the cache and junk your Mac piles up on its own. Files go to the Trash by default, so you can put them back.
↓ ダウンロード
すべてのリリース →
Purge
Free up your Mac. Safely.
English | 简体中文
A free, open-source native Mac app that clears the cache and junk your Mac piles up on its own.
Files go to the Trash by default, so you can put them back.
Download · Install guide · Build from source · Security

Your Mac quietly fills up with cache and junk you never see and never asked for. Purge finds it, marks what is safe, and clears it in one click.
[!NOTE] Files and folders go to the Trash by default, and Purge never empties the Trash, so you can put them back until you empty it yourself. Removed for good: iOS simulators and simulator runtimes, through Xcode's
simctl; Time Machine local snapshots, throughtmutil(Purge keeps the newest and the one from your last backup); and the Apple Intelligence models on macOS 27, which Apple's asset service releases and Purge can download again. Docker Desktop's folder goes to the Trash. Purge does not rundocker system prune.
You do not need to understand any of it to use it. But if you ever want to check, every item carries a plain-language explanation and a safety label, so nothing gets touched that you cannot see and verify first.
Features
Overview
- Where your space went: one bar for the whole disk. Used, free and total come straight from the volume, so they match System Settings. App Caches, Dev Tools, Large Files, installed apps and leftovers from deleted apps each get their own segment, and the rest is shown as everything else
- A row per category with its size and share of the disk. Click one to open its tab
- Everything else opens too. Click the row and a page shows what it holds: four figures for what you can do about the space, over a map where each group is a frame with its biggest folders drawn inside, sized by space and coloured by kind. The kinds are space you free in another app (Photos, Mail, Steam, the Trash), your own files (projects, documents), what Purge leaves alone because it doesn't consider it safe to delete (caches off its list, app data no installed app claims), and what macOS manages. Point at a tile to name it, and click it to see what it is, with Show in Finder or the owning app's own way to free it. It is read only: nothing on it moves a file
- Scan Everything (⇧⌘R) scans every category, one at a time so the Mac stays responsive. When you open Purge it does the same on its own. Large Files and the app scans need Full Disk Access; without it only App Caches and Dev Tools scan
- Each byte is counted once: an app's cache folder counts under App Caches, not again under the app
- Apple Intelligence models (macOS 27, Apple silicon): the on-device models macOS files under System Data, with no switch to remove them. Remove releases them through Apple's asset service and installs a profile, which you approve once, so they don't download again. Download Again removes the profile and asks macOS for the sets Purge removed, in your Siri language. The size shown is Apple's figure; Purge records what the disk really gave back
App Caches
Scans ~/Library/Caches, sandbox container caches, and common system junk:
- Per-app cache folders with friendly names, brand icons, and a plain-language explanation if you want to read it
- System Junk like application logs, crash reports, macOS installers, leftover macOS update files, font cache
- Large media caches from creative apps like Premiere Pro and After Effects
- Duplicate cache locations for the same app merged into a single row
- Results stream in as they are found
Dev Tools
Three sections in one view:
- Global dev tool caches: Xcode (Derived Data, Archives, DeviceSupport), Homebrew, npm, pnpm, Yarn, CocoaPods, Gradle, Flutter, Docker Desktop, VS Code, Cursor, JetBrains, Cargo, Terraform, and more
- iOS Simulators: unused simulator runtimes grouped together (booted simulators are skipped)
- Developer projects:
node_modules, Python virtual environments, Rusttarget, Flutter build output, XcodePods, Android.gradle, and other artifacts grouped by project
In Settings → Developer Projects, choose Consider stale after (1 month to 2 years, or Show all) to control which projects appear. Age is measured from the last time anything in the project changed, including git activity, not from the date on node_modules or target. A project in use right now, with a terminal or dev server running inside it or a git command in progress, never appears.
Git worktrees made by AI coding tools (Cursor, Codex, Conductor, T3 Code, and Claude Code) appear under Orphaned Git Worktrees only once their repository no longer lists them. A worktree Git still uses never appears however old it is, and neither does one a terminal or agent is working inside.
Large Files
Find space-hogging personal files without digging through folders:
- Scans Documents, Desktop, Downloads, Movies, Music, and Pictures, plus
~/Parallelsand~/Virtual Machines.localizedfor virtual machines only - Skips managed libraries (Photos, iMovie, Music, and similar), hidden folders, and project folders like
node_modules,Pods,DerivedDataand build output. Deleting a single file out of a dependency tree only breaks the install, so those belong in Dev Tools, which removes them a folder at a time - Search filters the list as you type, matching the file name, the folder it sits in, and its source label
- Filter by size (5 MB to 1 GB) and last used (any time up to over 1 year ago)
- Category chips for videos, audio, images, PDFs, archives, documents, AI models, virtual machines, and other files
- Duplicates: a byte-for-byte scan finds identical copies, groups them together, and shows how much you'd reclaim by keeping one. A Duplicates chip gathers them in one place. Keep one of each clears a whole tab of duplicates in one go. It suggests a copy to keep per set and marks the rest for Trash, and you can move the keeper to a different copy before anything is deleted. Nothing is removed until you review and confirm
- Sort by size, date, or name; select files and review before deleting
- Quick Look preview and Reveal in Finder from each row
- Deletions move files to Trash, so nothing is permanently erased
Large Files is separate from cache cleanup: these are your personal files, not rebuildable caches.
Restore images, virtual machines, and unfinished downloads
Some big files carry a label that says what they are. Hover it for the full explanation.
- Restore image: a macOS
.ipsw, often 15 to 25 GB. It's only needed to set up a Mac, a device, or a virtual machine. - Virtual machine: a Parallels (
.pvm), UTM (.utm), or VMware Fusion (.vmwarevm) bundle. It's one row and goes to the Trash whole, never a disk file from inside it. If the app is still installed, the label says to remove the VM there, since the app keeps its own list. A VM whose app is open, or that holds a lock file, stays off the list until you quit the app. - Unfinished download:
.crdownload,.part, and Parallels'.prlupd-partfiles, and Safari's.downloadbundle when it sits directly in Downloads.
Local AI models
Downloaded models are often the largest files on a Mac and are easy to forget. They appear in Large Files under the AI Models category, one row per model, named the way you installed it, with the app or library that downloaded it as the location. Purge knows the stores of Ollama, LM Studio, the Hugging Face Hub cache (~/.cache/huggingface/hub, with HF_HOME and HF_HUB_CACHE honoured), swift-transformers, apps that keep models under ~/Library/Caches/huggingface, PyTorch Hub, Whisper, GPT4All, Jan, DiffusionBee and Draw Things. Weight files over 100 MB in ~/Library/Caches, ~/Library/Application Support and ~/.cache that belong to no known store are listed too, by the folder they sit in, so you can tell which app downloaded them.
Purge understands Ollama's content-addressed storage, so a model's size counts only the bytes that would actually be reclaimed rather than blobs shared with another model. A Hugging Face model is its whole cache folder, so a blob two snapshots share is counted once and never removed from under the other. Models always go to the Trash and are never part of Clean Safe Items or a scheduled clean. When an app keeps its own list of installed models that Purge can't update, the row says the app may still show the model as installed.
App Uninstaller
Dragging an app to the Trash leaves most of it behind: caches, preferences, containers, saved state, logs, and login helpers pile up on disk. The Uninstaller removes the app and those leftovers in one pass.
- Lists the apps you installed in Applications and ~/Applications, skipping system apps and Purge itself. Each tile shows what an uninstall would free: the app bundle plus its removable leftovers
- Select one or more apps, then review a per-app sheet that lists every item with its path and size and a safety label
- Matching is strict, so uninstalling one app can't sweep in files shared across a vendor's apps. Exact bundle-id and app-group matches arrive checked; looser name-only matches arrive unchecked for you to confirm
- A running app is asked to quit first, and only gracefully. If it won't, it's left installed and the rest of the batch still goes through
- Everything confirmed moves to Trash through the same delete engine as the rest of Purge, so it can all come back
- Optional, off by default: turn on Review leftovers when an app is deleted in Settings. A small background watcher then notices when an app leaves Applications or ~/Applications — even if Purge is quit — opens Purge with just that app's leftovers, and gets out of the way after you confirm or dismiss. Nothing moves without that review
Safety labels
Purge assigns a safety label to every item it recognizes:
| Label | Meaning |
|---|---|
| ✅ Safe to Clean | Known cache or rebuildable artifact, safe to remove |
| ⚠️ Check First | May be safe, but could cause inconvenience |
Filter with All, Safe to Clean, or Check First (⌥⌘1–⌥⌘3). Sort by size, date modified, or name.
Unidentified folders are left out of the list entirely. Purge only shows what it knows about.
The labels and explanations are there to be checked, not read cover to cover. Select the safe items and clean them, or open the reasoning behind any single row first. Either way is fine.
Cleaning
- Clean Selected: pick specific rows, review in a confirmation sheet, then delete. Git and lockfile checks run first
- Clean Safe Files: same safe cleanup from the menu bar
- Scheduled cleaning: in Settings → Cleaning Schedule, enable Run automatic cleaning and choose How often (weekly, monthly, every 3 months, or a Custom interval you set in days, weeks, or months). Purge sends a local reminder and cleans safe items when you open the app, so the cleanup keeps happening without you thinking about it
- Files and folders move to the Trash. Purge never empties the Trash. iOS simulators and simulator runtimes are removed for good through Xcode's
simctl. Time Machine local snapshots are removed for good throughtmutil; Purge keeps the newest and the one from your last backup. The Apple Intelligence models are released through Apple's asset service and can be downloaded again
Settings
- Appearance: Light, Dark, or System
- Cleaning Schedule: automatic safe cleanup with a frequency, the next-clean date, and a summary of the last clean
- Developer Projects: stale-project threshold for developer artifact scanning
- Excluded from scans: folders you've told Purge to leave alone, each with its current size. Right-click any scan result and choose Exclude from scans to add one. Excluding only ever narrows what Purge looks at
- Cleaning History: every automatic and manual clean, with the space freed and the item count. Open one to see what was moved to the Trash and what was skipped
More
- First-run onboarding: welcome, permissions (Full Disk Access and optional login item), first scan, results review, and a safe clean walkthrough
- Menu bar companion: recoverable space at a glance, quick open, and scan/clean actions
- Disk summary: the Overview shows used and free space; the sidebar shows what is already in the Trash, and each scan tab's size
- In-app updates: the About screen checks for, downloads, and installs new versions
Keyboard shortcuts
| Shortcut | Action |
|---|---|
| ⌘R | Scan the current tab (Scan Everything on the Overview) |
| ⇧⌘R | Scan Everything, from any tab |
| ⌘1–⌘5 | Go to Overview, App Caches, Dev Tools, Large Files, or App Uninstaller |
| ⌥⌘1–⌥⌘3 | Filter by All, Safe to Clean, or Check First |
| ⌘F | Search on Large Files and App Uninstaller |
Download
Installation
There are two ways to install Purge: with Homebrew if you live in the terminal, or by downloading the app directly. Both land in the same place.
Install with Homebrew
brew install --cask purge
This installs Purge from the official Homebrew cask, and Homebrew verifies the download's checksum for you automatically.
Install manually
The steps below walk through the direct download.
Step 1: Download
Click the download link above and download the .dmg.
Step 2: Verify your download (optional but recommended)
[!TIP] Since Purge deletes files, verifying the checksum confirms your download is byte-for-byte the one that was published, with nothing altered in transit.
Each release includes a matching .dmg.sha256 checksum file. Download both the .dmg and its .dmg.sha256 file into the same folder, then in Terminal:
cd ~/Downloads
shasum -a 256 -c Purgev*.dmg.sha256
A result ending in OK means the file matches the published release.
Step 3: Install
Open the .dmg and drag Purge to your Applications folder.
Step 4: Open Purge
Double-click Purge to open it. Purge is notarized by Apple, so it opens normally with no extra steps.
Step 5: Grant Full Disk Access
Purge needs Full Disk Access to scan your cache folders.
- Click Open Privacy Settings inside the app
- Find Purge in the list
- Turn on the toggle next to Purge
- Come back to the app and click I've granted access
Updating
Purge updates itself in place. Once a day it checks for a new version, and when one is available the update window appears with the release notes. Choose Install Update and Purge downloads it, verifies its signature, installs it, and relaunches. You don't need to visit the release page or drag anything.
By default nothing is installed without your confirmation. You can also check whenever you like from the About screen, and if you'd rather Purge didn't check on its own, turn off Check for updates automatically in Settings → Updates.
If you'd rather not be asked, turn on Download and install updates automatically in the same place, or tick the matching box in the update window. New versions then download in the background and install the next time Purge quits. Once one is ready, Restart to Update in the Purge menu, the menu bar menu or the About screen installs it straight away. That helps if you keep Purge in the menu bar and rarely quit it.
Updates are delivered through Sparkle, the standard update framework for Mac apps outside the App Store. Each update is signed with a key that lives only on the developer's machine, and Purge refuses any download that doesn't carry a matching signature.
Updating with Homebrew
If you installed through Homebrew, you can update from the terminal instead:
brew upgrade --cask purge
Either route is fine. Your settings, cleaning schedule, and history are kept whichever way you update; they live separately from the app. You won't need to grant Full Disk Access again either, since the permission stays with Purge.
You can also browse past versions on the releases page anytime.
Build from source
Prefer to build Purge yourself instead of downloading the release? Here is how.
Prerequisites
- macOS 13.0 or later
- Xcode 16 or later (from the Mac App Store). The project format and its default-actor-isolation build setting need Xcode 16; earlier versions won't open it
- Node.js 18+ and npm, only needed if you want to regenerate brand icons
Dependencies are resolved by Swift Package Manager when you first build. The only one is Sparkle, which handles in-app updates.
Step 1: Clone the repo
git clone https://github.com/jithin-sabu/purge-app.git
cd purge-app
Step 2: Build and run
Open the project in Xcode and run:
open purge.xcodeproj
Then select the purge scheme and press ⌘R.
Or build straight from the command line:
# Build a Debug app
xcodebuild -project purge.xcodeproj -scheme purge -configuration Debug build
# Build a Release app
xcodebuild -project purge.xcodeproj -scheme purge -configuration Release build
The built Purge.app is written under Xcode's DerivedData folder (the build output ends with its path).
Optional: regenerate brand icons
The app cache icons are generated from simple-icons. To rebuild them:
npm install
npm run generate:icons
Running the tests
xcodebuild test -project purge.xcodeproj -scheme purge -destination 'platform=macOS' CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO CODE_SIGNING_ALLOWED=NO
The signing flags matter: without a development certificate on the machine, the test build fails before a single test runs. Continuous integration builds the same way.
Requirements
- macOS 13.0 or later
- Full Disk Access permission
- Xcode command-line tools (optional, for full iOS Simulator listing)
Privacy
Purge runs entirely on your Mac. Scans, explanations, manual overrides, and cleanup history stay in local Application Support. Nothing is uploaded.
The one time Purge talks to the network is the update check: once a day it fetches a small XML file from GitHub to see whether a newer version is available. It sends nothing about you or your Mac, and you can turn it off in Settings → Updates.
Purge never reads or sends file contents.
Purge does not use AI. Nothing you scan or clean is sent to an AI service.
Security
Purge deletes files, so safety is the point. A few things worth knowing:
- Trash by default: Files and folders move to the macOS Trash, and Purge never empties it. You can restore them until you empty the Trash yourself. iOS simulators and simulator runtimes are removed for good through
simctl. Time Machine local snapshots are removed for good throughtmutil; Purge keeps the newest and the one from your last backup. The Apple Intelligence models are released through Apple's asset service and can be downloaded again from Purge. Docker Desktop's data folder goes to the Trash. Purge does not rundocker system prune. - Allowlist-based deletion: Only paths that match an explicit safety allowlist are ever eligible for cleanup. Anything Purge does not recognize is never touched. The safety page lists every allowed location and everything Purge will never touch, generated from the app's source.
- You choose what goes: Purge shows what is reclaimable and you decide what to clear.
- Open source: The full deletion logic, including the allowlist, is in this repo for you to read or build from source yourself.
- Notarized by Apple: The app is signed and notarized, so macOS can verify it hasn't been tampered with since release.
- Signed updates: In-app updates are verified against a signing key before they are installed. An update that isn't signed by that key is refused, so a compromised download can't become a compromised install.
Found a safety gap or a path that could be deleted when it shouldn't be? Please report it. See SECURITY.md for how.
Contributing
Bug reports, safety findings, and pull requests are welcome. CONTRIBUTING.md covers how to set up the project and what makes a change easy to review. Anything touching the safety allowlist, the never-delete protections, or the scanning logic gets extra scrutiny and takes longer to review, which is deliberate.
Security issues are the exception: report those privately through SECURITY.md rather than opening an issue.
License
Purge is released under the MIT License. You are free to use, read, modify, and distribute it.
Support
Purge is free. If it saved you some disk space, you can chip in toward the running costs from the About screen inside the app, or directly at Buy Me a Coffee.