Read & write NTFS drives on macOS β from a clean menu-bar app.
by Pritish Maheta
macOS mounts NTFS (Windows-formatted) drives read-only. NTFStore adds full read-write support using a modern, kext-free stack (FUSE-T + ntfs-3g) and gives you a one-click menu-bar control for mounting, unmounting and ejecting.
No kernel extensions. No "Reduced Security". No reboots.
- β Read & write any NTFS drive
- π±οΈ Menu-bar app β mount / unmount / eject / open in Finder, per drive
- π§© Kext-free β built on FUSE-T (no kernel extension, no Recovery Mode)
- π No password prompts β a scoped
sudoNOPASSWD rule for the mount helper only - πͺ Robust β force-mounts dirty / hibernated (Windows fast-startup) volumes, wins the macOS FSKit auto-mount race, and auto-recovers a drive yanked without ejecting
- πͺΆ Light β a tiny Swift app + one shell helper; starts at login
- π§Ή Clean uninstall included
Menu:
NTFStore β Pritish Maheta
ββββββββββββββββββββββββββββββ
π’ Seagate Pritish β read-write βΈ Open in Finder
Unmount
Eject (safe to unplug)
ββββββββββββββββββββββββββββββ
Mount all read-write βM
Refresh βR
Quit NTFStore βQ
| NTFStore | Paid drivers (Paragon, Tuxeraβ¦) | Built-in macOS | |
|---|---|---|---|
| Price | Free & open source | Paid | Free |
| Write to NTFS | β | β | β read-only |
| Kernel extension | β none (FUSE-T) | often required | β |
| Reduced Security / reboot | β never | sometimes | β |
| Menu-bar mount / eject | β | varies | β |
| Handles dirty / hibernated drives | β
force |
varies | β |
| Auditable code | β ~210-line Swift app | β closed | β |
NTFStore is a thin, transparent wrapper around the battle-tested open-source ntfs-3g driver running on kext-free FUSE-T β no black boxes, no kernel code, no subscription.
- macOS 12+ (built and tested on macOS 26, Apple Silicon)
- Homebrew
- Xcode Command Line Tools (
xcode-select --install)
git clone <this-repo> NTFStore
cd NTFStore
./install.shThe installer will:
- Install FUSE-T and ntfs-3g via Homebrew
- Build the
libfuse.2.dylibshim so ntfs-3g uses FUSE-T - Install the privileged mount helper + a scoped
sudoNOPASSWD rule - Build & install NTFStore.app and set it to start at login
You'll be asked for your password once. The first mount may ask you to approve FUSE-T in System Settings β Privacy & Security.
- Plug in an NTFS drive.
- Click the π΄ NTFS icon in the menu bar.
- Hover your drive β Mount read-write.
- When done, Eject (safe to unplug) before pulling the cable.
./uninstall.sh # remove NTFStore
./uninstall.sh --all # also remove the FUSE-T & ntfs-3g Homebrew packagesRun the built-in doctor β it checks the whole stack and prints the fix for anything wrong:
./scripts/doctor.shEvery issue encountered building this (and its fix) is documented in
docs/TROUBLESHOOTING.md β symptom β cause β fix, plus a
full engineering findings log and a "full reset" procedure. You shouldn't have to
debug anything from scratch.
macOS 26's built-in FSKit driver mounts NTFS read-only. NTFStore mounts it
read-write with ntfs-3g running over FUSE-T (a userspace, NFS-based FUSE
implementation β no kernel extension). Because ntfs-3g was built for macFUSE, a
small version-patched, re-signed copy of FUSE-T's library is installed at
/usr/local/lib/libfuse.2.dylib so ntfs-3g loads FUSE-T instead.
Mounting must run as root (to open the raw device) and from your login session
(so the FUSE-T mount persists) β so the menu-bar app calls a root-owned helper via
a scoped passwordless sudo rule. See docs/ARCHITECTURE.md
for the full design and the hard-won macOS-26 lessons.
| Path | What |
|---|---|
/Applications/NTFStore.app |
The menu-bar app |
/usr/local/sbin/ntfs-mount-rw.sh |
Privileged one-shot mount helper |
/usr/local/lib/libfuse.2.dylib |
FUSE-T shim (version-patched) |
/etc/sudoers.d/ntfstore |
NOPASSWD rule for the helper (your user only) |
~/Library/LaunchAgents/com.ntfstore.app.plist |
Start at login |
Homebrew: fuse-t (cask), ntfs-3g-mac |
The engine |
/var/log/ntfstore.log |
Mount log |
- NTFS-via-ntfs-3g is reliable but not Apple-blessed β eject cleanly and keep backups.
- The
sudorule is scoped to the single mount-helper path and validates its argument. - Apple Silicon + macOS 26 is the tested target; other configs should work but are unverified.
MIT β see LICENSE. NTFStore bundles/uses FUSE-T and ntfs-3g, which carry their own licenses.