If you have ever opened Spotlight and watched the spinning progress bar sit at "Indexing…" for hours — or even days — you are not alone. Spotlight stuck indexing on Mac is one of those maddening problems that affects everything from file search to Siri suggestions, and it has followed macOS through Ventura, Sonoma, Sequoia, and now Tahoe on both Apple Silicon and Intel machines. The good news is that the root causes are well understood, and the fixes below are real, tested, and arranged from least to most disruptive so you can stop as soon as yours starts working.
Why Does Spotlight Get Stuck?
Spotlight is powered by mds (metadata server) and its worker process mds_stores. When indexing stalls, the usual culprits are:
- A corrupt
.Spotlight-V100metadata store on a volume - An enormous folder —
~/Library/Developer/Xcode/DerivedData,~/.m2/repository, ornode_modulestrees — being re-indexed after a software update - A Privacy exclusion that was added then removed, leaving the index in a partial rebuild state
- A Time Machine backup volume triggering constant re-indexing
- Permissions problems on
~/Library/Metadata/or on/var/folders/
Fix 1 — Check Whether It Is Actually Stuck (Not Just Busy)
Before resorting to nuclear options, confirm the index is truly stalled and not simply chugging through a large volume for the first time.
- Open Terminal and run:
sudo mdutil -s /
A healthy response looks like Indexing enabled. A stuck one often reports Indexing and searching disabled. or returns no progress change after several minutes.
- Check CPU load from the indexer:
top -o cpu | grep -E "mds|mdworker"
If mds_stores is pegged above 90% CPU for more than 20 minutes without decreasing, the index is likely looping on a problem file or folder.
Fix 2 — Exclude Problem Folders, Then Re-Enable Them
Developer directories and dependency caches are the biggest offenders. Adding a folder to Spotlight's Privacy list pauses indexing on it immediately, which often breaks a loop.
- Go to System Settings → Siri & Spotlight → Spotlight Privacy.
- Click + and add the folder that is causing grief. Common candidates:
~/Library/Developer/Xcode/DerivedData~/.m2/repository~/.cargo/registry- Any external drive or network share
- Wait 30 seconds, then remove the folder from the Privacy list to let Spotlight index it cleanly.
This forces mds to restart indexing on that location from scratch, usually resolving the stall.
Fix 3 — Reindex a Specific Volume
If the Macintosh HD volume itself is the problem, you can trigger a targeted reindex without wiping everything:
sudo mdutil -E /
The -E flag erases the current index and begins a fresh rebuild. On a typical 512 GB SSD with normal usage, this takes 15–45 minutes. On machines with large node_modules or DerivedData directories it can take a few hours — which is why Fix 2 (excluding those folders first) is worth trying before this step.
Fix 4 — Restart the mds Daemon
Sometimes mds just needs a kick. This does not erase the index — it simply stops and restarts the daemon so it can resume from where it left off:
sudo launchctl stop com.apple.metadata.mds
sudo launchctl start com.apple.metadata.mds
After restarting, open Activity Monitor and watch the mds_stores CPU usage for a couple of minutes. If it begins ticking down gradually, the restart fixed the loop.
How to Delete and Rebuild the Entire Spotlight Index (Step-by-Step)
This is the most reliable fix when nothing else works. It deletes the metadata store and forces macOS to rebuild from scratch.
- Open Terminal.
- Disable Spotlight indexing:
sudo mdutil -a -i off
- Delete the existing index store:
sudo rm -rf /.Spotlight-V100
- Re-enable indexing:
sudo mdutil -a -i on
- Trigger a rebuild explicitly:
sudo mdutil -E /
- Reboot your Mac. After login, Spotlight will show "Indexing…" again — but this time it will complete.
If you are dealing with an external SSD or Time Machine drive, repeat step 3 with that volume's path, e.g. /Volumes/MyDrive/.Spotlight-V100.
Fix 5 — Check Permissions on the Metadata Folder
On some machines — especially those that have been migrated from an older Mac — the ~/Library/Metadata/ folder ends up with wrong ownership that prevents mds from writing to it.
ls -la ~/Library/Metadata/
The folder should be owned by your user account, not root. If it is owned by root, fix it:
sudo chown -R $(whoami) ~/Library/Metadata/
Then restart mds as shown in Fix 4.
Fix 6 — Clear Related Caches That Can Block Indexing
Spotlight relies on several caches beyond its own index. Stale Quick Look thumbnails and font caches have both been known to make mds spin. Clearing them is safe and fast.
To reset the Quick Look cache:
qlmanage -r cache
To reset the font cache (which can cause mdworker to loop on font files):
sudo atsutil databases -remove
sudo atsutil server -shutdown
sudo atsutil server -ping
You can find these caches — along with dozens of others — at ~/Library/Caches/ and /Library/Caches/. A tool like Crumb can audit all of these at once and show what is safe to remove before you delete anything. For a deeper look at what accumulates in these folders, see our guide on what cache files are on a Mac.
Fix 7 — Identify Disk-Space Pressure Blocking the Index
Spotlight needs free space to write its index. On volumes with less than 5 GB free, mds will stall silently without any useful error message. Check your free space first:
df -h /
If you are running tight, the fastest wins are usually large developer caches. The table below shows typical sizes on a developer machine after a year of active use:
| Folder | Typical Size | Safe to Delete? | How to Reclaim |
|---|---|---|---|
~/Library/Developer/Xcode/DerivedData |
10–80 GB | Yes — rebuilt on next build | rm -rf ~/Library/Developer/Xcode/DerivedData |
~/.m2/repository |
2–20 GB | Yes — re-downloaded on next Maven build | rm -rf ~/.m2/repository |
~/.cargo/registry |
1–10 GB | Yes — re-downloaded on next Cargo build | cargo cache --autoclean |
~/Library/Caches/ |
2–15 GB | Mostly yes — app-specific entries may need care | Audit per-app before deleting |
/Library/Caches/ |
0.5–5 GB | Mostly yes | Audit per-app before deleting |
node_modules trees |
1–30 GB | Yes if project is inactive | See our node_modules cleanup guide |
Freeing up 10–20 GB is often enough to unblock a stalled Spotlight index immediately.
When to Expect Indexing to Complete
After a full reindex (mdutil -E /), how long should you wait? It depends on the volume size and the number of files, not just raw gigabytes. A 1 TB drive with mostly video files indexes far faster than a 256 GB drive packed with millions of small source files.
- Typical consumer Mac: 20–60 minutes
- Developer Mac with Xcode and multiple runtimes: 1–4 hours
- Mac with an excluded
DerivedDatafolder: 15–30 minutes
During this period, Spotlight searches still work — they just return incomplete results. Battery drain and fan activity will be elevated. Plug in if you can, especially on a MacBook.