The short answer
Open System Settings → General → Storage to see the big categories, then use Terminal (du -hd 1 ~ | sort -h) to find the largest folders in your home folder. The usual causes are old downloads, videos and disk images, iPhone backups, Xcode DerivedData and simulators, Docker images, and node_modules folders. “System Data” and purgeable space include caches and local snapshots that macOS frees on its own when it needs room. Move what you don't need to the Trash, check nothing broke, then empty it.
On this page
Step 1: see the big categories
Open System Settings → General → Storage. The bar at the top splits used space into Applications, Documents, Photos, macOS, System Data and others, and the list below has recommendations such as Store in iCloud and Empty Trash Automatically. Click the ⓘ next to a category to see its largest items.
Step 2: find the largest folders
du -hd 1 ~ 2>/dev/null | sort -h | tail -15du -hd 1 ~/Library 2>/dev/null | sort -h | tail -15du adds up folder sizes; sort -h puts the largest last. Some folders need Full Disk Access for Terminal (System Settings → Privacy & Security) before du can read them, and it can take a minute on a full disk.
Step 3: check the usual suspects
| What | Where | Safe to remove? |
|---|---|---|
| Old downloads | ~/Downloads | Usually. Sort by date added and review installers and disk images |
| iPhone and iPad backups | ~/Library/Application Support/MobileSync/Backup | Delete old backups from Finder, not by hand |
| Xcode build data | ~/Library/Developer/Xcode/DerivedData | Yes. Xcode rebuilds it |
| iOS simulators | ~/Library/Developer/CoreSimulator | Delete unavailable ones with xcrun simctl delete unavailable |
| Docker images | Docker's disk image | Unused ones. Check with docker system df first |
| node_modules | Inside each project | Yes, in projects you're not working on. npm install restores them |
Old downloads
- Where
~/Downloads- Safe to remove?
- Usually. Sort by date added and review installers and disk images
iPhone and iPad backups
- Where
~/Library/Application Support/MobileSync/Backup- Safe to remove?
- Delete old backups from Finder, not by hand
Xcode build data
- Where
~/Library/Developer/Xcode/DerivedData- Safe to remove?
- Yes. Xcode rebuilds it
iOS simulators
- Where
~/Library/Developer/CoreSimulator- Safe to remove?
- Delete unavailable ones with
xcrun simctl delete unavailable
Docker images
- Where
- Docker's disk image
- Safe to remove?
- Unused ones. Check with
docker system dffirst
node_modules
- Where
- Inside each project
- Safe to remove?
- Yes, in projects you're not working on.
npm installrestores them
tmutil listlocalsnapshots /Local snapshots are purgeable: macOS removes them as the disk fills, so you don't need to delete them by hand to install an update.
Step 4: remove things so you can undo it
Move files to the Trash instead of deleting them in Terminal with rm. Use your Mac for a day, and empty the Trash once you're sure nothing needed them. Don't remove folders inside /System or /Library you don't recognise.