A VPN hides your IP address, but your digital fingerprints remain everywhere. Every time you upload a photo or document, hidden metadata leaks your exact GPS coordinates, camera serial numbers, author names, and edit history.
Uploading these files to public platforms, clients, or web forms leaks private data by default.
The friction and impact
Cleaning metadata manually is tedious:
- Running CLI utilities like
mat2before every upload disrupts normal workflow focus. - A single forgotten file leaks private location or personal identity.
- Destructive cleaners overwrite files on disk, stripping EXIF data I wanted to keep locally.
I needed a system that sanitizes metadata automatically during upload without altering my local files.
Solving it with scrubfs
I built scrubfs, a virtual FUSE filesystem written in Rust.
Instead of modifying files on disk, scrubfs mounts a single virtual directory (defaulting to ~/scrubfs) that mirrors configured source folders. When an application or browser opens a file through the ~/scrubfs path, scrubfs intercepts the read, passes a temporary copy through mat2, and serves the metadata-stripped bytes from memory.
Original files on disk are never touched.
What this architecture provides:
- Zero-click privacy. Selecting
~/scrubfs/Downloads/photo.jpgin a browser upload dialog strips metadata automatically. - Preserved originals. Local files in
~/Downloadskeep their original EXIF data intact. - Background daemon. Runs as a background process that releases the terminal prompt immediately.
How to use it
scrubfs runs on Linux and requires FUSE 3 and mat2.
Building and installing from source:
cargo build --release
sudo install -Dm755 target/release/scrubfs /usr/local/bin/scrubfs
Adding folders to the virtual drive:
scrubfs add ~/Downloads
scrubfs add ~/Documents
scrubfs add ~/work/client-docs --name client
Starting the virtual drive:
scrubfs
The drive mounts at ~/scrubfs with the following structure:
~/scrubfs/
├── Downloads/
├── Documents/
└── client/
To upload a clean file, choose ~/scrubfs inside any browser upload dialog or file manager instead of the source directory.
Stopping the daemon:
scrubfs stop
The source code is published on GitHub.