Keep Non-Mac Disks Clean
Copy a file to a USB stick, an SD card or a Windows share and macOS leaves
debris behind: .DS_Store files, and ._ AppleDouble
companions that carry the extended attributes the filesystem cannot store.
They show up on Windows, on Linux, on cameras and on TVs. dotclean removes
them — live, as they appear, or on demand from the Finder with a preview
of exactly what will go. It runs as you, not as root: no daemon, no installer,
no administrator password.
Watches every non-Mac volume and deletes ._ and .DS_Store the moment they appear.
Right-click a disk or folder in the Finder → Services → Clean using DotClean, or use the menu bar.
Every clean shows counts and sizes before anything is removed. No silent deletion, ever.
One action for USB keys and SD cards: clean, unmount, and detach when it is done.
No privileged helper and no system-wide delete rights. It runs as you, in your session.
A bclean tool ships inside the app for scripting. Dry-run unless you pass --yes.
._ AppleDouble files.DS_Store.AppleDouble folders__MACOSX foldersThumbs.db and desktop.ini.apdisk, .VolumeIcon.icns.Trashes, .Spotlight-V100, .fseventsd (on demand only)$Recycle.bin, System Volume Information (on demand only)._ files for fonts and artwork, where the companion file is the datamacOS 13 or newer, Apple Silicon or Intel. The download is a signed and notarized disk image: open it and drag DotClean to Applications. There is no installer package and no administrator password — it installs nothing outside its own bundle.
dotclean listens to the filesystem with a single FSEvents stream rooted at
/ and filters events by mount point, so plugging in a stick never
needs a restart. Anything matching a rule on a non-Mac volume is removed
immediately. If the kernel ever drops events under heavy load, the affected
subtree is re-scanned instead of being ignored. Every deletion is written to
~/Library/Logs/DotClean/dotclean.log.
On-demand cleans run the same rule engine in two phases — scan, then delete — so the list you approve is the list that gets removed. Files are checked again immediately before each unlink: same volume, not a mount point, not a symlink.