FAT16 -> FAT32

    FAT16 [R.I.P.! :-)] is the most used File Allocation Table (FAT) 16-bit standard on "Wintel" PCs, recognized by all MS-DOS releases beginning with 4.00 (released back in 1991), and by all MS Windows versions.
    MS-DOS releases older than 4.00 used to operate with the obsolete FAT12 standard, discontinued, but still in use by the ol' floppy disk(ette) standard. :(
    FAT12 is [was :)] able to handle disk partitions only up to 16 MB using 4 KB clusters.

    FYI: Officially Microsoft implemented FAT16 only begining with MS-DOS 4.00 (through extended partitions larger than 32 MB), but unofficially FAT16 was already implemented in MS-DOS 3.3. FDISK.EXE supports extended partitions (the only way to take advantage of FAT16 at the time) begining with MS-DOS 3.3 (up to a total of 128 MB), but FORMAT.COM supports partitions larger than 32 MB only begining with MS-DOS 4.00. MS-DOS 3.3 FORMAT.COM supported partitions only up to 16 MB (FAT12), even if FAT16 was already available. :(
    Further reading: "Upgrading and Repairing PCs" book by Scott Mueller, second edition, page 653.
    [Thank you Mr. Nobby!]

    FAT16 limitations:

    • maximum partition size = 2 GigaBytes (GB) = 2,048 MegaBytes (MB);
    • maximum number of root directory file entries allowed = 512 (same as FAT12);
    • (too) large cluster size, which wastes a lot of disk space, by allocating at least 1 cluster to each file on disk, even if a file is at least 1 byte in length.
      Note that 0 byte files (same as directories/folders) do NOT take ANY disk space, but each directory entry (32 Bytes on FAT32) occupies a separate FAT entry. Moreover, Long File Names (LFNs) files and folders occupy an additional LFN FAT entry.
      Another example: a 33 KB file has 2 clusters assigned on a disk partition with 32 KB clusters, thus wasting 31 KB, because the same cluster canNOT be shared among separate files or folders:

    Partition size  FAT16 Cluster size 
       0 -  127 MB  2 KB =  2048 B
     128 -  255 MB  4 KB =  4096 B
     256 -  511 MB  8 KB =  8192 B
     512 - 1023 MB 16 KB = 16384 B
    1024 - 2047 MB 32 KB = 32768 B

    In 1996 Microsoft introduced a new File Allocation Table standard called FAT32 (32-bit), which extends these limits:

    • FAT32 (first version) released beginning with MS Windows 95B OSR 2.0, supports partitions up to 2 TeraBytes (TB) = 2,048 GB = 2,097,152 MB (theoretical + new practical limit);
    • FAT32X (second version) released beginning with MS Windows 95C OSR 2.5 (1997), features eXtended support for hard drives larger than 8 GB (with more than 1023 cylinders, 255 heads and 63 sectors), using the BIOS interrupt 13 (INT13h) LBA (Logical Block Addressing) extension (on Pentium class and newer chipsets that support this BIOS feature), for a total of 28 bits of addressing a maximum of 137 GB of hard disk capacity (old practical limit).
      Newer PC mainboards add eXtended support for drives larger than 137 GB, using the new BIOS interrupt 13 (INT13h) LBA (Logical Block Addressing) extension (on Pentium III/IV class and newer chipsets that support this BIOS feature), for a total of 48 bits of addressing a maximum of 2 TB of hard disk capacity (new practical limit);
    • supports unlimited number of root directory file entries;
    • smaller, more efficient cluster size, without noticeable performance degradation:

    Partition size FAT32/FAT32X Cluster size 
        0 -   259 MB            512 B [*]
      260 -   511 MB  1 KB =  1024 B [*]
      512 -  8191 MB  4 KB =  4096 B
     8192 - 16383 MB  8 KB =  8192 B
    16384 - 32767 MB 16 KB = 16384 B
    32768 MB -  2 TB 32 KB = 32768 B

    [*] = ONLY if using FORMAT drive: /Z:n!

    Therefore FAT32 wastes a lot less disk space, preserving speedy disk access at the same time.
    More info @ MSKB.

    NOTE: You MUST be using Windows 95B/95C OSR 2.0 - 2.5, 98/98 SE(U) [a.k.a. MS-DOS 7.10], ME [a.k.a. MS-DOS 8.00], 2000, XP or 2003 [no MS-DOS here :)] to take advantage of FAT32!

    PROs + CONs:

    • Larger cluster size means faster disk access, but more disk overhead (wasted clusters), and less space for stored files, opposite to:
    • Smaller cluster size means slower disk access, but less disk overhead (wasted clusters), and more space for stored files.
      FYI: The performance hit for using FAT32(X) depends on the speed of your CPU, CPU-to-PCI/SATA + PCI-to-SCSI bus bandwidth, disk controller capabilities and hard disk subsystem transfer rates + access times.

    See also this FAT16/FAT32 versus NTFS/NTFS5 comparison.

    Microsoft announced WinFS (Windows Future Storage), a new secure FAT layer (NOT system!) operating on top of NTFS5 (New Technology File System version 5), capable of holding entire databases (instead of directories), which will be part of the upcoming Windows 2005 (code name "Longhorn") OS, successor to Windows XP.
    WinFS Windows Media Player (WMP) Presentation.
    More info.


    1. Microsoft acknowledged in this MSKB article that Windows 95 retail, 95a OSR1 + 95B/95C OSR 2.x do NOT support disk drives larger than 32 GB. :(
    2. Windows 98 retail, 98 SP1 + 98 SE(U) provide built-in support for media drives > 32 GB, but ONLY IF you install the fixed ESDI_506.PDR [U.S. English patch] that allows ScanDskw.exe to properly recognize (E)IDE/(Ultra)ATA hard disk clusters beyond cluster number 967,393. More info.
    3. The ONLY Microsoft Operating Systems that natively support drives larger than 32 GB (to date) are Windows NT 4.0, 2000, ME, XP + 2003.
    4. Make sure your motherboard BIOS supports hard disks larger than 137 GB (48-bit LBA function). Always "flash" your BIOS using the current BIOS update from your mainboard vendor's web/ftp site.

    FAT16, FAT32/FAT32X, NTFS + BIOS limits techno details + specs: