File Allocation Table

The increase in disk drive capacity over time drove modifications to the design that resulted in versions: FAT12, FAT16, FAT32, and exFAT.

[3] Nevertheless, FAT continues to be commonly used on relatively small capacity solid-state storage technologies such as SD card, MultiMediaCard (MMC) and eMMC because of its compatibility and ease of implementation.

[9] FAT is still used in drives expected to be used by multiple operating systems, such as in shared Windows, Linux and DOS environments.

FAT is supported by portable devices such as PDAs, digital cameras, camcorders, media players, and mobile phones.

Tim Paterson of Seattle Computer Products (SCP) was first introduced to Microsoft's FAT structure when he helped Bob O'Rear adapting the Standalone Disk BASIC-86 emulator port onto SCP's S-100 bus 8086 CPU board prototype during a guest week at Microsoft in May 1979.

[16] The final product was shown at Lifeboat Associates' booth stand at the National Computer Conference in New York[16] on June 4–7, 1979, where Paterson learned about the more sophisticated FAT implementation in MDOS/MIDAS[14] and McDonald talked to him about the design of the file system.

All the control structures fit inside the first track, to avoid head movement during read and write operations.

The BIOS Parameter Block (BPB) was introduced with PC DOS 2.0 as well, and this version also added read-only, archive, volume label, and directory attribute bits for hierarchical sub-directories.

[24] MS-DOS 3.0 introduced support for high-density 1.2 MB 5.25-inch diskettes (media descriptor 0xF9), which notably had 15 sectors per track, hence more space for the FATs.

The benefit of FAT16 was the use of smaller clusters, making disk usage more efficient, particularly for large numbers of files only a few hundred bytes in size.

[citation needed] Therefore, even if default issues of MS-DOS and PC DOS were not able to cope with them, most of these vendor-specific FAT12 and FAT16 variants can be mounted by more flexible file system implementations in operating systems such as DR-DOS, simply by changing the partition ID to one of the recognized types.

Although the on-disk changes were minor, the entire DOS disk driver had to be converted to use 32-bit sector numbers, a task complicated by the fact that it was written in 16-bit assembly language.

In practice however, type 0x01 and 0x04 primary partitions should not be physically located outside the first 32 MB of the disk, due to other restrictions in MS-DOS 2.x, which could not cope with them otherwise.

The limit on partition size was dictated by the 8-bit signed count of sectors per cluster, which originally had a maximum power-of-two value of 64.

Windows 98, SE and ME also supported reading and writing this variant, but its disk utilities did not work with it and some FCB services are not available for such volumes.

[36] In order to overcome the volume size limit of FAT16, while at the same time allowing DOS real-mode code to handle the format, Microsoft designed a new version of the file system, FAT32, which supported an increased number of possible clusters, but could reuse most of the existing code, so that the conventional memory footprint was increased by less than 5 KB under DOS.

In August 2024, Microsoft released an update to Windows 11 preview builds that allows for the creation of FAT32 partitions up to 2TB in size.

This limit is a consequence of the 4-byte file length entry in the directory table and would also affect relatively huge FAT16 partitions enabled by a sufficient sector size.

[50][48][49] OS/2 heavily depends on extended attributes (EAs) and stores them in a hidden file called "EA␠DATA.␠SF" in the root directory of the FAT12 or FAT16 volume.

[51] In the FAT32 format, these bytes hold the upper 16 bits of the starting cluster number of the file or directory, hence making it impossible to store OS/2 EAs on FAT32 using this method.

)[33] Extended attributes are accessible via the Workplace Shell desktop, through REXX scripts, and many system GUI and command-line utilities (such as 4OS2).

For backward and forward compatibility, LFNs were implemented as an optional extension on top of the existing FAT file system structures using a workaround in the way directory entries are laid out.

For some time, a UVFAT driver was available to provide combined support for UMSDOS-style permissions with VFAT long filenames.

Human68K supported up to 18.3 filenames and (Shift JIS) Kanji characters in a proprietary FAT file system variant.

Such methods either store the additional information in extra files and directories (classic Mac OS and macOS), or give new semantics to previously unused fields of the FAT on-disk data structures (OS/2 and Windows NT).

[56] For some time, Linux also provided combined support for UMSDOS-style permissions and VFAT long filenames through UVFAT.

FATX is a family of file systems designed for Microsoft's Xbox video game console hard disk drives and memory cards,[58][59] introduced in 2001.

The non-bootable superblock sector is 4 KB in size and holds an 18 byte large BPB-like structure completely different from normal BPBs.

[69] To this end, Microsoft cited four patents on the FAT file system as the basis of its intellectual property claims.

However, in 2006, the USPTO ruled that features of Microsoft's implementation of the FAT system were "novel and non-obvious", reversing both earlier decisions and leaving the patents valid.