Get help using our products.

When is FAT16 not FAT16?

If you create a partition in iPartition and tell it to format it using the FAT filesystem, it will automatically determine whether to format it using FAT16 or FAT32. You might think that it will do this on the basis of the partition type code (some of which indicate FAT16 or FAT32 respectively), but in fact the type of FAT depends solely on the number of clusters in the filesystem. Moreover, iPartition, when it sees you trying to format a FAT partition with a type code that is wrong, will fix the type code for you.

To quote from Microsoft’s FAT specification:

This is the one and only way that FAT type is determined. There is no such thing as a FAT12 volume that has more than 4084 clusters. There is no such thing as a FAT16 volume that has less than 4085 clusters or more than 65,524 clusters. There is no such thing as a FAT32 volume that has less than 65,525 clusters. If you try to make a FAT volume that violates this rule, Microsoft operating systems will not handle them correctly because they will think the volume has a different type of FAT than what you think it does.

This is, to most people, quite surprising, but it is how the FAT filesystem works.

Furthermore, Microsoft goes on to observe that “the world is full of FAT code that is wrong”, and recommends that volumes that have cluster counts within 16 of these values are avoided. Again, iPartition will do this automatically for you.

Thus, if you specifically want FAT16, you must specify a volume with strictly less than than 65,509 clusters. You can do this by looking at the size of the partition you have created and dividing it by the cluster sizes shown in the format box until you get a number between 4,085 and 65,508 (inclusive). The supported cluster sizes are 32KB (64 blocks), 16KB (32 blocks), 8KB (16 blocks), 4KB (8 blocks), 2KB (4 blocks), 1KB (2 blocks) and 512 bytes (1 block).

Likewise, if you specifically want FAT32, you must specify your volume with 65,541 or more clusters.

Finally, you might have seen other software that allows a 64KB cluster size. We don’t do that because, to quote from Microsoft’s specification again:

… Note however, that a value should never be used that results in a “bytes per cluster” value… greater than 32KB… There is a misconception that values greater than this are OK. Values that cause a clusters size greater than 32K bytes do not work properly; do not try to define one.

TL;DR: The type of FAT you get is based solely on the number of clusters in the filesystem, which you can control using the Cluster Size option in the Format sheet.

Posted by alastair at 2015-Aug-03 12:08:56 UTC. Last updated 2015-Aug-03 14:08:15 UTC.