Written by Christian Ahmer | 11/13/2023

FAT and FAT32

The File Allocation Table (FAT) filesystem has been a cornerstone in the realm of digital storage, with its roots tracing back to the early days of personal computing. FAT16 and FAT32 are two iterations of this filesystem, each representing an evolutionary step in storage technology, catering to the needs of growing disk sizes and efficiency demands.

FAT16, introduced with IBM PC-DOS 3.0 in 1984, is an extension of the original 8-bit FAT system. The '16' signifies the 16-bit width of the entries in the file allocation table, which dictates the maximum number of clusters the filesystem can manage. This enhancement meant that FAT16 could support larger storage volumes than its predecessors, with a maximum partition size of 2 gigabytes when using the standard 32-kilobyte cluster size.

The structure of FAT16 is simple: at the beginning of the volume, there's a reserved section that contains the BIOS Parameter Block (BPB) and the boot code. Following this is the FAT itself, with two copies for redundancy. The FAT maps the clusters on the disk, indicating which clusters are used by files and which are free. After the FAT comes the root directory region, which has a fixed size and location, and contains entries for files and directories. The rest of the volume contains the data clusters, which store the actual file data.

FAT16's simplicity and wide compatibility made it a de facto standard for years, especially for DOS and Windows up to Windows 95. It was also popular in embedded systems and is still in use in some contexts today due to its straightforward implementation.

FAT32, introduced with Windows 95 OSR2 in 1996, was developed to overcome the limitations of FAT16. The '32' indicates a 32-bit wide FAT entry, allowing for a much larger number of clusters. This increased cluster management significantly reduced the cluster size on large volumes, enhancing storage efficiency by reducing slack space—the unused space within a cluster.

FAT32 supports disk partitions up to 8 terabytes in size, although Windows 2000/XP would only format up to 32 gigabytes by default as a way to encourage NTFS adoption for larger disks. Like FAT16, FAT32 also maintains two copies of the FAT for fault tolerance. The root directory in FAT32 is not fixed in a single location and can be located anywhere on the disk, allowing it to grow as needed, unlike the fixed size in FAT16.

Another improvement in FAT32 is the FSInfo sector, which keeps track of free space and the next free cluster, which speeds up free space allocation and reduces fragmentation. FAT32 also introduced a backup of the critical regions of the volume—such as the boot record and FSInfo sector—which could be used for recovery in case of corruption.

Despite these improvements, FAT32 still retains the simplicity and compatibility for which the FAT system is known. It remains widely compatible with a vast array of devices and operating systems beyond Windows, including macOS, Linux, and various game consoles, making it a filesystem of choice for removable storage media like USB flash drives and SD cards.

Both FAT16 and FAT32 lack the permissions and security features found in more modern filesystems like NTFS or ext4. They also lack journaling, which means they are more susceptible to corruption if the storage device is improperly disconnected or if there is a system crash.

Despite these drawbacks, the legacy of FAT16 and FAT32 endures, primarily due to their historical significance and widespread compatibility. They continue to serve a role in scenarios where complex features and security are less critical than straightforward access and broad interoperability.