What is fseventsd on Mac?
fseventsd keeps a journal of file changes so Spotlight, Time Machine, Finder and dev tools know what changed without rescanning the disk. When it’s busy, something is creating or modifying a huge number of files.
Updated
- Process
fseventsd- Comes from
- macOS
- Safe?
- Safe and essential. Don’t quit it; find which app is writing so many files.
What fseventsd does
fseventsd runs as root from /System/Library/Frameworks/CoreServices.framework/.../FSEvents.framework/Versions/A/Support/fseventsd. When anything creates, modifies, renames or deletes a file, the kernel tells fseventsd, which:
- batches the changes per folder
- writes them to a journal in the hidden
/.fseventsdfolder on each volume - delivers them to subscribers through the FSEvents API
Subscribers include Spotlight, Time Machine, Finder, iCloud Drive, Dropbox, and every dev tool that watches files for changes.
Why it uses CPU
fseventsd’s load tracks how many files change:
- Package installs:
npm install,pnpm install,pip installorcargo buildcreate tens of thousands of files in seconds. - Git operations: checking out a branch or rebasing a large repo.
- Builds and watchers: rebuilds writing to
dist,.nextorDerivedDataon every save, plus many watchers listening. - Docker bind mounts: a container writing to a mounted host folder.
- Background writers: a browser cache, a sync client, or an app logging to files in a loop.
How to find who is writing
sudo fs_usage -w -f filesys | grep -E 'WrData|create|rename|unlink' | awk '{print $NF}' | sed -E 's/\.[0-9]+$//' | sort | uniq -c | sort -rn | head
The last column of fs_usage is the process name (with a thread ID, stripped here); the top counts are your heavy writers. Stop with Ctrl-C after a few seconds. To see which paths one process is writing:
sudo fs_usage -w -f filesys node | head -40
How to make it calm down
- Stop forgotten dev servers and watchers. Several old
viteornext devinstances watching the same tree multiply the work. See orphaned node processes. - Point build output and caches outside folders you sync (iCloud Drive, Dropbox).
- Exclude dev folders from Spotlight and Time Machine. That doesn’t stop fseventsd recording changes, but cuts the downstream work those events trigger.
- For Docker, prefer named volumes over bind mounts for databases and
node_modules. - Restart if fseventsd stays high with nothing writing; a corrupt journal on an external disk can do that.
When to worry
fseventsd is protected by System Integrity Protection, so there’s no realistic impostor. Confirm the path with ps -o user,command -p $(pgrep -x fseventsd). Worry instead about an unknown process that shows up at the top of fs_usage writing constantly, especially one running from your home folder: check it with codesign -dv --verbose=2 <path>.
Seeing it in Stat Space
Stat Space’s Disk tab shows top apps by I/O, which usually points straight at the writer behind fseventsd’s load. Its orphan sweep finds dev processes like node, vite and tsc still running after their terminal or agent closed, which are a common source of watchers nobody is using.
Questions
Can I delete the .fseventsd folder?
Don’t on your startup disk. On an external drive it’s safe but pointless: macOS recreates it, and Time Machine and Spotlight may do a full rescan.
Do file watchers like Vite or webpack use fseventsd?
Yes. Most macOS file watchers (chokidar, watchman, Vite, Xcode) subscribe to FSEvents. Many watchers on big folders add up.
Why is fseventsd busy when I’m not doing anything?
Something in the background is writing: a sync client, a browser cache, a VM, Docker, or a log loop. fs_usage will show it.
Know what your Mac is doing, without adding to it.
Free, no account. Pro is $9.99 once for the first 100 buyers.