A full disk does more than block downloads. macOS uses free space for swap, the memory it moves to disk when RAM runs short, and for installing updates. With too little free space, a Mac that was a little slow starts to stall, and updates refuse to install. Aim to keep 10 to 20% of the disk free.
The order below goes from the safest steps to the ones that need more thought. Work down it until you have enough room.
First, see what’s taking up space
Apple menu › System Settings › General › Storage. The bar shows each category, and the list below it has an ⓘ button for most of them that opens the files behind the number. The largest category is where to start.
If the biggest part is System Data, read what System Data is and how to clear it: it has its own causes.
1. Empty the Trash, including the hidden ones
Files in the Trash still take space. Empty it from the Dock (Control-click the Trash › Empty Trash). Photos keeps deleted photos in Recently Deleted for 30 days, and Mail has its own Trash and Junk folders; empty those too.
2. Clear out Downloads and large files
Installers, disk images (.dmg) and videos pile up in Downloads. In Finder, open Downloads, switch to list view and sort by Size. Anything you’ve already installed or watched can go.
To find large files anywhere: in Finder, choose File › Find, click +, set the first menu to File Size (choose Other if it isn’t listed), then is greater than 1 GB.
3. Remove apps you don’t use
In Storage settings, click ⓘ next to Applications to see apps by size and when you last opened them. Games, video editors and old versions of apps you’ve replaced are often the biggest.
Dragging an app to the Trash leaves its data behind, sometimes gigabytes of it. See how to uninstall apps completely.
4. Old iPhone and iPad backups
If you’ve ever backed up an iPhone or iPad to this Mac, each backup can be tens of gigabytes. In Storage settings, click ⓘ next to iOS Files to see them, and delete backups of devices you no longer have.
5. Caches that rebuild themselves
Caches are safe to delete because apps make them again, but they come back, so this frees space for a while rather than for good. It matters most for developers, where caches get huge:
- Xcode’s build data and simulators: is it safe to delete DerivedData?
- Docker’s disk image: Docker.raw is huge
- Old JavaScript projects: finding old node_modules
- Package managers:
brew cleanupremoves Homebrew’s old downloads, andnpm cache clean --forceempties npm’s cache.
For everyday apps, see how to clear caches, and when not to.
6. Let macOS keep things in iCloud
The Recommendations at the top of Storage settings can store Desktop and Documents in iCloud and keep only recent files on the Mac, remove films and TV shows you’ve watched, and empty the Trash automatically after 30 days. They’re worth turning on if you pay for iCloud storage.
“My Mac says storage is full, but I can’t find the files”
A few things take space without showing up as files you can see:
- Time Machine local snapshots, kept on the disk between backups. macOS frees them when it needs space, but they count until then. See the System Data guide for how to list and remove them.
- Swap, which grows when memory runs short. A restart clears it.
- Purgeable space: files macOS can remove when needed, such as items stored in iCloud. Finder may count it as available while Storage settings counts it as used.
- Other Users & Shared: files in other accounts on the Mac and in
/Users/Shared. Only that account’s owner should clear them.
If you’ve just deleted a lot and the free figure hasn’t moved, empty the Trash and restart. The number often updates only then.
What not to do
- Don’t delete files from
/Systemor/Libraryyou don’t recognise. - Don’t delete whole folders in
~/Library/Application Support: that’s your apps’ data, not cache. - Prefer tools that move things to the Trash over ones that delete them for good, so a mistake can be undone.
Unslow lists what can go with its exact size and what getting it back would cost, ticks only what rebuilds on its own, and moves everything to the Trash rather than deleting it.