Best format for shared USB drives and SD cards

EXFAT is a convenient format for sharing files between MacOS / Linux / Windows / Android. However, ExFAT does not support symbolic / soft links. Operating systems have supported EXFAT for many years, since:

  • Windows: XP
  • MacOS: 10.6.3
  • Linux: CentOS 5, Ubuntu 10.04, etc.
  • Android: 4

Exceptions

Use FAT32 instead of EXFAT for:

  • Test equipment (e.g. Agilent)
  • some older USB drive accepting printers (print direct from USB stick)

Other file systems

These file systems are commonly, but not universally supported across OS’s.

NTFS

  • MacOS (including MacOS 10.15 Catalina): NTFS is read-only by default.
  • Android needs additional third-party software for NTFS

FAT32

FAT32 is readable by Windows / MacOS / Linux / Android, but is limited to 4 GB file size. With many USB HDDs over 2 TB, you would have to break up your HDD into multiple partitions for FAT32 – quite inconvenient. You could use FAT32 for a small USB flash drive.

Note: For old printers “USB Direct Print” it may be that only single partition FAT32 is supported. Keep a small USB drive formatted to FAT32 for this purpose.

Summary

ExFAT is generally the best choice for universal support on USB HDD. For USB flash thumb drives and SD cards, I format most to ExFAT. Keep a small flash drive formatted to FAT32 for the USB port on old USB direct print printers.

Notes

Linux FUSE

For Linux kernels older than 5.4, or for arches where the Linux distro didn’t include ExFAT in the kernel, you may need to use FUSE ExFAT support:

apt install exfat-utils

As always there are performance penalties with FUSE. It is possible to switch from FUSE to kernel ExFAT.