What Is Taking Up Space on My Mac?
There is a running joke about the heaviest objects in the universe: neutron stars, black holes, and somewhere on that list, the node_modules folder. It is a joke because it is true. Whatever filled your Mac, it was almost certainly not your holiday photos. Here is what is taking up space on my Mac in practice, and how to find every gigabyte.
The honest answer: it is rarely your files
When a Mac fills up, most people start deleting photos and documents. That is the wrong drawer. A modern Mac spends its disk on invisible things that grow quietly in the background — build artefacts, caches, package folders, device backups and virtual machines. They live inside hidden ~/Library folders and inside app data, so you never scroll past them in Finder.
The built-in storage screen — Apple menu → System Settings → General → Storage — confirms this. It shows a bar split into vague buckets, and the biggest ones are usually the most useless: System Data and, on older macOS, Other. Those buckets are where macOS hides everything it cannot neatly label, which is exactly the stuff eating your disk.
The usual space hogs, in order of how often they are the culprit
These are the folders that show up at the top of nearly every full Mac:
- Caches —
~/Library/Cachesholds temporary data for every app and browser. Safe to clear; apps rebuild what they need. Often several gigabytes on its own. - node_modules — every JavaScript project keeps its own private copy of its dependencies. Ten old side projects means ten copies of roughly the same hundreds of megabytes. This is the heaviest object in the universe for a reason.
- Xcode DerivedData —
~/Library/Developer/Xcode/DerivedDatastores build output that regenerates automatically. Frequently 10–30 GB if you build iOS or Mac apps. - iOS device backups —
~/Library/Application Support/MobileSync/Backupkeeps full backups of iPhones and iPads, including devices you no longer own. Each one can be tens of gigabytes. - Docker — images, containers and the
Docker.rawdisk image grow without ever shrinking. It is common to see Docker holding more space than your entire Applications folder. - The Photos library — only big if you are not using Optimise Mac Storage. With it off, every full-resolution original lives locally.
- Downloads — the folder where disk space goes to die: old
.dmginstallers, exported videos, duplicate ZIPs. - Mail attachments — Mail downloads and caches every attachment, and that cache quietly reaches gigabytes over the years.
Why node_modules really is so heavy
It is not one giant file — it is hundreds of thousands of tiny ones. Each package pulls in its own dependencies, which pull in theirs, and the tree fans out until a single project can hold tens of thousands of files. The size is bad; the file count is worse, because it makes copying, backing up and even measuring the folder slow.
The good news: it is completely disposable. Delete node_modules in any project you are not actively working on, and a single npm install brings it back exactly as it was. You are not losing code, only a rebuildable cache.
What the "Other" and "System Data" categories really are
If the storage bar says something is taking up so much space on my Mac but the label is just Other or System Data, that is not a glitch — it is macOS giving up on classifying it. Both are catch-all buckets, and between them they hold the bulk of the mystery gigabytes:
- Caches and logs that do not belong to any one app category.
- Local Time Machine snapshots stored on the startup disk when the backup drive is not connected.
- Virtual-memory swap and sleep-image files.
- Fonts, plugins, extensions and system support files.
- Disk images and archives macOS cannot match to Documents or Apps.
The storage screen will never show you the folders inside Other or System Data, which is why it feels like a black box. The fix is not to attack the bucket directly — it is to look at the actual folders underneath it, which is what a disk map does. For the safe, step-by-step cleanup of those folders, see our guide on how to free up disk space on Mac.
How to see and check what is taking up space on my Mac
The fastest manual method is the Terminal. Open it and run this inside any folder to see which subfolders are the largest, biggest last:
du -sh * 2>/dev/null | sort -h
Start in your home folder, find the biggest subfolder, cd into it, and run it again. A few rounds of this and you will land on the real culprit. To jump straight to giant single files anywhere in your home folder:
find ~ -type f -size +1G 2>/dev/null
~). Never delete /System or the root /Library, and never remove anything you do not recognise.Or just look at the map
Drilling through folders with du works, but it is slow and you have to know where to look. A disk map does the same thing visually and instantly: it draws every folder as a slice sized by how much space it holds, so the heaviest object in the universe is simply the biggest slice on screen. Diskito scans your whole drive into a sunburst and a treemap, groups the safe-to-delete junk above into one place, and lets you move it to the Trash in a click. You see what is taking up space, then reclaim it, without memorising a single path.
See it on a map in seconds
Diskito turns your whole drive into a sunburst and treemap, surfaces the caches, node_modules and build junk automatically, and reclaims the space in one click. Free to visualise, with free cleanups to try.
FAQ
The biggest hidden hogs are caches, Xcode DerivedData, node_modules, old iOS device backups, Docker images, the Photos library, Downloads and Mail attachments. Your actual documents are usually smaller than you think.
Both are catch-all buckets for caches, logs, local snapshots, swap, fonts and anything macOS cannot classify. They look mysterious only because the storage screen will not show the folders inside them — a disk map will.
Start with System Settings → General → Storage for a rough idea, then use a disk map or run du -sh * | sort -h inside a folder to check which subfolders are largest.