File Allocation Table: Difference between revisions

Content deleted Content added
FAT32: GiB with space
 
Line 1:
{{Short description|File system used by MS-DOS and Windows 9x}}
<!-- note: this is meant to look as similar as possible to [[template:infobox filesystem]] whilst covering all 3 file systems please make any style changes to both at the same time. -->
{{further|Design of the FAT file system}}
{| class="infobox bordered" style="width:32em; font-size: 88%; line-height: 1.5em; text-align: left;" cellspacing="5"
|-
|colspan="4" style="text-align:center; font-size: 125%; font-weight: bold; background:#0A0"| FAT
|-
! [[Software developer|Developer]]
|colspan="3" style="text-align:center"| [[Microsoft]]
|-
!rowspan="2"| Full Name
|colspan="3" style="text-align:center"| File Allocation Table
|-
| (12-bit version) || (16-bit version) || (32-bit version)
|- style="vertical-align:top"
! Introduced
| 1980 ([[86-DOS|Seattle QDOS]]) || November 1987, ([[Compaq]] DOS 3.31) || August 1996 ([[Windows 95]] OSR2)
|-
! [[Partition (computing)|Partition identifier]]
| 0x01 ([[Master boot record|MBR]]) || 0x04, 0x06, 0x0E ([[Master boot record|MBR]]) || 0x0B, 0x0C ([[Master boot record|MBR]]) <br> <small>EBD0A0A2-B9E5-4433<br>-87C0-68B6B72699C7</small> ([[GUID Partition Table|GPT]])
|- bgcolor="lightgreen"
!colspan="4" style="text-align:center"| Structures
|-
! Directory contents
|colspan="3" style="text-align:center"| Table
|-
! File allocation
|colspan="3" style="text-align:center"| [[Linked List]]
|-
! Bad blocks
|colspan="3" style="text-align:center"| Cluster tagging
|- bgcolor="lightgreen"
!colspan="4" style="text-align:center"| Limits
|- style="vertical-align:top"
! Max file size
|colspan="3" style="text-align:center"| 4 [[Gigabyte|GB]] minus 1 byte (or volume size if smaller)
|-
! Max [[cluster (file system)|cluster]] count
| 4,077 (2<sup>12</sup>-19) || 65,517 (2<sup>16</sup>-19) || 268,435,437 (2<sup>28</sup>-19)
|-
! Max filename size
|colspan="3" style="text-align:center"| [[8.3 filename]], or 255 UTF-16 characters when using [[Long filename|LFN]]
|-
! Max volume size
| 32 [[Megabyte|MB]] || 2 [[Gigabyte|GB]]<br><small>4 [[Gigabyte|GB]] with 64k clusters (not widely supported)</small> || 2 [[Terabyte|TB]]<br><small>8 [[Terabyte|TB]] (2-KB sector)
|- bgcolor="lightgreen"
!colspan="4" style="text-align:center"| Features
|-
! [[File timestamp|Dates recorded]]
|colspan="3" style="text-align:center"| Creation, modified, access (accuracy to day only)<br><small>(Creation time and access date are only available when LFN support is enabled)</small>
|-
! Date range
|colspan="3" style="text-align:center"| [[January 1]], [[1980]] - [[December 31]], [[2107]]
|-
! [[Fork (filesystem)|Forks]]
|colspan="3" style="text-align:center"| [[#FAT and Alternate Data Streams|Not natively]]
|-
! Attributes
|colspan="3" style="text-align:center"| Read-only, hidden, system, volume label, subdirectory, [[archive bit|archive]]
|-
! [[File system permissions|Permissions]]
|colspan="3" style="text-align:center"| No
|-
! Transparent compression
|colspan="2" style="text-align:center"| Per-volume, [[Stac Electronics|Stacker]], [[DoubleSpace]], [[DriveSpace]] || No <!--check this one: i know dr-dos supports fat32 so this could be wrong [[User:Plugwash|Plugwash]] 20:20, 8 September 2005 (UTC)-->
|-
! Transparent encryption
|colspan="2" style="text-align:center"| Per-volume only with [[DR-DOS]] || No <!-- check this one: i know dr-dos supports fat32 so this looks wrong [[User:Plugwash|Plugwash]] 20:01, 8 September 2005 (UTC) -->
|}
 
{{Use mdy dates|date=April 2016|cs1-dates=y}}
'''File Allocation Table''' or '''FAT''' is a computer [[file system]] architecture originally purchased by [[Bill Gates]] and then developed by Bill Gates and [[Marc McDonald]] during 1976–1977.<ref name=MSJsept1989>[http://cd.textfiles.com/megademo2/INFO/OS2_HPFS.TXT Microsoft Systems Journal Sept 1989 v4 n5 p1(13)]</ref><ref name=fathist>[http://web.archive.org/web/*/www.microsoft.com/mscorp/ip/tech/fathist.asp www.microsoft.com/mscorp/ip/tech/fathist.asp] (archive.org)</ref> It is the primary file system for various [[operating systems]] including [[DR-DOS]], [[OpenDOS]],
{{Use American English|date=July 2018}}
[[FreeDOS]], [[MS-DOS]], [[OS/2]] (v1.1) and [[Microsoft Windows]] (up to [[Windows Me]]). For [[floppy disk]]s (FAT12 and FAT16 without [[long filename]] support) it has been standardized as [[Ecma International|ECMA]]-107<ref name="Ecma-107"> [http://www.ecma-international.org/publications/standards/Ecma-107.htm standards - Ecma-107]</ref> and [[International Organization for Standardization|ISO]]/[[International Electrotechnical Commission|IEC]] 9293.<ref>[http://www.iso.org/iso/iso_catalogue/catalogue_ics/catalogue_detail_ics.htm?csnumber=16948 standards - ISO 9293:1987]</ref><ref>[http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=21273 standards - ISO/IEC 9293:1994]</ref> The use of [[long filename]]s with FAT is [[patent]]ed in part.
{{Anchor|FASTFAT}}<!-- for parked anchors -->
{{Infobox file system
| name = FAT
| image =
| developer = [[Microsoft]]<!-- original FAT, FAT16, FAT32 -->, [[NCR Corporation|NCR]], [[Seattle Computer Products|SCP]]<!-- FAT12 -->, [[IBM]], [[Compaq]]<!-- Compaq MS-DOS 3.31-->, [[Digital Research]]<!-- lots of extensions -->, [[Novell]]<!-- lots of extensions continuing the DRI line of products -->, [[Caldera (company)|Caldera]]
| full_name = File Allocation Table
| variants = 8-bit FAT, [[#FAT12|FAT12]], [[#FAT16|FAT16]], [[#FAT16B|FAT16B]], [[#FAT32|FAT32]], [[exFAT]], [[#FATX|FATX]], [[#FAT+|FAT+]]
| introduction_date = {{Start date|1977}}
| introduction_os = [[Standalone Disk BASIC-80]]
| partition_id = [[Master Boot Record|MBR]]/[[Extended Boot Record|EBR]]:{{ubli
| FAT12:&nbsp;<code>{{abbr|0x|Values in C-notation for hexadecimal numbers}}[[Partition type#PID_01h|01]]</code> e.a. (Extended Attribute)
| FAT16:&nbsp;<code>{{abbr|0x|Values in C-notation for hexadecimal numbers}}[[Partition type#PID_04h|04]]</code><code>[[Partition type#PID_06h|0x06]]</code><code>[[Partition type#PID 0Eh|0x0E]]</code> e.a.
| FAT32:&nbsp;<code>{{abbr|0x|Values in C-notation for hexadecimal numbers<span id="FAT32X"></span>}}[[Partition type#PID_0Bh|0B]]</code><code>[[Partition type#PID_0Ch|0x0C]]</code> e.a.
| [[Basic data partition|BDP]]: <code>EBD0A0A2-B9E5-4433-87C0-68B6B72699C7</code>
}}
| directory_struct = Table
| file_struct = [[Linked list]]
| bad_blocks_struct = Cluster tagging
| max_file_size = 4,294,967,295 bytes (4&nbsp;[[gigabyte|GB]] − 1)<!-- 2^32 − 1 --> with FAT16B and FAT32<ref name="GB4" />
| max_files_no = {{ubli
| FAT12: 4,068 for 8&nbsp;[[kilobyte|KB]] clusters <!-- 2^12 − 12 (reserved clusters) − 16 (number of 8&nbsp;KB clusters for directory entries) -->
| FAT16: 65,460 for 32&nbsp;KB clusters <!-- 2^16 − 12 (reserved clusters) − 64 (number of 32&nbsp;KB clusters for directory entries) -->
| FAT32: 268,173,300 for 32&nbsp;KB clusters <!-- 2^28 − 12 (reserved clusters) − 262144 (number of 32&nbsp;KB clusters for directory entries) -->
}}
| max_filename_size = [[8.3 filename]], or 255 [[UCS-2]] characters when using [[Long filename|LFN]]<ref group="nb" name="NB_LFN_UNI">Since [[Windows 2000]], Microsoft Windows uses [[UTF-16]] instead of [[UCS-2]] for the [[Unicode in Microsoft Windows|internal "Unicode"]]. In UTF-16, a "character" (code point) may take up two code units.</ref>
| max_volume_size = {{ubli
| FAT12: 32&nbsp;[[megabyte|MB]]<!-- with 2^16 sectors á 512 bytes, or with 8&nbsp;KB clusters --> (256&nbsp;MB for 64&nbsp;KB clusters<!-- and EBPB -->)
| FAT16: 2&nbsp;GB (4&nbsp;GB for 64&nbsp;KB clusters)
| FAT32: 2&nbsp;[[terabyte|TB]] (16&nbsp;TB for [[4Kn|4 KB sectors]])
}}
| dates_recorded = {{ubli
| Modified date/time, creation date/time (DOS&nbsp;7.0 and higher only),
| access date (only available with [[ACCDATE (CONFIG.SYS directive)|ACCDATE]] enabled),<ref name="Microsoft_2006_ACCDATE" />
| deletion date/time (only with DELWATCH 2<!-- with Novell DOS 7, Caldera OpenDOS 7.01, DR-DOS 7.02 and higher -->)
}}
| date_range = [[Epoch of 1980-01-01|1980-01-01]] to [[Year 2100 problem|2099-12-31]] ([[Year 2108 problem|2107-12-31]])
| date_resolution = {{ubli
| 2&nbsp;seconds for last modified time,
| 2&nbsp;seconds for creation time,
| 1&nbsp;day for access date,
| 2&nbsp;seconds for deletion time
}}
| forks_streams = Not natively
| attributes = [[FAT file attributes|Read-only, hidden, system, volume, directory, archive]]
| file_system_permissions = {{ubli
| FAT12/FAT16: File, directory and volume access rights for [[FAT file access rights|read]], [[FAT file access rights|write]], [[FAT file access rights|execute]], [[FAT file access rights|delete]] only with [[DR-DOS]], [[PalmDOS]], [[Novell DOS]], [[OpenDOS]], [[FlexOS]], [[IBM 4680 OS|4680&nbsp;OS]], [[IBM 4690 OS|4690&nbsp;OS]], [[Concurrent DOS]], [[Multiuser DOS]], [[Datapac System Manager|System Manager]], [[REAL/32]]: {{ubli
| execute with only FlexOS, 4680&nbsp;OS, 4690&nbsp;OS;
| individual file / directory passwords not with FlexOS, 4680&nbsp;OS, 4690&nbsp;OS;<!-- at least I could not find any user or programmer's documentation for it so far -->
| [[FAT file access rights|world/group/owner]] permission classes only with multiuser security loaded
}}
| FAT32: Partial, only with DR-DOS, REAL/32 and 4690 OS<!-- version 2 and higher -->
}}
| compression = {{ubli
| FAT12/FAT16: Per-volume, [[SuperStor]], [[Stacker (disk compression)|Stacker]], [[DoubleSpace]], [[DriveSpace]]
| FAT32: No
}}
| encryption = {{ubli
| FAT12/FAT16: Per-volume only with [[DR-DOS]]
| FAT32: No
}}
| data_deduplication =
| copy_on_write =
| OS =
}}
 
'''File Allocation Table''' ('''FAT''') is a [[file system]] developed for personal computers and was the default file system for the [[MS-DOS]] and [[Windows 9x]] operating systems.<ref>{{Cite web |title=File Allocation Table (FAT): What It Is, Types, Versions, Advantages & Disadvantages |url=https://www.includehelp.com/operating-systems/file-allocation-table-fat.aspx |access-date=2025-06-01 |website=www.includehelp.com}}</ref> Originally developed in 1977 for use on [[floppy disk]]s, it was adapted for use on [[Hard disk drive|hard disks]] and other devices. The increase in disk drive capacity over time drove modifications to the design that resulted in versions: [[#FAT12|FAT12]], [[#FAT16|FAT16]], [[#FAT32|FAT32]], and [[exFAT]]. FAT was replaced with [[NTFS]] as the default file system on Microsoft operating systems starting with [[Windows XP]].<ref>{{cite web |url=https://windows.microsoft.com/en-us/windows-vista/comparing-ntfs-and-fat-file-systems |title=Comparing NTFS and FAT file systems |publisher=Microsoft |access-date=2014-01-27 |archive-date=2016-06-20 |archive-url=https://web.archive.org/web/20160620004455/http://windows.microsoft.com/en-US/windows-vista/Comparing-NTFS-and-FAT-file-systems |url-status=live }}</ref> 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.<ref>{{Cite web |title=A brief introduction to FAT (File Allocation Table) formats |url=http://www.wizcode.com/articles/comments/a-brief-introduction-to-fat-file-allocation-table/ |url-status=dead |archive-url=https://web.archive.org/web/20150925082826/http://www.wizcode.com/articles/comments/a-brief-introduction-to-fat-file-allocation-table/ |archive-date=September 25, 2015 |access-date=2015-09-24 |website=www.wizcode.com |df=mdy-all}}</ref>
The FAT file system is relatively straightforward and is supported by virtually all existing [[operating system]]s for [[personal computer]]s. This makes it an ideal format for [[solid-state drive|solid-state]] [[memory card]]s and a convenient way to share data between [[operating system]]s.
 
== Uses ==
Common implementations have a serious drawback in that when files are deleted and new files written to the media, directory [[Fragmentation (computer)|fragments]] tend to become scattered over the entire disk, making reading and writing slower on storage devices which have higher seek time for random data access (Such as mechanical hard drives). Manually-invoked periodic [[defragmentation]] is one solution to this problem, but is often a lengthy process, and unwise in some instances.
<span id="ECMA"></span><span id="ISO"></span>
 
=== Historical ===
Defragmentation is not required for solid-state memory cards, because there is no penalty associated with seeking from one ___location on the disk to another. Furthermore, because flash devices have a significantly limited number of lifetime writes (compared with magnetic storage media), these devices should not be defragmented.
FAT was used on [[hard disk drive|hard disks]] throughout the [[DOS]] and [[Windows 9x]] eras. Microsoft introduced [[NTFS]] with the [[Windows NT]] platform in 1993, but FAT remained the standard for the home user until the introduction of [[Windows XP]] in 2001. [[Windows Me]] was the final version of [[Microsoft Windows|Windows]] to use FAT as its default file system.
__TOC__
 
For floppy disks, FAT has been standardized as [[Ecma International|ECMA]]-107<ref name="Ecma-107" /> and [[International Organization for Standardization|ISO]]/[[International Electrotechnical Commission|IEC]]&nbsp;9293:1994<ref name="ISO_9293_1994" /> (superseding ISO&nbsp;9293:1987<ref name="ISO_9293_1987" />). These standards cover FAT12 and FAT16 with only short [[8.3 filename]] support; [[long filename]]s with [[#VFAT|VFAT]] were partially [[#Patents|patent]]ed.<ref name="Patent_5758352" /> While [[#FAT12|FAT12]] is used on floppy disks, [[#FAT16|FAT16]] and [[#FAT32|FAT32]] are typically found on the larger media.
== History ==
The FAT file system was created for managing disks in [[Microsoft BASIC|Microsoft Standalone Disk BASIC]]. In August 1980 [[Tim Paterson]] incorporated FAT into his [[86-DOS]] operating system for the [[S-100 bus|S-100]] 8086 CPU boards;<ref name="dgaiotnhpfs">{{cite web | url=http://cd.textfiles.com/megademo2/INFO/OS2_HPFS.TXT | title=Design goals and implementation of the new High Performance File System | author=Duncan, Ray | year=1989 | publisher=Microsoft Systems Journal | volume=4 | issue=5 }} [Note: This particular text file has a number of 'scan' errors; e.g., "Ray" is the author's correct name; not 'Roy' as text shows.]</ref> the file system was the main difference between 86-DOS and its predecessor, [[CP/M]].
 
=== Modern ===
The name originates from the usage of a table which centralizes the information about which areas belong to files, are free or possibly unusable, and where each file is stored on the disk. To limit the size of the table, disk space is allocated to files in contiguous groups of [[Disk sector|hardware sectors]] called ''[[Cluster (file system)|cluster]]s''. As disk drives have evolved, the maximum number of clusters has dramatically increased, and so the number of bits to identify a cluster has grown. The successive major versions of the FAT format are named after the number of table element bits: 12, 16, and 32. The FAT standard has also been expanded in other ways while preserving backward compatibility with existing software.
FAT is used internally for the [[EFI system partition]] in the boot stage of [[Extensible Firmware Interface|EFI]]-compliant computers.<ref name="efi" />
 
FAT is still used in drives expected to be used by multiple operating systems, such as in shared Windows and [[Linux]] environments. Microsoft Windows additionally comes with a pre-installed tool to convert a FAT file system into NTFS directly without the need to rewrite all files, though this cannot be reversed easily.<ref>{{cite web |date=11 July 2021 |title=How to Convert a Drive from FAT32 to NTFS without Data Loss |url=https://windowsloop.com/how-to-convert-a-drive-from-fat32-to-ntfs-without-data-loss/ |url-status=live |archive-url=https://web.archive.org/web/20210808233345/https://windowsloop.com/how-to-convert-a-drive-from-fat32-to-ntfs-without-data-loss/ |archive-date=2021-08-08 |access-date=8 August 2021 |website=WindowsLoop |language=en-us}}</ref> The FAT file system is used in removable media such as [[floppy disk]]s, [[superfloppy|super-floppies]], [[memory card|memory]] and [[flash memory]] cards or [[USB flash drives]]. FAT is supported by portable devices such as [[Personal digital assistant|PDA]]s, [[digital camera]]s, [[camcorder]]s, [[Portable media player|media player]]s, and mobile phones.{{cn|date=September 2024}}
=== FAT12 ===
The initial version of FAT is now referred to as '''FAT12'''. Designed as a file system for floppy diskettes, it limited cluster addresses to 12-bit values, which not only limited the cluster count to 4078,<ref> {{cite book
| author=Brian Jenkinson, Sammes, A. J.
| title=Forensic Computing: A Practitioner's Guide (Practitioner Series)
| publisher=Springer
| ___location=Berlin
| year=2000
| pages=157
| isbn=1-85233-299-9
| quote=...only 2^12 (that is, 4096) allocation units or clusters can be addressed. In fact, the number is less than this, since 000h and 001h are not used and FF0h to FFFh are reserved or used for other purposes, leaving 002h to FEFh (2 to 4079) as the range of possible clusters.
}} </ref> but made FAT manipulation tricky with the PC's 8-bit and 16-bit registers. (Under Linux, FAT12 is limited to 4084 clusters.<ref> {{cite web
| url=http://www.win.tue.nl/~aeb/linux/fs/fat/fat-2.html
| title=FAT Under Linux
| author=Andries Brouwer
}} Linux source code related to DOS often contains: <code>#define MSDOS_FAT12 4084</code> (see line 76 of {{cite web
| url=http://www.kernel-api.org/docs/online/2.2.26/dc/dd8/msdos__fs_8h-source.html
| title=KernelAPI: msdos_fs.h
}}).</ref>) The disk's size is stored as a 16-bit count of [[Cylinder-head-sector|sector]]s, which limited the size to 32 [[Megabyte|MB]]<ref name=prefix>File allocation is specified using [[binary prefix|binary meanings]] for K (1024<sup>1</sup> instead of 1000<sup>1</sup>), M (1024<sup>2</sup> instead of 1000<sup>2</sup>), G (1024<sup>3</sup> instead of 1000<sup>3</sup>), ... </ref>. FAT12 was used by several manufacturers with different physical formats, but a typical floppy diskette at the time was 5.25-inch, single-sided, 40 [[Cylinder-head-sector|track]]s, with 8 sectors per track, resulting in a capacity of 160 [[KB]] for both the system areas and files. The FAT12 limitations exceeded this capacity by a factor of ten or more.
 
The [[Design rule for Camera File system|DCF]] file system adopted by almost all [[digital camera]]s since 1998 defines a logical file system with [[8.3 filename]]s and makes the use of either FAT12, FAT16, FAT32 or exFAT mandatory for its physical layer for compatibility.<ref name="DC-009-2010" />
By convention, all the control structures were organized to fit inside the first track, thus avoiding head movement during read and write operations, although this varied depending on the manufacturer and physical format of the disk. At the time FAT12 was introduced, DOS did not support hierarchical directories, and the maximum number of files was typically limited to a few dozen. Hierarchical directories were introduced in [[MS-DOS]] version 2.0.<ref>{{cite web
| url=http://www.nukesoft.co.uk/msdos/dosversions.shtml | title=MS-DOS History}}</ref>
 
== Technical details ==
A limitation which was not addressed until much later was that any bad sector in the control structures area, track 0, could prevent the diskette from being usable. The DOS formatting tool rejected such diskettes completely. Bad sectors were allowed only in the file area, where they made the entire holding cluster unusable as well. FAT12 remains in use on 1.44[[Megabyte|MB]] floppy disks.
<span id="Technical design"></span><!-- N.B.: Parked formerly used anchors here to maintain link integrity for as long as not all incoming links have been fixed up to point to [[Design of the FAT file system]] instead. -->
{{anchor|Layout|RSVD_SECTORS|DATA_AREA}}
{{anchor|Boot Sector|Bootsector|BSIBM_OFS_000h|BSIBM_OFS_003h|BSIBM_OFS_1FDh|BSIBM_OFS_1FEh|BSST_OFS_000h|BSST_OFS_002h|BSST_OFS_008h|BSST_OFS_1FEh}}
{{anchor|BSMSX_OFS_000h|BSMSX_OFS_003h|BSMSX_OFS_01Eh|BSMSX_OFS_020h|BSMSX_OFS_026h|BSMSX_OFS_027h|BSMSX_OFS_02Bh|BSMSX_OFS_030h|BSMSX_OFS_1FEh}}
{{anchor|BIOS Parameter Block|BPB|BPB20|BPB20_OFS_00h|BPB20_OFS_02h|BPB20_OFS_03h|BPB20_OFS_05h|BPB20_OFS_06h|BPB20_OFS_08h|BPB20_OFS_0Ah}}
{{anchor|media|BPB20_OFS_0Bh|BPB30|BPB30_OFS_0Dh|BPB30_OFS_0Fh|BPB30_OFS_11h|BPB32|BPB32_OFS_13h|BPB331|BPB331_OFS_0Dh}}
{{anchor|BPB331_OFS_0Fh|BPB331_OFS_11h|BPB331_OFS_15h}}
{{anchor|Extended BIOS Parameter Block|EBPB|EBPB_OFS_19h|EBPB_OFS_1Ah|EBPB_OFS_1Bh|EBPB_OFS_1Ch|EBPB_OFS_20h|EBPB_OFS_2Bh}}
{{anchor|FAT32 Extended BIOS Parameter Block|EBPB32|EBPB32_OFS_19h|EBPB32_OFS_1Dh|EBPB32_OFS_1Fh|EBPB32_OFS_21h|EBPB32_OFS_25h|EBPB32_OFS_27h|EBPB32_OFS_29h|EBPB32_OFS_35h}}
{{anchor|EBPB32_OFS_36h|EBPB32_OFS_37h|EBPB32_OFS_38h|EBPB32_OFS_3Ch|EBPB32_OFS_47h}}
{{anchor|Exceptions|FATID|FS Information Sector|File Allocation Table|CLUST_0|CLUST_1|BAD_CLUST|FAT_EOC}}
{{anchor|Directory table|DIR|Directory entry|DIR_OFS_00h|DIR_OFS_08h|DIR_OFS_0Bh|attributes|DIR_OFS_0Ch|DIR_OFS_0Dh|DIR_OFS_0Eh}}
{{anchor|Format_Time|DIR_OFS_10h|Format_Date|DIR_OFS_12h|DIR_OFS_14h|access rights|DIR_OFS_16h|DIR_OFS_18h|DIR_OFS_1Ah|DIR_OFS_1Ch}}
{{anchor|VFAT long file names|VFAT_OFS_00h|VFAT_OFS_01h|VFAT_OFS_0Bh|VFAT_OFS_0Ch|VFAT_OFS_0Dh|VFAT_OFS_0Eh|VFAT_OFS_1Ah|VFAT_OFS_1Ch|Size limits|Fragmentation}}
{{Main|Design of the FAT file system}}
The file system uses an index table stored on the device to identify chains of data storage areas associated with a file, the ''[[Design of the FAT file system#FAT|File Allocation Table]]'' (''FAT''). The FAT is statically allocated at the time of formatting. The table is a [[linked list]] of entries for each ''[[cluster (file system)|cluster]]'', a contiguous area of disk storage. Each entry contains either the number of the next cluster in the file, or else a marker indicating the end of the file, unused disk space, or special reserved areas of the disk. The ''root directory'' of the disk contains the number of the first cluster of each file in that directory. The operating system can then traverse the FAT, looking up the cluster number of each successive part of the disk file as a ''cluster chain'' until the end of the file is reached. ''Sub-directories'' are implemented as special files containing the ''directory entries'' of their respective files.
 
Each entry in the FAT linked list is a fixed number of bits: 12, 16 or 32. The maximum size of a file or a disk drive that can be accessed is the product of the largest number that can be stored in the entries (less a few values reserved to indicate unallocated space or the end of a list) and the size of the disk cluster. Even if only one byte of storage is needed to extend a file, an entire cluster must be allocated to it. As a result, large numbers of small files can result in clusters being allocated that may contain mostly "empty" data to meet the minimum cluster size.
===Initial FAT16===
In 1984, IBM released the [[PC AT]], which featured a 20 MB hard disk. Microsoft introduced MS-DOS 3.0 in parallel. (The earlier [[PC XT]] was the first PC with a hard drive from IBM, and MS-DOS 2.0 supported that hard drive with FAT12.) Cluster addresses were increased to 16-bit, allowing for up to 65,517 clusters per volume, and consequently much greater file system sizes, at least in theory. However, the maximum possible number of sectors and the maximum ([[Disk partitioning|partition]], rather than disk) size of 32 MB did not change. Therefore, although technically already "FAT16", this format was not what today is commonly understood as FAT16. With the initial implementation of FAT16 not actually providing for larger partition sizes than FAT12, the early benefit of FAT16 was to enable the use of smaller clusters, making disk usage more efficient, particularly for small files (which were more common at the time than they are today, after the 1990s). Also, the introduction of FAT16 actually did bring an increase in the maximum partition size under MS-DOS, since the implementation of FAT12 for hard disks in MS-DOS 2.0 was limited to 15 MB. (That is, the initial FAT16 did not support larger drives than FAT12, but MS-DOS 3.0 using FAT16 did support larger drives than MS-DOS 2.0 using FAT12, by a factor of two.)<ref>http://support.microsoft.com/kb/q69912/ Microsoft Knowledge Base article: "MS-DOS Partitioning Summary"</ref>
 
Originally designed as an 8-bit file system, the maximum number of clusters must increase as disk drive capacity increases, and so the number of bits used to identify each cluster has grown. The successive major variants of the FAT format are named after the number of table element bits: 12 ([[#FAT12|FAT12]]), 16 ([[#FAT16|FAT16]]), and 32 ([[#FAT32|FAT32]]).
A 20 MB hard disk formatted under MS-DOS 3.0 was not accessible by the older MS-DOS 2.0. (This was because MS-DOS 2.0 did not support version 3.0's FAT-16 ''and'' because it did not support hard disk partitions over 15 MB in size.) Of course, MS-DOS 3.0 could still access MS-DOS 2.0 style 8 KB-cluster partitions.
 
== Variants ==
MS-DOS 3.0 also introduced support for high-density 1.2 MB 5.25" diskettes, which notably had 15 sectors per track, hence more space for the FATs. This probably prompted a dubious optimization of the cluster size, which went down from 2 sectors to just 1. The net effect was that high density diskettes were significantly slower than older ''double density'' ones.{{Dubious|date=November 2008}} <!-- this was probably caused by the interleave being reduced to one and many disk drives not being able to keep up --> <!-- That makes sense to me, though I don't know if DOS used interleave when formatting floppy disks. I never noticed this effect myself, but I rarely used 5.25" HD disks except in the IBM AT stock drives and an IBM PS/1 stock drive. Of course, interleave has nothing to do with cluster size, and the only time smaller clusters could cause slower performance mechanically is when a disk is heavily fragmented, as there could be more, smaller fragments. Well, it could also cause a slowdown by using a larger FAT requiring more sector accesses to the FAT, but any larger disk would naturally need either a bigger FAT or bigger clusters anyway. -->
There are several variants of the FAT file system (e.g. [[#FAT12|FAT12]], [[#FAT16|FAT16]] and [[#FAT32|FAT32]]). FAT16 refers to both the original group of FAT file systems with 16-bit wide cluster entries and also to later variants. "[[#VFAT|VFAT]]" is an optional extension for long file names, which can work on top of any FAT file system. Volumes using VFAT long-filenames can be read also by operating systems not supporting the VFAT extension.
 
=== <span id="FAT8"></span><span id="FAT10"></span>Original 8-bit FAT ===
=== Extended partition and logical drives ===
<!-- NB. "FAT8" and "FAT10" are used as handy invisible anchors, but they never were the official names for these FAT variants, and therefore must not be used in the visible text. -->
Apart from improving the structure of the FAT file system itself, a parallel development allowing an increase in the maximum possible FAT size was the introduction of multiple FAT partitions. Originally partitions were supposed to be used only for sharing the disk between operating systems, typically DOS and [[Xenix]] at the time, so DOS was only prepared to handle one FAT partition. It was not possible to create multiple DOS partitions using DOS tools, and third party tools would warn that such a scheme would not be compatible with DOS. Simply allowing several identical-looking DOS partitions could lead to naming problems: should C: be the first FAT partition on disk, for simplicity, or rather the partition marked as ''active'' in the partition table, so that several DOS versions can co-exist? And which partition should be C: if the system was booted from a diskette?
{{infobox file system
| name = 8-bit FAT
| full_name = 8-bit File Allocation Table
| developer = [[Microsoft]], [[NCR Corporation|NCR]], [[Seattle Computer Products|SCP]]
| variants =
| introduction_date = {{ubli
| 1977/1978: [[NCR Basic +6]] for NCR
| 1978: [[Standalone Disk BASIC-80]] (16-byte directory entries)<ref name="Microsoft_1979_BASIC80-50" /><ref name="Microsoft_1979_BASIC80-51" />
| (1978: [[Standalone Disk BASIC-86]] internal only)
| 1979-06-04: [[Standalone Disk BASIC-86]] for SCP (16-byte directory entries)
| 1979: [[MIDAS (operating system)|MIDAS]] (32-byte directory entries)
}}
| partition_id =
| directory_struct =
| file_struct =
| bad_blocks_struct =
| max_volume_size = <!-- TBD -->
| max_file_size = 8 MB
| max_files_no = <!-- TBD -->
| max_filename_size = [[6.3 filename]]<!-- displayed with decimal dot as "123456.789" --> (binary files), 9&nbsp;characters<!-- displayed with space as "123456 789" --> (ASCII files)<ref name="Microsoft_1979_BASIC80-50" /><ref name="Microsoft_1979_BASIC80-51" />
| max_directory_depth = No sub-directories
| dates_recorded = No
| forks_streams =
| attributes = Write protected, [[EBCDIC]] conversion, read after write, binary (random rather than sequential file)<ref name="Microsoft_1979_BASIC80-50" /><ref name="Microsoft_1979_BASIC80-51" />
| file_system_permissions =
| compression =
| encryption =
| data_deduplication =
| OS =
| filename_character_set = [[ASCII]] (<code>0x00</code> and <code>0xFF</code> not allowed in first character)<ref name="Microsoft_1979_BASIC80-50" /><ref name="Microsoft_1979_BASIC80-51" /><!-- In reality, character set is most probably more limited due to BASIC language restrictions. -->
| file_size_granularity = record-granularity (128&nbsp;bytes<!-- 256 bytes for mini-disks? -->)<ref name="Microsoft_1979_BASIC80-50" /><ref name="Microsoft_1979_BASIC80-51" />
}}
The original FAT file system (or ''FAT structure'', as it was called initially) was designed and implemented by [[Marc McDonald]],<ref name="Duncan_1988_MS-DOS_Encyclopedia" /> based on a series of discussions between McDonald and [[Bill Gates]].<ref name="Duncan_1988_MS-DOS_Encyclopedia" />
It was introduced with [[8-bit]] table elements<ref name="Microsoft_1979_BASIC80-50" /><ref name="Microsoft_1979_BASIC80-51" /><ref name="Duncan_1988_MS-DOS_Encyclopedia" /> (and valid data cluster numbers up to <code>0xBF</code><ref name="Microsoft_1979_BASIC80-50" /><ref name="Microsoft_1979_BASIC80-51" />) in a precursor to [[Microsoft]]'s ''[[Standalone Disk BASIC-80]]'' for an [[Intel 8080|8080]]-based successor<ref group="nb" name="NB_NCR_FAT" /> of the [[NCR 7200 model VI]]<!-- model I and IV did not came with BASIC, whereas the still cassette-based model VI did in Q1/1977 --> data-entry terminal, equipped with 8-inch (200&nbsp;mm) floppy disks, in 1977<ref name="Manes_1993_Gates" /> or 1978.<ref group="nb" name="NB_NCR_FAT" />
In 1978, ''Standalone Disk BASIC-80'' was ported to the [[Intel 8086|8086]] using an emulator on a DEC [[PDP-10]],<ref name="Hunter_1983_Softalk" /> since no real 8086 systems were available at this time.
The FAT file system was also used in Microsoft's [[MIDAS (operating system)|MDOS/MIDAS]],<ref name="Duncan_1988_MS-DOS_Encyclopedia" /> an [[operating system]] for 8080/Z80 platforms written by McDonald since 1979.
The ''Standalone Disk BASIC'' version supported three FATs,<ref name="Microsoft_1979_BASIC80-50" /><ref name="Microsoft_1979_BASIC80-51" /><ref name="Schulman_1994_Undocumented-DOS" /> whereas this was a parameter for MIDAS. Reportedly, MIDAS was also prepared to support 10-bit, 12-bit and 16-bit FAT variants. While the size of directory entries was 16 bytes in ''Standalone Disk BASIC'',<ref name="Microsoft_1979_BASIC80-50" /><ref name="Microsoft_1979_BASIC80-51" /> MIDAS instead occupied 32&nbsp;bytes per entry.
 
[[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 [[Central processing unit|CPU]] board prototype during a guest week at Microsoft in May 1979.<ref name="Hunter_1983_Softalk" /> The final product was shown at [[Lifeboat Associates]]' booth stand at the [[National Computer Conference]] in New York<ref name="Hunter_1983_Softalk" /> on June 4–7, 1979, where Paterson learned about the more sophisticated FAT implementation in MDOS/MIDAS<ref name="Duncan_1988_MS-DOS_Encyclopedia" /> and McDonald talked to him about the design of the file system.<ref name="Manes_1993_Gates" />
To allow the use of more FAT partitions in a compatible way, a new partition type was introduced (in MS-DOS 3.2, January 1986), the ''[[Extended Boot Record|extended partition]]'', which is a container for additional partitions called ''logical drives''. Originally only one logical drive was possible, permitting hard disks up to 64 MB. In MS-DOS 3.3 (August 1987) this limit was increased to 24 drives, equal to the maximum number of available letters for drive names (A and B being reserved for the first two floppy drives, at least one of which many, if not most, systems of the era were equipped; where only one was installed, B always simulated a second drive using A.) Logical drives are described by on-disk structures which closely resemble the [[Master Boot Record]] (MBR) of the disk (which describes the ''primary'' partitions), likely to simplify the implementation. Though some believe these partitions were ''nested'' in a way analogous to Russian [[matryoshka doll]]s, that isn't the case. They are stored as a row of separate blocks within a single box; these blocks are often referred to as being ''chained'' together, by the ''links'' in their [[extended boot record]] (EBR) sectors. Only one extended partition is allowed. Under MS-DOS, logical drives are not bootable, and the extended partition can only be created after the primary FAT partition, which removes all ambiguity but also eliminates the possibility of booting several DOS versions from the same hard disk. (A few systems other than MS-DOS can boot logical drives, and partitions can be created in any order using third party formatting tools.)
 
=== FAT12 ===
A useful side-effect of the extended partition scheme was to significantly increase the maximum number of partitions possible on a PC hard disk beyond the four which could be described by the MBR alone.
<!-- NB. The header "FAT12" is used in redirects to this page. -->
{{infobox file system
| name = FAT12
| developer = [[Seattle Computer Products|SCP]], [[Microsoft]], [[IBM]], [[Digital Research]], [[Novell]]
| full_name = [[Design of the FAT file system#FAT12|12-bit File Allocation Table]]
| introduction_date = {{ubli
| 1980-07 ([[QDOS 0.10]], 16-byte directory entries)
| 1981-02-25 ([[86-DOS 0.42]], 32-byte [[FAT directory entry|directory entries]], several reserved sectors)
| c. 1981–08/10 ([[PC DOS 1.0]], 32-byte directory entries, 1&nbsp;reserved sector)
| 1982-03-03 ([[MS-DOS 1.25]], 32-byte directory entries, 1&nbsp;reserved sector)
}}
| partition_id = [[Master Boot Record|MBR]]/[[Extended Boot Record|EBR]]:{{ubli
| [[#FAT12|FAT12]]: <code>{{abbr|0x|Values in C-notation for hexadecimal numbers}}[[Partition type#PID 01h|01]]</code> e.a.
| [[Basic data partition|BDP]]: <code>EBD0A0A2-B9E5-4433-87C0-68B6B72699C7</code>
}}
| max_volume_size = {{ubli
| 16&nbsp;MB (with 4&nbsp;KB clusters)
| 32&nbsp;MB (with 8&nbsp;KB clusters)<!-- larger volumes should use logical sectored FAT partition IDs or FAT16 partition IDs -->
}}
| max_file_size = Limited by volume size
| file_size_granularity = 1&nbsp;byte
| max_files_no = 4,068 for 8&nbsp;KB clusters<!-- 2^12 - 12 (reserved clusters) - 16 (number of 8&nbsp;KB clusters for directory entries) -->
| max_filename_size = [[8.3 filename]] with [[OEM character set|OEM]] characters, <br />255 [[UCS-2]] characters<ref group="nb" name="NB_LFN_UNI"/> when using [[Long filename|LFN]]
| max_directory_depth = 32&nbsp;levels or 66&nbsp;characters (with [[Current Directory Structure|CDS]]), <br />60&nbsp;levels or more (without CDS)
| dates_recorded = {{ubli
| Modified date (not with 86-DOS before 0.42),
| modified time (not with PC&nbsp;DOS 1.0 and 86-DOS), creation date/time (DOS 7.0 and higher only),
| access date (only available with [[ACCDATE (CONFIG.SYS directive)|ACCDATE]] enabled),<ref name="Microsoft_2006_ACCDATE" />
| deletion date/time (only with DELWATCH 2<!-- with Novell DOS 7, Caldera OpenDOS 7.01, DR-DOS 7.02 and higher -->)
}}
| date_range = [[Epoch of 1980-01-01|1980-01-01]] to [[Year 2100 problem|2099-12-31]] ([[Year 2108 problem|2107-12-31]])
| date_resolution = {{ubli
| 2&nbsp;seconds for last modified time,
| 10&nbsp;ms for creation time,
| 1&nbsp;day for access date,
| 2&nbsp;seconds for deletion time
}}
| attributes = [[FAT file attributes|Read-only]] (since DOS&nbsp;2.0), [[FAT file attributes|hidden]], [[FAT file attributes|system]], [[FAT file attributes|volume]] (since [[MS-DOS 1.28]] and [[PC DOS 2.0]]), [[FAT file attributes|directory]] (since [[MS-DOS 1.40]] and PC&nbsp;DOS&nbsp;2.0), [[FAT file attributes|archive]] (since DOS&nbsp;2.0)
| file_system_permissions = {{ubli
| File, directory and volume access rights for [[FAT file access rights|read]], [[FAT file access rights|write]], [[FAT file access rights|execute]], [[FAT file access rights|delete]] only with [[DR-DOS]], [[PalmDOS]], [[Novell DOS]], [[OpenDOS]], [[FlexOS]], [[IBM 4680 OS|4680&nbsp;OS]], [[IBM 4690 OS|4690&nbsp;OS]], [[Concurrent DOS]], [[Multiuser DOS]], [[Datapac System Manager|System Manager]], [[REAL/32]]:{{ubli
| execute right only with FlexOS, 4680&nbsp;OS, 4690&nbsp;OS; individual file / directory passwords not with FlexOS, 4680&nbsp;OS, 4690&nbsp;OS<!-- at least I could not find any user or programmer's documentation for it so far -->;
| [[FAT file access rights|world]]/[[FAT file access rights|group]]/[[FAT file access rights|owner]] permission classes only with multiuser security loaded
}}
}}
| compression = Per-volume, [[SuperStor]], [[Stacker (disk compression)|Stacker]], [[DoubleSpace]], [[DriveSpace]]
| encryption = Per-volume only with [[DR-DOS]]
}}
Between April and August 1980, while borrowing the FAT concept for SCP's own 8086 operating system [[QDOS 0.10]],<ref name="Hunter_1983_Softalk" /> Tim Paterson extended the table elements to '''12 bits''',<ref name="Paterson_2007_Design-DOS" /> reduced the number of FATs to two, redefined the semantics of some of the reserved cluster values, and modified the disk layout, so that the root directory was now located between the FAT and the data area for his implementation of '''FAT12'''. Paterson also increased the nine-character (6.3) filename<ref name="Microsoft_1979_BASIC80-50" /><ref name="Microsoft_1979_BASIC80-51" /> length limit to eleven characters to support [[CP/M]]-style [[8.3 filename]]s and [[File Control Block]]s. The format used in Microsoft ''Standalone Disk BASIC's'' 8-bit file system precursor was not supported by QDOS. By August 1980, QDOS had been renamed to [[86-DOS]].<ref name="BYTE_1980_86-DOS" /> Starting with [[86-DOS 0.42]], the size and layout of directory entries was changed from 16&nbsp;bytes to 32&nbsp;bytes<ref name="SCP_1981_86-DOS_1.0_Addendum" /> in order to add a file date stamp<ref name="SCP_1981_86-DOS_1.0_Addendum" /> and increase the theoretical file size limit beyond the previous limit of 16&nbsp;MB.<ref name="SCP_1981_86-DOS_1.0_Addendum" />
[[86-DOS 1.00]] became available in early 1981. Later in 1981, 86-DOS evolved into Microsoft's [[MS-DOS]] and [[IBM]] [[PC DOS]].<ref name="Duncan_1988_MS-DOS_Encyclopedia" /><ref name="Paterson_2007_Design-DOS" /><ref name="Wallace_1992_Harddrive" />
The capability to read previously formatted volumes with 16-byte directory entries<ref name="SCP_1981_86-DOS_1.0_Addendum" /> was dropped with [[MS-DOS 1.20]].
 
FAT12 used 12-bit entries for the cluster addresses; some values were reserved to mark the end of a chain of clusters, to mark unusable areas of the disk, or for other purposes, so the maximum number of clusters was limited to 4078.<ref name="Norton2" /><ref name="Jenkinson_2000_Forensic" /> To conserve disk space, two 12-bit FAT entries used three consecutive 8-bit bytes on disk, requiring manipulation to unpack the 12-bit values. This was sufficient for the original floppy disk drives, and small hard disks up to 32 megabytes. The [[#FAT16B|FAT16B]] version available with DOS&nbsp;3.31 supported [[32-bit]] sector numbers, and so increased the volume size limit.
Prior to the introduction of extended partitions, some hard disk controllers (which at that time were separate option boards, since the [[Advanced Technology Attachment|IDE]] standard did not yet exist) could make large hard disks appear at the hardware (or BIOS?) interface level as two separate disks.
 
All the control structures fit inside the first track, to avoid head movement during read and write operations. Any bad sector in the control structures area would make the disk unusable. The DOS formatting tool rejected such disks completely. Bad sectors were allowed only in the file data area. Clusters containing bad sectors were marked unusable with the reserved value <code>0xFF7</code> in the FAT.
=== Final FAT16 ===
Finally in November 1987, [[Compaq]] DOS 3.31 (an OEM version of MS-DOS 3.3 released by Compaq with their machines) introduced what is today called the ''FAT16'' format, with the expansion of the 16-bit disk sector count to 32 bits. The result was initially called the ''DOS 3.31 Large File System''. 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 [[x86 assembly language|assembly language]]. <!-- While it is easier to do 32-bit integer math using 32-bit integer instructions, the 16-bit Real Mode of the 8086 and compatible CPUs (for which MS-DOS was exclusively designed, written, marketed and sold) does provide simple integer instructions for extending additions and subtractions to operands having any arbitrary length (in 8-bit bytes or 16-bit words) by iteration, for performing multiplication of two 16-bit values into a 32-bit product [in the DX:AX registers], and for dividing 32 bits by 16 bits. Multiplication and division by powers of two can also be done by shifts, iterated to any operand length. For FAT, most of the operations on sector lengths are additions, loads, and stores; conversion of logical sector numbers to disk C,H,S physical addresses does require multiplication and division of 32 bits. (That would also be required for access to partitions extending past the first 2^16 sectors in any case, even if all the partitions were 32 MB or smaller and used FAT12, if partitioning were done using LBA; this must be why DOS uses CHS and requires every partition to start at head 0, sector 1 of a cylinder--it makes FAT sector math partition-invariant.)
Generally, while doing 32-bit sector arithmetic in 16-bit 8086 code does add complication, with the primary effects of longer code and some consequent loss of efficiency, it is not a particularly tricky feat, though this paragraph seems to suggest it is. -->
 
While 86-DOS supported three disk formats (250.25&nbsp;KB, 616&nbsp;KB and 1232&nbsp;KB, with [[FAT ID]]s <code>0xFF</code> and <code>0xFE</code>) on 8-inch (200&nbsp;mm) floppy drives, IBM [[PC&nbsp;DOS 1.0]], released with the original [[IBM Personal Computer]] in 1981, supported only an 8-sector floppy format with a formatted capacity of 160&nbsp;KB (FAT ID <code>0xFE</code>) for single-sided 5.25-inch floppy drives, and [[PC&nbsp;DOS 1.1]] added support for a [[double-sided disk|double-sided]] format with 320&nbsp;KB (FAT ID <code>0xFF</code>). [[PC DOS 2.0]] introduced support for 9-sector floppy formats with 180&nbsp;KB (FAT ID <code>0xFC</code>) and 360&nbsp;KB (FAT ID <code>0xFD</code>).
In 1988 the improvement became more generally available through MS-DOS 4.0 and [[OS/2]] 1.1. The limit on partition size was dictated by the 8-bit [[Signedness|signed]] count of sectors per cluster, which had a maximum power-of-two value of 64. With the standard hard disk sector size of 512 bytes, this gives a maximum of 32 KB clusters, thereby fixing the "definitive" limit for the FAT16 partition size at 2 [[gigabyte]]s. On [[magneto-optical]] media, which can have 1 or 2 KB sectors, the limit is proportionally greater.
 
86-DOS&nbsp;1.00 and PC&nbsp;DOS 1.0 directory entries included only one date, the last modified date. PC&nbsp;DOS 1.1 added the last modified time. PC&nbsp;DOS 1.x [[file attribute]]s included a hidden bit and system bit, with the remaining six bits undefined. At this time, DOS did not support sub-directories, but typically there were only a few dozen files on a [[floppy disk|diskette]].
Much later, [[Windows NT]] increased the maximum cluster size to 64 KB by considering the sectors-per-cluster count as unsigned. However, the resulting format was not compatible with any other FAT implementation of the time, and it generated greater [[fragmentation (computer)#Internal fragmentation|internal fragmentation]]. [[Windows 98]] <!-- what about 95? --> also supported reading and writing this variant, but its disk utilities did not work with it.
 
The [[PC XT]] was the first PC with an IBM-supplied hard drive, and PC&nbsp;DOS 2.0 supported that hard drive with FAT12 ([[FAT ID]] <code>0xF8</code>). The fixed assumption of 8&nbsp;sectors per clusters on hard disks practically limited the maximum partition size to 16&nbsp;MB for 512&nbsp;byte sectors and 4&nbsp;KB clusters.
The number of root directory entries available is determined when the volume is formatted, and is stored in a 16-bit signed field, defining an absolute limit of 32767 entries (32736, a multiple of 32, in practice).<!-- according to the talk page this is from the MBR spec, does anyone know how to cite that--> For historical reasons, FAT12 and FAT16 media generally use 512 root directory entries on non-floppy media. Other sizes may be incompatible with some software or devices (entries being file and/or folder names in the original 8.3 format).<ref> {{cite web | url=http://support.microsoft.com/kb/120138 | title=Errors Creating Files or Folders in the Root Directory | publisher=Microsoft Help and Support | date=[[December 16]],[[2004]] | accessdate=2006-10-14}}</ref> Some third party tools like [[mkdosfs]] allow the user to set this parameter.<ref> {{cite web |url=http://www.die.net/doc/linux/man/man8/mkdosfs.8.html | title=mkdosfs man page}} </ref>
 
The ''[[BIOS Parameter Block]]'' (''BPB'') was introduced with PC&nbsp;DOS&nbsp;2.0 as well, and this version also added read-only, [[archive bit|archive]], [[volume (computing)|volume label]], and [[Directory (file systems)|directory]] attribute bits for hierarchical sub-directories.<ref name="two" />
=== Long file names ===
One of the [[user experience]] goals for the designers of [[Windows 95]] was the ability to use [[long filename]]s (LFNs—up to 255 UTF-16 code points <!-- N.B. every 16-bit Unicode value consumes one spot, regardless of whether it is a whole character, a modifier, or other incomplete character --> long), in addition to classic [[8.3 filename]]s. LFNs were implemented using a [[Workaround|work-around]] in the way directory entries are laid out (see below). The version of the file system with this extension is usually known as VFAT after the Windows 95 [[VxD]] device driver, also known as "Virtual FAT" in Microsoft's documentation.
 
[[MS-DOS 3.0]] introduced support for high-density 1.2&nbsp;MB 5.25-inch diskettes (media descriptor <code>0xF9</code>), which notably had 15&nbsp;sectors per track, hence more space for the FATs.
Interestingly, the VFAT driver actually appeared before Windows 95, in [[Windows for Workgroups]] 3.11, but was only used for implementing [[32-bit File Access]], a higher performance [[protected mode]] file access method, bypassing DOS and directly using either the [[BIOS]], or, better, the Windows-native protected mode disk drivers.
 
FAT12 remains in use on all common [[floppy disks]], including 1.44&nbsp;MB and later 2.88&nbsp;MB disks (media descriptor byte <code>0xF0</code>).
In Windows NT, support for long filenames on FAT started from version [[Windows NT 3.5|3.5]]. [[OS/2]] added long filename support to FAT using [[extended attributes]] (EA) before the introduction of VFAT; thus, VFAT long filenames are invisible to OS/2, and EA long filenames are invisible to Windows.
 
=== <span id="FAT16"></span>Initial FAT16 ===
===FAT32===
In order to overcome the volume size limit of FAT16, while still allowing DOS [[real mode]] code to handle the format without unnecessarily reducing the available [[conventional memory]], Microsoft implemented a newer generation of FAT, known as '''FAT32''', with cluster values held in a 32-bit field, of which 28 bits are used to hold the cluster number, for a maximum of approximately 268 million (2<SUP>28</SUP>) clusters. This allows for drive sizes of up to 8 [[tebibyte]]s with 32KB clusters, but the boot sector uses a 32-bit field for the sector count, limiting volume size to 2 TiB on a hard disk with 512 byte sectors.
 
{{infobox file system
On Windows 95/98, due to the version of Microsoft's [[SCANDISK]] utility included with these operating systems being a 16-bit application, the FAT structure is not allowed to grow beyond around 4.2 million (< 2<SUP>22</SUP>) clusters, placing the volume limit at 127.53 [[gibibyte|GiB]].<ref name=MSKB184006>{{cite web | url=http://support.microsoft.com/kb/184006/en-us | title=Limitations of FAT32 File System | publisher=Microsoft Help and Support | date=2004-12-16 | accessdate=2006-10-14 }}</ref> A limitation in original versions of Windows 98/98SE's Fdisk utility causes it to incorrectly report disk sizes over 64 GiB.<ref name=MSKB263044>{{cite web | url=http://support.microsoft.com/kb/263044 | title=Fdisk Does Not Recognize Full Size of Hard Disks Larger than 64 GB | publisher=Microsoft Help and Support | date=2007-01-27 | accessdate=2007-03-08 }}</ref> A corrected version is available from Microsoft, but it cannot partition drives larger than 512GiB <ref>[http://support.microsoft.com/?kbid=280737 Fdisk.exe Unable to Partition Drives Larger Than 512 Gigabytes]</ref>. These limitations do not apply to Windows 2000/XP except during Setup, in which there is a 32 GiB limit.<ref name=MSKB314463>{{cite web | url=http://support.microsoft.com/kb/314463/en-us | title=Limitations of the FAT32 File System in Windows XP | publisher=Microsoft Help and Support | date=2002-09-04 | accessdate=2007-01-24 }}</ref> Windows Me supports the FAT32 file system without any limits.<ref>{{cite web | url=http://www.allensmith.net/Storage/HDDlimit/FAT32.htm | title=Windows XP/2000 FAT32 Formatting Limit | publisher=allensmith.net | accessdate=2007-04-08 }}</ref> However, similarly to Windows 95/98/98SE there is no native support for 48-bit LBA in Windows ME, meaning that the maximum disk size for ATA disks is 127.6 GiB, the maximum size of an ATA disk using the previous long-standard 28-bit LBA.
| name = FAT16
| developer = [[Microsoft]], [[IBM]], [[Digital Research]], [[Novell]]
| full_name = [[Design of the FAT file system#FAT16|16-bit File Allocation Table]]<br />(with 16-bit sector entries)
| introduction_date = 1984-08-14 (PC DOS 3.0)<br />1984-08 (MS-DOS 3.0)
| partition_id = [[Master Boot Record|MBR]]/[[Extended Boot Record|EBR]]:{{ubli
| [[#FAT16|FAT16]]:&nbsp;<code>{{abbr|0x|Values in C-notation for hexadecimal numbers}}[[Partition type#PID_04h|04]]</code> e.a.
| [[Basic data partition|BDP]]: <code>EBD0A0A2-B9E5-4433-87C0-68B6B72699C7</code>
}}
<!-- needs more refinement as this is version dependent:
| max_volume_size = 16&nbsp;[[megabyte|MB]] (with 2&nbsp;KB clusters) --><!-- larger volumes should use logical sectored FAT partition IDs or FAT16B partition ID -->
| max_file_size = 4,294,967,295 bytes (4&nbsp;GB − 1)<!-- Not "limited by volume size" if volumes larger than 4 GB are possible. -->
| file_size_granularity = 1&nbsp;byte
| max_files_no = 65,536 for 32&nbsp;KB clusters<!-- 2^16 − 12 (reserved clusters) − 64 (number of 32 KB clusters for directory entries) -->
| max_filename_size = [[8.3 filename]] with [[OEM character set|OEM]] characters, 255&nbsp;[[UCS-2]] characters<ref group="nb" name="NB_LFN_UNI"/> when using [[Long filename|LFN]]
| max_directory_depth = 32&nbsp;levels or 66&nbsp;characters (with [[Current Directory Structure|CDS]]), <br />60&nbsp;levels or more (without CDS)
| dates_recorded = {{ubli
| Modified date/time, creation date/time (DOS 7.0 and higher only),
| access date (only available with [[ACCDATE (CONFIG.SYS directive)|ACCDATE]] enabled),<ref name="Microsoft_2006_ACCDATE" />
| deletion date/time (only with DELWATCH 2<!-- with Novell DOS 7, Caldera OpenDOS 7.01, DR-DOS 7.02 and higher -->)
}}
| date_range = [[Epoch of 1980-01-01|1980-01-01]] to [[Year 2100 problem|2099-12-31]] ([[Year 2108 problem|2107-12-31]])
| date_resolution = {{ubli
| 2&nbsp;seconds for last modified time,
| 10&nbsp;ms for creation time,
| 1&nbsp;day for access date,
| 2&nbsp;seconds for deletion time
}}
| attributes = [[FAT file attributes|Read-only]], [[FAT file attributes|hidden]], [[FAT file attributes|system]], [[FAT file attributes|volume]], [[FAT file attributes|directory]], [[FAT file attributes|archive]]
| file_system_permissions = {{ubli
| File, directory and volume access rights for [[FAT file access rights|read]], [[FAT file access rights|write]], [[FAT file access rights|execute]], [[FAT file access rights|delete]] only with [[DR-DOS]], [[PalmDOS]], [[Novell DOS]], [[OpenDOS]], [[FlexOS]], [[IBM 4680 OS|4680&nbsp;OS]], [[IBM 4690 OS|4690&nbsp;OS]], [[Concurrent DOS]], [[Multiuser DOS]], [[Datapac System Manager|System Manager]], [[REAL/32]]:{{ubli
| execute right only with FlexOS, 4680&nbsp;OS, 4690&nbsp;OS;
| individual file / directory passwords not with FlexOS, 4680&nbsp;OS, 4690&nbsp;OS<!-- at least I could not find any user or programmer's documentation for it so far -->;
| [[FAT file access rights|world]]/[[FAT file access rights|group]]/[[FAT file access rights|owner]] permission classes only with multiuser security loaded
}}
}}
| compression = Per-volume, [[SuperStor]], [[Stacker (disk compression)|Stacker]], [[DoubleSpace]], [[DriveSpace]]
| encryption = Per-volume only with [[DR-DOS]]
}}
In 1984, IBM released the [[PC AT]], which required PC&nbsp;DOS&nbsp;3.0 to access its 20&nbsp;MB hard disk.<ref name="IBM_1984_PCDOS30" /><ref name="IBM_1985_Reference" /> Microsoft introduced MS-DOS&nbsp;3.0 in parallel. Cluster addresses were increased to 16-bit, allowing for up to 65,526&nbsp;clusters per volume. However, the maximum possible number of sectors and the maximum [[Disk partitioning|partition]] size of 32&nbsp;MB did not change. Although cluster addresses were 16&nbsp;bits, this format was not what today is commonly understood as '''FAT16'''.
A [[partition type]] <code>[[Partition type#PID_04h|0x04]]</code> indicates this form of FAT16 with less than 65,536&nbsp;sectors (less than 32&nbsp;MB for sector size 512). 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.
 
As MS-DOS&nbsp;3.0 formatted all 16&nbsp;MB-32&nbsp;MB partitions in the FAT16 format, a 20&nbsp;MB hard disk formatted under MS-DOS&nbsp;3.0 was not accessible by MS-DOS&nbsp;2.0.<ref name="Microsoft_69912">{{Cite web |url=http://c-bit.org/kb/69912/EN-US/ |title=Microsoft Knowledge Base article: "MS-DOS Partitioning Summary" |access-date=2018-06-02 |archive-date=2018-06-12 |archive-url=https://web.archive.org/web/20180612143554/http://c-bit.org/kb/69912/EN-US/ |url-status=live }}</ref> MS-DOS&nbsp;3.0 to MS-DOS&nbsp;3.30 could still access FAT12 partitions under 15&nbsp;MB, but required all 16&nbsp;MB-32&nbsp;MB partitions to be FAT16, and so could not access MS-DOS&nbsp;2.0 partitions in this size range. MS-DOS&nbsp;3.31 and higher could access 16&nbsp;MB-32&nbsp;MB FAT12 partitions again.
FAT32 was introduced with Windows 95 OSR2, although reformatting was needed to use it, and [[DoubleSpace#DriveSpace in Windows 95|DriveSpace 3]] (the version that came with Windows 95 OSR2 and Windows 98<!-- what about ME? -->) never supported it. Windows 98 introduced a utility to convert existing hard disks from FAT16 to FAT32 without loss of data. In the NT line, native support for FAT32 arrived in [[Windows 2000]]. A free FAT32 driver for [[Windows NT 4.0]] was available from [[Winternals]], a company later acquired by Microsoft. Since the acquisition the driver is no longer officially available.
 
=== Logical sectored FAT ===
Windows 2000 and [[Windows XP]] can read and write to FAT32 file systems of any size, but the format program included in Windows 2000 and higher can only create FAT32 file systems of 32 GiB or less. This limitation is by design and according to Microsoft was imposed because many tasks on a very large FAT32 file system become slow and inefficient.<ref name=MSKB184006/><ref name="TechNet on FAT32">Chen, Raymond (2006). [http://www.microsoft.com/technet/technetmag/issues/2006/07/WindowsConfidential/ Microsoft TechNet: A Brief and Incomplete History of FAT32]. ''TechNet Magazine'' July 2006''.</ref> This limitation can be bypassed by using third-party formatting utilities or by using the built-in FORMAT.EXE command-line utility.<ref>[http://www.ridgecrop.demon.co.uk/index.htm?fat32format.htm Fat32Format] - Windows program for formatting disks as FAT32 beyond the 32 GB limit.</ref><ref>[http://www.gearhack.com/Forums/DisplayComments.php?file=Computer/Windows/Format_Large_Disks_to_FAT32_on_Windows_XP_and_Vista Format Large Disks to FAT32 on Windows XP and Vista]</ref>
{{See also|Extended boot record}}
<!-- NB. The header "Logical sectored FAT" is used in redirects to this page. -->
 
MS-DOS and PC&nbsp;DOS implementations of FAT12 and FAT16 could not access disk partitions larger than 32 megabytes. Several manufacturers developed their own FAT variants within their OEM versions of MS-DOS.<ref name="Novell_1993_FYI.M.1101"/>
The maximum possible size for a file on a FAT32 volume is 4 GiB minus 1 byte (2<SUP>32</SUP>&minus;1 bytes). Video applications, large databases, and some other software easily exceed this limit. Larger files require another formatting type such as [[HFS Plus|HFS+]] or [[NTFS]]. Until mid-2006, those who run [[dual boot]] systems or who move external data drives between computers with different operating systems had little choice but to stick with FAT32. Since then, full support for NTFS has become available in Linux and many other operating systems, by installing the [[Filesystem in Userspace|FUSE library]] (on Linux) together with the [[NTFS-3G]] driver. Data exchange is also possible between Windows and Linux by using the Linux-native [[ext2]] or [[ext3]] file systems through the use of external drivers for Windows, such as ext2 IFS; however, Windows cannot boot from ext2 or ext3 partitions.
 
Some vendors ([[AST Research|AST]] and [[NEC]]<ref name="Novell_1993_FYI.M.1101"/>) supported [[AST MBR<!-- NEC MBR -->|eight]], instead of the standard [[Partition table (master boot record)|four]], primary partition entries in their custom extended ''[[Master Boot Record]]'' (''MBR''), and they adapted MS-DOS to use more than a single primary partition.
===Fragmentation===
The FAT file system does not contain mechanisms which prevent newly written files from becoming scattered across the partition.<ref name="dgaiotnhpfs" /> Other file systems, like [[HPFS]], use free space bitmaps that indicate used and available clusters, which could then be quickly looked up in order to find free contiguous areas (improved in [[exFAT]]). Another solution is the linkage of all free clusters into one or more lists (as is done in [[Unix]] file systems). Instead, the FAT has to be scanned as an array to find free clusters, which can lead to performance penalties with large disks.
 
Other vendors worked around the volume size limits imposed by the 16-bit sector entries by increasing the apparent ''size'' of the sectors the file system operated on. These ''logical sectors'' were larger (up to 8192&nbsp;bytes) than the ''physical sector'' size (still 512&nbsp;bytes) on the disk. The DOS-BIOS or System BIOS would then combine multiple physical sectors into logical sectors for the file system to work with.
In fact, computing free disk space on FAT is one of the most resource intensive operations, as it requires reading the entire FAT linearly. A possible justification suggested by Microsoft's [[Raymond Chen]] for limiting the maximum size of FAT32 partitions created on Windows was the time required to perform a "DIR" operation, which always displays the free disk space as the last line.<ref name="TechNet on FAT32"/> Displaying this line took longer and longer as the number of clusters increased.
 
These changes were transparent to the file system implementation in the DOS kernel. The underlying DOS-BIOS translated these logical sectors into physical sectors according to partitioning information and the drive's physical geometry.
The High Performance File System (HPFS) divides disk space into ''bands'', which have their own free space bitmap, where multiple files opened for simultaneous write could be expanded separately.<ref name="dgaiotnhpfs" />
 
The drawback of this approach was increased memory used for sector buffering and deblocking. Since older DOS versions could not use large logical sectors, the OEMs introduced new partition IDs for their FAT variants in order to hide them from off-the-shelf issues of MS-DOS and PC DOS. Known partition IDs for logical sectored FATs include: <code>[[Partition type#PID_08h|0x08]]</code> ([[Commodore International|Commodore]] MS-DOS 3.x), <code>[[Partition type#PID_11h|0x11]]</code> ([[Leading Edge Hardware Products|Leading Edge]] MS-DOS 3.x), <code>[[Partition type#PID_14h|0x14]]</code> (AST MS-DOS 3.x), <code>[[Partition type#PID_24h|0x24]]</code> (NEC MS-DOS 3.30<ref name="Novell_1993_FYI.M.1101"/>), <code>[[Partition type#PID_56h|0x56]]</code> ([[AT&T Corporation|AT&T]] MS-DOS 3.x), <code>[[Partition type#PID_E5h|0xE5]]</code> ([[Tandy Computers|Tandy]] MS-DOS), <code>[[Partition type#PID_F2h|0xF2]]</code> ([[Sperry Corporation|Sperry IT]] MS-DOS 3.x, [[Unisys]] MS-DOS 3.3 – also used by [[Digital Research]] [[DOS Plus]] 2.1).<ref name="Brouwer_2002_Partition-IDs" /> OEM versions like Toshiba&nbsp;MS-DOS, Wyse&nbsp;MS-DOS&nbsp;3.2<!-- with 1024 bytes/sector --> and 3.3,<ref name="Microsoft_2000_Wyse-DOS" /> as well as Zenith&nbsp;MS-DOS are also known to have utilized logical sectoring.<ref name="Microsoft_2000_Logical-sectoring" /><!-- but partition IDs and other specifics of these formats are not known -->
Some of the perceived problems with [[Fragmentation (computer)|fragmentation]] resulted from operating system and hardware limitations.
 
While non-standard and sub-optimal, these FAT variants are perfectly valid according to the specifications of the file system itself.{{citation needed|date=June 2022}} Therefore, even if default issues of MS-DOS and PC&nbsp;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.<ref group="nb" name="NB_DRDOS_Logical-Sectoring">DR-DOS is able to boot off FAT12/FAT16 logical sectored media with [[BPB logical sector size|logical sector size]]s up to 1024 bytes.</ref> Also, if they no longer need to be recognized by their original operating systems, existing partitions can be "converted" into FAT12 and FAT16 volumes more compliant with versions of MS-DOS/PC&nbsp;DOS&nbsp;4.0–6.3, which do not support sector sizes different from 512&nbsp;bytes,<ref name="Brouwer_2002_Logical_FAT" /> by switching to a [[DOS 3.31 BPB|BPB with 32-bit entry]] for the number of sectors, as introduced since DOS&nbsp;3.31 (see [[#FAT16B|FAT16B]] below), keeping the cluster size and reducing the [[BPB logical sector size|logical sector size in the BPB]] down to 512&nbsp;bytes, while at the same time increasing the counts of logical sectors per cluster, reserved logical sectors, total logical sectors, and logical sectors per FAT by the same factor.
The single-tasking DOS and the traditionally single-tasking PC hard disk architecture ([[Native Command Queuing|only 1 outstanding input/output request at a time]], [[Programmed input/output|no DMA transfers]]) did not contain mechanisms which could alleviate fragmentation by asynchronously prefetching next data while the application was processing the previous chunks.
 
A parallel development in MS-DOS / PC&nbsp;DOS which allowed an increase in the maximum possible FAT size was the introduction of multiple FAT partitions on a hard disk. To allow the use of more FAT partitions in a compatible way, a new partition type was introduced in PC&nbsp;DOS&nbsp;3.2 (1986), the ''[[Extended boot record|extended partition]]'' (EBR),<ref name="Duncan_1988_MS-DOS_Encyclopedia" /> which is a container for an additional partition called ''logical drive''. Since PC&nbsp;DOS&nbsp;3.3 (April 1987), there is another, optional extended partition containing the next ''logical drive'', and so on. The [[Master Boot Record|MBR]] of a hard disk can either define up to four primary partitions, or an extended partition in addition to up to three primary partitions.
Similarly, write-behind caching was often not enabled by default with Microsoft software (if present) given the problem of data loss in case of a crash, made easier by the lack of hardware protection between applications and the system.
 
=== <span id="FAT16B"></span><span id="FAT16X"></span>Final FAT16 ===
MS-DOS also did not offer a system call which would allow applications to make sure a particular file has been completely written to disk in the presence of deferred writes (cf. [[Sync (Unix)|fsync]] in Unix or DosBufReset in [[OS/2]]). Disk caches on MS-DOS were operating on disk block level and were not aware of higher-level structures of the file system. In this situation, cheating with regard to the real progress of a disk operation was most dangerous.
 
{{infobox file system
Modern operating systems have introduced these optimizations to FAT partitions, but optimizations can still produce unwanted artifacts in case of a system crash. A Windows NT system will allocate space to files on FAT in advance, selecting large contiguous areas, but in case of a crash, files which were being appended will appear larger than they were ever written into, with dozens of random kilobytes at the end.
| name = FAT16B
| developer = [[Compaq]], [[Digital Research]], [[IBM]], [[Microsoft]], [[Novell]]
| full_name = [[Design of the FAT file system#FAT16|16-bit File Allocation Table]]<br />(with 32-bit sector entries)
| introduction_date = {{ubli
| 1987-11 ([[Compaq MS-DOS 3.31]])
| 1988-06-28 ([[DR DOS 3.31]])
| 1988 ([[IBM DOS 4.0]])
| 1988 ([[OS/2 1.1]])
| 1988 ([[MS-DOS 4.0 (IBM-developed)|MS-DOS 4.0]])
}}
| partition_id = [[Master Boot Record|MBR]]/[[Extended Boot Record|EBR]]:{{ubli
| [[#FAT16B|FAT16B]]:&nbsp;<code>{{abbr|0x|Values in C-notation for hexadecimal numbers}}[[Partition type#PID_06h|06]]</code><code>[[Partition type#PID_0Eh|0x0E]]</code> ([[Logical block addressing|LBA]]), e.a.
| [[Basic data partition|BDP]]: <code>EBD0A0A2-B9E5-4433-87C0-68B6B72699C7</code>
}}
| min_volume_size = {{ubli
| 8&nbsp;[[megabyte|MB]] (with 128&nbsp;byte sectors)
| 32&nbsp;MB (with [[512e|512]]&nbsp;byte sectors)
| 256&nbsp;MB (with [[4Kn|4&nbsp;KB]] sectors)
}}
| max_volume_size = {{ubli
| 2&nbsp;[[gigabyte|GB]] (with 32&nbsp;[[kilobyte|KB]] clusters)
| 4&nbsp;GB (with 64&nbsp;KB clusters) (NT&nbsp;4, PTS-DOS, EDR-DOS)
| 8&nbsp;GB (with 128&nbsp;KB clusters and <!-- 128 s/c -->1 or <!-- 64 s/c -->2&nbsp;KB sectors) (NT&nbsp;4 and EDR-DOS only)
| 8&nbsp;GB (with 128&nbsp;KB clusters and <!-- 256 s/c -->512 byte sectors) (EDR-DOS only)
| 16&nbsp;GB (with 256&nbsp;KB clusters and <!-- 128 s/c -->2 or <!-- 64 s/c -->4&nbsp;KB sectors) (NT&nbsp;4 only)
}}
| max_file_size = {{ubli
| 2,147,483,647 bytes (2&nbsp;GB − 1)<!-- 2^31 − 1 --> (without [[large file support|LFS]])
| 4,294,967,295 bytes (4&nbsp;GB − 1)<!-- 2^32 − 1 --> (with [[large file support|LFS]])
| limited by volume size only (with FAT16+<ref name="DRDOS_FAT+_R2" />)
}}
| file_size_granularity = 1&nbsp;byte
| max_files_no = 65,460 for 32&nbsp;KB clusters<!-- 2^16 − 12 (reserved clusters) − 64 (number of 32 KB clusters for directory entries) -->
| max_filename_size = [[8.3 filename]] with [[OEM character set|OEM]] characters, <br />255 [[UCS-2]] characters<ref group="nb" name="NB_LFN_UNI"/> when using [[Long filename|LFN]]
| max_directory_depth = 32&nbsp;levels or 66&nbsp;characters (with [[Current Directory Structure|CDS]]), <br />60&nbsp;levels or more (without CDS)
| dates_recorded = {{ubli
| Modified date/time, creation date/time (DOS 7.0 and higher only),
| access date (only available with [[ACCDATE (CONFIG.SYS directive)|ACCDATE]] enabled),<ref name="Microsoft_2006_ACCDATE" />
| deletion date/time (only with DELWATCH 2<!-- with Novell DOS 7, Caldera OpenDOS 7.01, DR-DOS 7.02 and higher -->)
}}
| date_range = [[Epoch of 1980-01-01|1980-01-01]] to [[Year 2100 problem|2099-12-31]] ([[Year 2108 problem|2107-12-31]])
| date_resolution = {{ubli
| 2&nbsp;seconds for last modified time,
| 10&nbsp;ms for creation time,
| 1&nbsp;day for access date,
| 2&nbsp;seconds for deletion time
}}
| attributes = [[FAT file attributes|Read-only]], [[FAT file attributes|hidden]], [[FAT file attributes|system]], [[FAT file attributes|volume]], [[FAT file attributes|directory]], [[FAT file attributes|archive]]
| file_system_permissions = {{ubli
| File, directory and volume access rights for [[FAT file access rights|read]], [[FAT file access rights|write]], [[FAT file access rights|execute]], [[FAT file access rights|delete]] only with [[DR-DOS]], [[PalmDOS]], [[Novell DOS]], [[OpenDOS]], [[FlexOS]], [[IBM 4680 OS|4680&nbsp;OS]], [[IBM 4690 OS|4690&nbsp;OS]], [[Concurrent DOS]], [[Multiuser DOS]], [[Datapac System Manager|System Manager]], [[REAL/32]]:{{ubli
| execute right only with FlexOS, 4680&nbsp;OS, 4690&nbsp;OS;
| individual file / directory passwords not with FlexOS, 4680&nbsp;OS, 4690&nbsp;OS<!-- at least I could not find any user or programmer's documentation for it so far -->;
| [[FAT file access rights|world]]/[[FAT file access rights|group]]/[[FAT file access rights|owner]] permission classes only with multiuser security loaded
}}
}}
| compression = Per-volume, [[SuperStor]], [[Stacker (disk compression)|Stacker]], [[DoubleSpace]], [[DriveSpace]]
| encryption = Per-volume only with [[DR-DOS]]
}}
In November 1987, [[Compaq MS-DOS 3.31|Compaq Personal Computer DOS 3.31]] (a modified OEM version of MS-DOS&nbsp;3.3 released by Compaq with their machines) introduced what today is simply known as ''the FAT16'' format, with the expansion of the 16-bit disk sector count to 32&nbsp;bits in the BPB.
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 [[x86 assembly language|assembly language]].
The result was initially called the ''DOS 3.31 Large File System''. [[Microsoft]]'s <code>[[DSKPROBE]]</code> tool refers to type <code>[[Partition type#PID_06h|0x06]]</code> as ''BigFAT'',<ref name="Microsoft_2003_CC736327" /> whereas some older versions of <code>[[FDISK]]</code> described it as ''BIGDOS''. Technically, it is known as '''FAT16B'''.
 
Since older versions of DOS were not designed to cope with more than 65,535&nbsp;sectors, it was necessary to introduce a new partition type for this format in order to hide it from pre-3.31 issues of DOS. The original form of FAT16 (with less than 65,536 sectors) had a [[partition type]] <code>[[Partition type#PID_04h|0x04]]</code>. To deal with disks larger than this, type <code>[[Partition type#PID_06h|0x06]]</code> was introduced to indicate 65,536 or more sectors. In addition to this, the disk driver was expanded to cope with more than 65,535&nbsp;sectors as well. The only other difference between the original FAT16 and the newer FAT16B format is the usage of a [[DOS 3.31 BPB|newer BPB]] format with 32-bit sector entry. Therefore, newer operating systems supporting the FAT16B format can cope also with the original FAT16 format without any necessary changes.
With the large cluster sizes, 16 or 32K, forced by larger FAT32 partitions, the ''external'' fragmentation becomes somewhat less significant, and ''internal'' fragmentation, ie. disk space waste (since files are rarely exact multiples of cluster size), starts to be a problem as well, especially when there are a great many small files.
 
If partitions to be used by pre-DOS&nbsp;3.31 issues of DOS need to be created by modern tools, the only criteria theoretically necessary to meet are a sector count of less than 65536, and the usage of the old partition ID (<code>[[Partition type#PID_04h|0x04]]</code>). In practice however, type <code>[[Partition type#PID_01h|0x01]]</code> and <code>[[Partition type#PID_04h|0x04]]</code> primary partitions should not be physically located outside the first 32&nbsp;MB of the disk, due to other restrictions in MS-DOS&nbsp;2.x, which could not cope with them otherwise.
=== Third party support ===
Other IBM PC operating systems&mdash;such as [[Linux]], [[FreeBSD]], [[BeOS]] and [[JNode]]&mdash;have all supported FAT, and most added support for VFAT, FAT32, [http://www.jnode.org/node/844 JFAT] shortly after the corresponding Windows versions were released. Early Linux distributions also supported a format known as [[UMSDOS]], which was FAT with Unix file attributes (such as long file name and access permissions) stored in a separate file called “<tt>--linux-.---</tt>”. UMSDOS fell into disuse after VFAT was released and is not enabled by default in [[Linux kernel]]s from version 2.5.7 onwards.<ref>{{cite web | url=http://www.kernel.org/pub/linux/kernel/v2.5/ChangeLog-2.5.7 | title=Release notes for v2.5.7 | publisher=The Linux Kernel archives | date=2002-03-12 | accessdate=2006-10-14}}</ref> The [[Mac OS X]] operating system also supports the FAT file systems on volumes other than the [[boot disk]]. The [[Amiga]] supports FAT through the [[CrossDOS]] file system.
 
In 1988, the FAT16B improvement became more generally available through [[DR&nbsp;DOS]]&nbsp;3.31, PC&nbsp;DOS&nbsp;4.0, [[OS/2]]&nbsp;1.1, and MS-DOS&nbsp;4.0. The limit on partition size was dictated by the 8-bit [[Signedness|signed]] count of sectors per cluster, which originally had a maximum power-of-two value of 64. With the standard hard disk sector size of 512&nbsp;bytes, this gives a maximum of 32&nbsp;KB cluster size, thereby fixing the "definitive" limit for the FAT16 partition size at 2&nbsp;GB for sector size 512. On [[magneto-optical]] media, which can have 1 or 2&nbsp;KB sectors instead of 0.5&nbsp;KB, this size limit is proportionally larger.
=== FAT and Alternate Data Streams ===
The FAT file system itself is not designed for supporting Alternate Data Streams ([[Fork (filesystem)|ADS]]), but some operating systems that heavily depend on them have devised various methods for handling them in FAT drives. Such methods either store the additional information in extra files and directories (Mac OS), or give new semantics to previously unused fields of the FAT on-disk data structures (OS/2 and Windows NT). The second design, while presumably more efficient, prevents any copying or backing-up of those volumes using non-aware tools; manipulating such volumes using non-aware disk utilities (e.g. defragmenters or [[CHKDSK]]) will probably lose the information.
 
Much later, [[Windows&nbsp;NT]] increased the maximum cluster size to 64&nbsp;KB, by considering the sectors-per-cluster count as unsigned. However, the resulting format was not compatible with any other FAT implementation of the time, and it generated greater [[internal fragmentation]]. [[Windows 98]], SE and ME also supported reading and writing this variant, but its disk utilities did not work with it and some [[File control block|FCB]] services are not available for such volumes. This contributes to a confusing compatibility situation.
[[Mac OS]] using [[PC Exchange]] stores its various dates, file attributes and long filenames in a [[hidden file]] called FINDER.DAT, and [[resource fork]]s (a common Mac OS ADS) in a subdirectory called RESOURCE.FRK, in every directory where they are used. From PC Exchange 2.1 onwards, they store the Mac OS long filenames as standard FAT long filenames and convert FAT filenames longer than 31 characters to unique 31-character filenames, which can then be made visible to Macintosh applications.
 
Prior to 1995, versions of DOS accessed the disk via [[Cylinder-head-sector|CHS]] addressing only. When [[Windows&nbsp;95]] (MS-DOS 7.0) introduced [[Logical block addressing|LBA]] disk access, partitions could start being physically located outside the first c. 8&nbsp;GB<!-- exact value is somewhat smaller --> of this disk and thereby out of the reach of the traditional CHS addressing scheme. Partitions partially or fully located beyond the CHS barrier therefore had to be hidden from non-LBA-enabled operating systems by using the new partition type <code>[[Partition type#PID_0Eh|0x0E]]</code> in the partition table instead. FAT16 partitions using this partition type are also named '''FAT16X'''.<ref name="Microsoft_2004_KB120138" /> The only difference, compared to previous FAT16 partitions, is the fact that some CHS-related geometry entries in the BPB record, namely the number of sectors per track and the number of heads, may contain no or misleading values and should not be used.
Mac OS X stores resource forks and metadata (file attributes, other ADS) in a hidden file with a name constructed from the owner filename prefixed with "._", and Finder stores some folder and file metadata in a hidden file called "[[.DS_Store]]".
 
The number of root directory entries available for FAT12 and FAT16 is determined when the volume is formatted, and is stored in a 16-bit field. For a given number <code>RDE</code> and sector size <code>SS</code>, the number <code>RDS</code> of root directory sectors is <code>RDS = ceil((RDE × 32) / SS)</code>, and <code>RDE</code> is normally chosen to fill these sectors, i.e., <code>RDE × 32 = RDS × SS</code>. FAT12 and FAT16 media typically use 512 root directory entries on non-floppy media. Some third-party tools, like mkdosfs, allow the user to set this parameter.<ref name="MKDOSFS" />
[[OS/2]] heavily depends on [[extended attribute]]s (EAs) and stores them in a hidden file called "EA&nbsp;DATA.&nbsp;SF" in the root directory of the FAT12 or FAT16 volume. This file is indexed by 2 previously reserved bytes in the file's (or directory's) directory entry. In the FAT32 format, these bytes hold the upper 16 bits of the starting cluster number of the file or directory, hence making it difficult to store EAs on FAT32. Extended attributes are accessible via the [[Workplace Shell]] desktop, through [[REXX]] scripts, and many system [[graphical user interface|GUI]] and [[command line interface|command-line]] utilities (such as [[4DOS|4OS2]]).<ref>{{cite web | url=http://www.tavi.co.uk/os2pages/eadata.html | title=Implementation of extended attributes on the FAT file system | author=Bob Eager | work=Tavi OS/2 pages | date=2000-10-28 | accessdate=2006-10-14}}</ref>
 
===FAT32===
To accommodate its [[OS/2]] subsystem, [[Windows NT]] supports the handling of extended attributes in [[High Performance File System|HPFS]], [[NTFS]], and FAT. It stores EAs on FAT and HPFS using exactly the same scheme as OS/2, but does not support any other kind of ADS as held on NTFS volumes. Trying to copy a file with any ADS other than EAs from an NTFS volume to a FAT or HPFS volume gives a warning message with the names of the ADSs that will be lost.
{{Infobox file system
| name = FAT32
| full_name DEVICE1
 
[[Design of the FAT file system#FAT32|32-bit File Allocation Table]]<br />(with 28-bit cluster entries)
Windows 2000 onward acts exactly as Windows NT, except that it ignores EAs when copying to FAT32 without any warning (but shows the warning for other ADSs, like "Macintosh Finder Info" and "Macintosh Resource Fork").
| developer = [[Microsoft]], [[Caldera UK|Caldera]]
| variants =
| introduction_date = August 1996 ([[Windows 95 OSR2]])
| partition_id = [[Master Boot Record|MBR]]/[[Extended Boot Record|EBR]]: {{ubli
| [[#FAT32|FAT32]]: <code>{{abbr|0x|Values in C-notation for hexadecimal numbers}}[[Partition type#PID_0Bh|0B]]</code><code>[[Partition type#PID_0Ch|0x0C]]</code> ([[Logical block addressing|LBA]]), e.a.
| [[Basic data partition|BDP]]: <code>EBD0A0A2-B9E5-4433-87C0-68B6B72699C7</code>
}}
| directory_struct =
| file_struct =
| bad_blocks_struct =
| min_volume_size = {{ubli
| 32&nbsp;[[megabyte|MB]] – 4.5&nbsp;[[kilobyte|KB]] (with 65525 clusters and 512 byte sectors)
| 256&nbsp;MB – 36&nbsp;KB (with 65525 clusters and 4&nbsp;[[kilobyte|KB]] sectors)
}}
| max_volume_size = {{ubli
| 2&nbsp;[[terabyte|TB]] (with 512&nbsp;byte sectors)
| 8&nbsp;TB (with 2&nbsp;KB sectors and 32&nbsp;KB clusters)
| 16&nbsp;TB (with 4&nbsp;KB sectors and 64&nbsp;KB clusters)
}}
| max_file_size = {{ubli
| 2,147,483,647 bytes (2&nbsp;GiB − 1 byte)<!-- 2^31 - 1 --> (without [[large file support|LFS]])
| 4,294,967,295 bytes (4&nbsp;GiB − 1 byte)<!-- 2^32 - 1 --><ref name="GB4" /> (with [[large file support|LFS]])
| 274,877,906,943 bytes (256&nbsp;GiB − 1 byte)<!-- 2^38 - 1 --> (only with FAT32+<ref name="DRDOS_FAT+_R2" />)
}}
| max_files_no = 268,173,300 for 32&nbsp;KB clusters<!-- 2^28 − 12 (reserved clusters) − 262144 (number of 32&nbsp;KB clusters for directory entries) -->
| max_filename_size = [[8.3 filename]] with [[OEM character set|OEM]] characters, <br />255 [[UCS-2]] characters<ref group="nb" name="NB_LFN_UNI"/> when using [[Long filename|LFN]]
| max_directory_depth = 32&nbsp;levels or 66&nbsp;characters (with [[Current Directory Structure|CDS]]), <br />60&nbsp;levels or more (without CDS)
| dates_recorded = {{ubli
| Modified date/time, creation date/time (DOS&nbsp;7.0 and higher only),
| access date (only available with [[ACCDATE (CONFIG.SYS directive)|ACCDATE]] enabled),<ref name="Microsoft_2006_ACCDATE" />
| deletion date/time (only with DELWATCH 2<!-- with Novell DOS 7, Caldera OpenDOS 7.01, DR-DOS 7.02 and higher -->)
}}
| date_range = [[Epoch of 1980-01-01|1980-01-01]] to [[Year 2100 problem|2099-12-31]] ([[Year 2108 problem|2107-12-31]])
| date_resolution = {{ubli
| 2&nbsp;seconds for last modified time,
| 10&nbsp;ms for creation time,
| 1&nbsp;day for access date,
| 2&nbsp;seconds for deletion time
}}
| forks_streams =
| attributes = [[FAT file attributes|Read-only]], [[FAT file attributes|hidden]], [[FAT file attributes|system]], [[FAT file attributes|volume]], [[FAT file attributes|directory]], [[FAT file attributes|archive]]
| file_system_permissions = Partial, only with [[DR-DOS]], [[REAL/32]] and [[4690 OS]]
| compression = Yes
| encryption =
| data_deduplication =
| OS =
| file_size_granularity = 1&nbsp;byte
}}
 
In order to overcome the volume size limit of FAT16, while at the same time allowing DOS [[Real mode|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&nbsp;KB under DOS.<ref name="Microsoft_1998_CC768180" /> Cluster values are represented by [[32-bit]] numbers, of which 28 bits are used to hold the cluster number.
=== Future ===
Microsoft has recently secured patents for VFAT and FAT32 (but not the original FAT). Despite two earlier rulings against them, Microsoft prevailed and was awarded the patents.
 
==== Maximal sizes ====
For most purposes, the [[NTFS]] file system that was developed for the Windows NT line is superior to FAT from the points of view of efficiency, performance, and reliability; its main drawbacks are the size overhead for small volumes and the very limited support by anything other than the NT-based versions of Windows, since the exact specification is a [[trade secret]] of Microsoft. The availability of [[NTFS-3G]] since mid 2006 has led to much improved NTFS support in [[Unix-like]] operating systems, considerably alleviating this concern. It is still not possible to use NTFS in DOS-like operating systems without third-party drivers, which in turn makes it difficult to use a DOS floppy for recovery purposes. Microsoft provided a [[Recovery Console|recovery console]] to work around this issue, but for security reasons it severely limited what could be done through the Recovery Console by default. The movement of recovery utilities to boot CDs based on [[BartPE]] or Linux (with NTFS-3G) is finally eroding this drawback.
The FAT32 boot sector uses a 32-bit field for the sector count, limiting the maximal FAT32 volume size to 2&nbsp;[[terabyte]]s with a sector size of 512&nbsp;[[byte]]s. The maximum FAT32 volume size is 16&nbsp;TB with a sector size of 4,096&nbsp;bytes.<ref name="Microsoft_2007_KB184006" /><ref name="Microsoft_2007_KB314463" /> The built-in [[Windows shell]] disk format tool on Windows NT arbitrarily only supports volume sizes up to 32&nbsp;GB,{{refn|group="nb"|This was a decision taken by the developer in question, who assumed his decision would be revised later, something that never happened.<ref>{{cite web | url=https://www.theregister.com/2021/01/04/windows_format_fat32/ | title=Explained: The thinking behind the 32GB Windows Format limit on FAT32 }}</ref>}} but Windows supports reading and writing to preexisting larger FAT32 volumes, and these can be created with the [[command prompt]], [[PowerShell]] or third-party tools,<ref>{{Cite web |last=Glenn |first=Walter |title=How to Format USB Drives Larger Than 32GB With FAT32 on Windows |url=https://www.howtogeek.com/316977/how-to-format-usb-drives-larger-than-32gb-with-fat32-on-windows/ |access-date=2021-01-26 |website=How-To Geek |date=July 20, 2017 |language=en-US |archive-date=2021-01-26 |archive-url=https://web.archive.org/web/20210126003213/https://www.howtogeek.com/316977/how-to-format-usb-drives-larger-than-32gb-with-fat32-on-windows/ |url-status=live }}</ref> or by formatting the volume on a non-Windows system or on a Windows 9x system with FAT32 support and then transferring it to the Windows NT system. 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.<ref>{{Cite web |author1=Roshan Ashraf Shaikh |date=2024-08-16 |title=Windows 11 preview build sees FAT32 partition size increased to 2TB after 30 years |url=https://www.tomshardware.com/software/operating-systems/windows-11-preview-build-sees-fat32-partition-size-increased-to-2tb-after-30-years |access-date=2024-08-23 |website=Tom's Hardware |language=en}}</ref>
 
The maximal possible size for a file on a FAT32 volume is 4&nbsp;[[gigabyte|GB]] minus 1 byte, or 4,294,967,295 (2<sup>32</sup>&nbsp;−&nbsp;1) bytes. 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.
FAT is still the normal file system for removable media (with the exception of CDs and DVDs), with FAT12 used on floppies, and FAT16 on most other removable media (such as [[flash memory]] cards for [[digital camera]]s and [[USB]] flash drives). Most removable media are not yet large enough to benefit from FAT32<!--presumably those that are like IOMEGA REV normally get used with fat32 but i don't have any around to check [[User:Plugwash|Plugwash]] 13:59, 8 September 2005 (UTC)-->, although some larger flash drives<!--others?-->, like [[Secure Digital High-Capacity|SDHC]], do make use of it. FAT16 is used on these drives for reasons of compatibility and size overhead.
 
Like FAT12 and FAT16, FAT32 does not include direct built-in support for long filenames, but FAT32 volumes can optionally hold [[#VFAT|VFAT]] long filenames in addition to short filenames in exactly the same way as VFAT long filenames have been optionally implemented for FAT12 and FAT16 volumes.
The FAT32 formatting support in Windows 2000 and XP is limited to volumes of 32 GB, which effectively forces users of modern hard drives either to use [[NTFS]], to partition the drive into smaller volumes (below 32 GB), or to format the drive using third party tools.
 
===exFAT= Development ====
FAT32 was introduced with [[Windows 95]] OSR2(MS-DOS 7.1) in 1996, although reformatting was needed to use it, and [[DriveSpace 3]] (the version that came with Windows 95 OSR2 and Windows 98<!-- what about ME? -->) never supported it. [[Windows 98]] introduced a utility to convert existing hard disks from FAT16 to FAT32 without loss of data.
{{main|exFAT}}
 
In the Windows NT line, native support for FAT32 arrived in [[Windows 2000]]. A free FAT32 driver for [[Windows NT 4.0]] was available from [[Winternals]], a company later acquired by Microsoft. The acquisition of the driver from official sources is no longer possible. Since 1998, Caldera's dynamically loadable [[DRFAT32]] driver could be used to enable FAT32 support in DR-DOS.<ref name="Caldera_1998_DRFAT32-RM"/><ref name="Caldera_1998_DRFAT32"/> The first version of DR-DOS to natively support FAT32 and LBA access was OEM DR-DOS 7.04 in 1999. That same year [[Intelligent Micro Software|IMS]] introduced native FAT32 support with [[REAL/32]] 7.90, and [[IBM 4690 OS]] added FAT32 support with version 2.<ref name="IBM_4690_User_Guide" /> [[Ahead Software]] provided another dynamically loadable FAT32.EXE driver for DR-DOS 7.03 with [[Nero Burning ROM]] in 2004.<!-- with copyrights 2002-2004 --> IBM introduced native FAT32 support with OEM PC DOS 7.1 in 1999.
exFAT is an incompatible replacement for FAT file systems that was introduced with [[Windows Embedded CE 6.0]]. It is intended to be used on [[USB flash drive|flash drives]], where FAT is used today. Windows XP file system drivers will be offered by Microsoft shortly after the release of Windows CE 6.0{{Fact|date=September 2007}}, while [[Windows Vista Service Pack 1]] added exFAT support to Windows Vista.<ref>{{cite web
|url=http://windowsvistablog.com/blogs/windowsvista/pages/windows-vista-service-pack-1-beta-whitepaper.aspx#_Toc175944550
|title=Vista SP1 Whitepaper
|date=2007-08-28
|accessdate=2007-08-28
|author=Brandon LeBlanc
|publisher=[[Microsoft]]
}}</ref> exFAT introduces a free space bitmap allowing faster space allocation and faster deletes, support for files up to 2<sup>64</sup> bytes, larger cluster sizes (up to 32 MB in the first implementation), an extensible directory structure and name hashes for filenames for faster comparisons. It does not have short 8.3 filenames anymore. It does not appear to have security [[access control list]]s or [[journaling file system|file system journaling]] like [[NTFS]], though device manufacturers can choose to implement simplified support for transactions (backup file allocation table used for the write operations, primary FAT for storing last known good allocation table).
 
Two partition types have been reserved for FAT32 partitions, <code>[[Partition type#PID 0Bh|0x0B]]</code> and <code>[[Partition type#PID 0Ch|0x0C]]</code>. The latter type is also named '''FAT32X''' in order to indicate usage of LBA disk access instead of CHS.<ref name="Caldera_1998_DRFAT32-RM"/><ref name="PowerQuest_1998_PQ4" /><ref name="Livingstone_1998_FAT32X" /><ref name="Duitz_2001_FAQ" /><ref name="Costanzo_1998_FAT32X" /> On such partitions, CHS-related geometry entries, namely the [[MBR partition entry|CHS sector address]]es in the MBR as well as the number of [[BPB sectors per track|sectors per track]] and the [[BPB number of heads|number of heads]] in the EBPB record, may contain no or misleading values and should not be used.<ref name="PowerQuest_1998_FAT32X" /><ref name="Duitz_2001_FAQ" /><ref name="Costanzo_1998_FAT32X" />
==Design==
 
== Extensions ==
The following is an overview of the order of structures in a FAT partition or disk:
<!-- === Flash and ROM FAT extensions === for FAT extensions like FTL
{| class="wikitable" style="text-align:center" cellpadding="20"
=== Secured FAT === for single/multiuser security schemes including those by DRI and Linux
| Boot<br/> sector
=== Compressed FAT === for compressed and encrypted FAT schemes
| More reserved<br/> sectors<br/> (optional)
=== Deletion tracking === for MSX-DOS, SAVENAME, DELWATCH, SENTRY, UNDELETE, RECYCLE etc.
| File<br/> Allocation<br/> Table #1
=== Large file support === for files larger than 2/4 GB, FAT+ etc.
| File<br/> Allocation<br/> Table #2
=== Transaction-safe FAT === for TFAT and other transaction safe FAT variants -->
| Root<br/> Directory<br/> (FAT12/16 only)
| Data Region (for files and directories) ...<br/> (To end of partition or disk)
|}
 
=== <span id="EA"></span>Extended attributes ===
A FAT file system is composed of four different sections.
 
[[OS/2]] heavily depends on [[extended attribute]]s (EAs) and stores them in a hidden file called "<code>EA&#x2420;DATA.&#x2420;SF</code>"<!-- Since the exact spelling is important and most sources list only 10 of the 8+3 available characters in directory entries, recheck the exact 8+3 byte spelling of this filename --> in the [[root directory]] of the [[#FAT12|FAT12]] or [[#FAT16|FAT16]] volume. This file is indexed by two previously reserved bytes in the file's (or directory's) [[FAT directory entry|directory entry]] at offset [[Design of the FAT file system#DIR OFS 14h|<code>0x14</code>]].<ref name="Eager_2000_EA" /> In the [[#FAT32|FAT32]] format, these bytes hold the upper 16&nbsp;bits of the starting cluster number of the file or directory, hence making it impossible to store [[OS/2 EA]]s on FAT32 using this method.
# The '''Reserved sectors''', located at the very beginning. The first reserved sector is the [[Boot sector|Boot Sector]] (aka ''Partition Boot Record''). It includes an area called the ''[[BIOS parameter block|BIOS Parameter Block]]'' (with some basic file system information, in particular its type, and pointers to the ___location of the other sections) and usually contains the operating system's [[boot loader]] code. The total count of reserved sectors is indicated by a field inside the Boot Sector. Important information from the Boot Sector is accessible through an operating system structure called the ''Drive Parameter Block'' in DOS and OS/2. For FAT32 file systems, the reserved sectors include a ''Backup Boot Sector'' at Sector 6.
# The '''FAT Region'''. This typically contains two copies (may vary) of the ''File Allocation Table'' for the sake of redundancy checking, although the extra copy is rarely used, even by disk repair utilities. These are maps of the Data Region, indicating which clusters are used by files and directories.
# The '''Root Directory Region'''. This is a ''Directory Table'' that stores information about the files and directories located in the root directory. It is only used with FAT12 and FAT16 and means that the root directory has a fixed maximum size which is pre-allocated at creation of this volume. FAT32 stores the root directory in the Data Region along with files and other directories instead, allowing it to grow without such a restraint.
# The '''Data Region'''. This is where the actual file and directory data is stored and takes up most of the partition. The size of files and subdirectories can be increased arbitrarily (as long as there are free clusters) by simply adding more links to the file's chain in the FAT. Note however, that files are allocated entirely in a cluster, and so if a 1 KB file resides in a 32 KB cluster, 31 KB are wasted.
 
However, the third-party FAT32 [[installable file system]] (IFS) driver FAT32.IFS version 0.70 and higher by Henk Kelder & Netlabs for OS/2, [[eComStation]] and [[ArcaOS]] stores extended attributes in extra files with filenames having the string "<code>&#x2420;EA.&#x2420;SF</code>" appended to the regular filename of the file to which they belong. The driver also utilizes the byte at offset [[Design of the FAT file system#DIR OFS 0Ch|<code>0x0C</code>]] in directory entries to store a special mark byte indicating the presence of extended attributes to help speed up things.<ref name="Kelder_2003_FAT32IFS0913" /><ref name="Kelder_FAT32IFS074" /> (This extension is critically incompatible with the FAT32+ method to store files larger than 4&nbsp;GB minus 1 on FAT32 volumes.)<ref name="DRDOS_FAT+_R2" />
FAT uses [[Endianness|little endian]] format for entries in the header and the FAT(s).
 
Extended attributes are accessible via the [[Workplace Shell]] desktop, through [[REXX]] scripts, and many system [[graphical user interface|GUI]] and [[command line interface|command-line]] utilities (such as [[4OS2]]).<ref name="Eager_2000_Tavi" />
===Boot Sector===
 
To accommodate its [[OS/2]] subsystem, [[Windows NT]] supports the handling of extended attributes in [[High Performance File System|HPFS]], [[NTFS]], FAT12 and FAT16. It stores EAs on FAT12, FAT16 and HPFS using exactly the same scheme as OS/2, but does not support any other kind of [[Alternate Data Streams|ADS]] as held on NTFS volumes. Trying to copy a file with any ADS other than EAs from an NTFS volume to a FAT or HPFS volume gives a warning message with the names of the ADSs that will be lost. It does not support the FAT32.IFS method to store EAs on FAT32 volumes.
Common structure of the first 36 bytes used by all FAT versions:
 
[[Windows 2000]] onward acts exactly as Windows NT, except that it ignores EAs when copying to FAT32 without any warning (but shows the warning for other ADSs, like "Macintosh Finder Info" and "Macintosh Resource Fork").
{| class="wikitable"
!width="5%"|Byte Offset
!width="5%"|Length (bytes)
!width="40%"|Description
|-
|align="right"|0x00
|align="right"|3
|Jump instruction. This instruction will be executed and will skip past the rest of the (non-executable) header if the partition is booted from. See [[Volume Boot Record]]. If the jump is two-byte near jmp it is followed by a NOP instruction.
|-
|align="right"|0x03
|align="right"|8
|OEM Name (padded with spaces). MS-DOS checks this field to determine which other parts of the boot record can be relied on.<ref>{{cite web | url=http://groups.google.com/group/alt.msdos.programmer/msg/6b10a1ea602e61e | title=Need DOS 6.22 (Not OEM) | author=Matthias Paul | date=2002-02-20 | work=alt.msdos.programmer | accessdate=2006-10-14}}</ref><ref>{{cite web | url=http://groups.google.co.uk/group/comp.os.msdos.programmer/msg/79de2d76832cfbd6 | title=Cluster Size | author=Wally Bass | date=1994-02-14 | work=comp.os.msdos.programmer | accessdate=2006-10-14}}</ref> Common values are <code>IBM&nbsp; 3.3</code> (with two spaces between the "IBM" and the "3.3"), <code>MSDOS5.0</code> and <code>MSWIN4.1</code>.
|-
|align="right"|0x0b
|align="right"|2
|Bytes per sector. A common value is 512, especially for file systems on IDE (or compatible) disks. The ''BIOS Parameter Block'' starts here.
|-
|align="right"|0x0d
|align="right"|1
|Sectors per cluster. Allowed values are powers of two from 1 to 128. However, the value must not be such that the number of bytes per cluster becomes greater than 32 [[Kilobyte|KB]].
|-
|align="right"|0x0e
|align="right"|2
|Reserved sector count. The number of sectors before the first FAT in the file system image. Should be 1 for FAT12/FAT16. Usually 32 for FAT32.
|-
|align="right"|0x10
|align="right"|1
|Number of file allocation tables. Almost always 2.
|-
|align="right"|0x11
|align="right"|2
|Maximum number of root directory entries. Only used on FAT12 and FAT16, where the root directory is handled specially. Should be 0 for FAT32. This value should always be such that the root directory ends on a sector boundary (i.e. such that its size becomes a multiple of the sector size). 224 is typical for floppy disks.
|-
|align="right"|0x13
|align="right"|2
|Total sectors (if zero, use 4 byte value at offset 0x20)
|-
|align="right"|0x15
|align="right"|1
|Media descriptor<ref name="msdosref">{{cite book | title = Microsoft MS-DOS Programmer's Reference : version 5.0 | publisher = Microsoft press | year = 1991 | isbn = 1-55615-329-5}}</ref>
{|
|0xF0
|3.5" Double Sided, 80 tracks per side, 18 or 36 sectors per track (1.44MB or 2.88MB). 5.25" Double Sided, 15 sectors per track (1.2MB). Used also for other media types.
|-
|0xF8
|Hard disk. Single sided, 80 tracks per side, 9 sectors per track{{Fact|date=August 2007}}<!-- MS-DOS ref only mentions Hard disk -->
|-
|0xF9
|3.5" Double sided, 80 tracks per side, 9 sectors per track (720K). 5.25" Double sided, 40 tracks per side, 15 sectors per track (1.2MB)
|-
|0xFA
|5.25" Single sided, 80 tracks per side, 8 sectors per track (320K)
|-
|0xFB
|3.5" Double sided, 80 tracks per side, 8 sectors per track (640K)
|-
|0xFC
|5.25" Single sided, 40 tracks per side, 9 sectors per track (180K)
|-
|0xFD
|5.25" Double sided, 40 tracks per side, 9 sectors per track (360K). Also used for 8".
|-
|0xFE
|5.25" Single sided, 40 tracks per side, 8 sectors per track (160K). Also used for 8".
|-
|0xFF
|5.25" Double sided, 40 tracks per side, 8 sectors per track (320K)
|-
|}
Same value of media descriptor should be repeated as first byte of each copy of FAT.
Certain operating systems ([[MSX-DOS]] version 1.0) ignore boot sector parameters altogether and use media descriptor value from the first byte of FAT to determine file system parameters.
|-
|align="right"|0x16
|align="right"|2
|Sectors per File Allocation Table for FAT12/FAT16
|-
|align="right"|0x18
|align="right"|2
|Sectors per track
|-
|align="right"|0x1a
|align="right"|2
|Number of heads
|-
|align="right"|0x1c
|align="right"|4
|Hidden sectors
|-
|align="right"|0x20
|align="right"|4
|Total sectors (if greater than 65535; otherwise, see offset 0x13)
|}
 
[[Cygwin]] uses "<code>EA&#x2420;DATA.&#x2420;SF</code>" files as well.
Further structure used by FAT12 and FAT16, also known as ''Extended BIOS Parameter Block'':
 
=== <span id="LFN"></span><span id="VFAT"></span><span id="UVFAT"></span>Long file names ===
{| class="wikitable"
<!-- use LFN anchor for generic FAT long filename solutions and VFAT for Microsoft's VFAT -->
!width="5%"|Byte Offset
!width="5%"|Length (bytes)
!width="40%"|Description
|-
|align="right"|0x24
|align="right"|1
|Physical drive number
|-
|align="right"|0x25
|align="right"|1
|Reserved ("current head")
In Windows NT
bit 0 is a dirty flag to request chkdsk at boot time.
bit 1 requests surface scan too.<ref name="KB140418">{{cite web | url=http://support.microsoft.com/kb/140418 | title=Detailed Explanation of FAT Boot Sector | accessdate=2008-11-21}}</ref>
|-
|align="right"|0x26
|align="right"|1
|Extended boot signature. Value is 0x29<ref name="msdosref" /> or 0x28.
|-
|align="right"|0x27
|align="right"|4
|ID (serial number)
|-
|align="right"|0x2b
|align="right"|11
|Volume Label, padded with blanks (0x20).
|-
|align="right"|0x36
|align="right"|8
|FAT file system type, padded with blanks (0x20), e.g.: "FAT12&nbsp;&nbsp;&nbsp;", "FAT16&nbsp;&nbsp;&nbsp;". This is not meant to be used to determine drive type, however, some utilities use it in this way.
|-
|align="right"|0x3e
|align="right"|448
|Operating system boot code
|-
|align="right"|0x1FE
|align="right"|2
|Boot sector signature (0x55 0xAA)
|}
 
One of the [[user experience]] goals for the designers of [[Windows 95]] was the ability to use [[long filename]]s (LFNs—up to 255 [[UTF-16]] [[code unit]]s long),<ref group="nb" name="NB_LFN_UNI"/> in addition to classic [[8.3 filename]]s (SFNs). For [[backward compatibility|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.
The boot sector is portrayed here as found on e.g. an OS/2 1.3 boot diskette. Earlier versions used a shorter BIOS Parameter Block and their boot code would start earlier (for example at offset 0x2b in OS/2 1.1).
 
This transparent method to store long file names in the existing FAT file systems without altering their data structures is usually known as '''[[VFAT long filename|VFAT]]''' (for "Virtual FAT") after the Windows 95 [[VxD|virtual device driver]].<ref group="nb" name="NB_VFAT_Name" />
Further structure used by FAT32:
 
Non VFAT-enabled operating systems can still access the files under their short file name alias without restrictions; however, the associated long file names may be lost when files with long filenames are copied under non VFAT-aware operating systems.
{| class="wikitable"
!width="5%"|Byte Offset
!width="5%"|Length (bytes)
!width="40%"|Description
|-
|align="right"|0x24
|align="right"|4
|Sectors per file allocation table
|-
|align="right"|0x28
|align="right"|2
|FAT Flags
|-
|align="right"|0x2a
|align="right"|2
|Version
|-
|align="right"|0x2c
|align="right"|4
|Cluster number of root directory start
|-
|align="right"|0x30
|align="right"|2
|Sector number of FS Information Sector
|-
|align="right"|0x32
|align="right"|2
|Sector number of a copy of this boot sector
|-
|align="right"|0x34
|align="right"|12
|Reserved
|-
|align="right"|0x40
|align="right"|1
|Physical Drive Number
|-
|align="right"|0x41
|align="right"|1
|Reserved
|-
|align="right"|0x42
|align="right"|1
|Extended boot signature.
|-
|align="right"|0x43
|align="right"|4
|ID (serial number)
|-
|align="right"|0x47
|align="right"|11
|Volume Label
|-
|align="right"|0x52
|align="right"|8
|FAT file system type: "FAT32&nbsp;&nbsp;&nbsp;"
|-
|align="right"|0x5a
|align="right"|420
|Operating system boot code
|-
|align="right"|0x1FE
|align="right"|2
|Boot sector signature (0x55 0xAA)
|}
 
In Windows&nbsp;NT, support for VFAT long filenames began with version [[Windows NT 3.5|3.5]].
====Exceptions====
The implementation of FAT used in [[MS-DOS]] for the [[Apricot PC]] had a different boot sector layout, to accommodate that computer's non-IBM compatible BIOS. The jump instruction and OEM name were omitted, and the MS-DOS file system parameters (offsets 0x0B - 0x17 in the standard sector) were located at offset 0x50. Later versions of Apricot MS-DOS gained the ability to read and write disks with the standard boot sector in addition to those with the Apricot one.
 
Linux provides a VFAT filesystem driver to work with FAT volumes with VFAT long filenames. For some time, a [[UVFAT]] driver was available to provide combined support for [[#UMSDOS|UMSDOS]]-style permissions with VFAT long filenames.
[[DOS Plus]] on the [[BBC Master]] 512 did not use conventional boot sectors at all. Data disks omitted the boot sector and began with a single copy of the FAT (the first byte of the FAT was used to determine disk capacity) while boot disks began with a miniature [[Advanced Disc Filing System|ADFS]] file system containing the boot loader, followed by a single FAT. It could also access standard PC disks formatted to 180 KB or 360 KB, again using the first byte of the FAT to determine capacity.
 
[[OS/2]] added long filename support to FAT using [[FAT extended file attributes|extended attributes]] (EA) before the introduction of VFAT. Thus, VFAT long filenames are invisible to OS/2, and EA long filenames are invisible to Windows; therefore, experienced users of both operating systems would have to manually rename the files.
===File Allocation Table===
A partition is divided up into identically sized '''clusters''', small blocks of contiguous space. Cluster sizes vary depending on the type of FAT file system being used and the size of the partition, typically cluster sizes lie somewhere between 2 KB and 32 KB. Each file may occupy one or more of these clusters depending on its size; thus, a file is represented by a chain of these clusters (referred to as a [[Linked list#Singly-linked list|singly linked list]]). However these clusters are not necessarily stored adjacent to one another on the disk's surface but are often instead ''fragmented'' throughout the Data Region.
 
[[Human68K]] supported up to [[18.3 filename]]s and ([[Shift JIS]]) [[Kanji]] characters in a proprietary FAT file system variant.
The '''File Allocation Table''' ('''FAT''') is a list of entries that map to each cluster on the partition. Each entry records one of five things:
* the cluster number of the next cluster in a chain
* a special ''end of clusterchain'' (''EOC'') entry that indicates the end of a chain
* a special entry to mark a bad cluster
* a special entry to mark a reserved cluster{{Fact|date=July 2007}}<!-- which microsoft document mentions this? -->
* a zero to note that the cluster is unused
 
In order to support [[Java (programming language)|Java]] applications, the [[FlexOS]]-based [[IBM 4690 OS]] version 2 introduced its own [[virtual file system]] (VFS) architecture to store long filenames in the FAT file system in a backwards-compatible fashion. If enabled, the virtual filenames (VFN) are available under separate logical drive letters, whereas the real filenames (RFN) remain available under the original drive letters.<ref name="IBM_4690_Programming_Guide" />
Each version of the FAT file system uses a different size for FAT entries. The size is indicated by the name, for example the FAT16 file system uses 16 bits for each entry while the FAT32 file system uses 32 bits. Only 28 of these are actually used, however. This difference means that the File Allocation Table of a FAT32 system can map a greater number of clusters than FAT16, allowing for larger partition sizes with FAT32. This also allows for more efficient use of space than FAT16, because on the same hard drive a FAT32 table can address smaller clusters which means less wasted space.
 
=== Forks and alternate data streams ===
FAT entry values:
{{Unreferenced section|date=August 2025}}
{| class="wikitable"
The FAT file system itself is not designed for supporting [[fork (file system)|alternate data streams]] (ADS), but some operating systems that heavily depend on them have devised various methods for handling them on FAT volumes. 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]]).
!width="5%"|FAT12
!width="5%"|FAT16
!width="7%"|FAT32
!width="20%"|Description
|-
|0x000
|0x0000
|0x?0000000
|Free Cluster
|-
|0x001
|0x0001
|0x?0000001
|Reserved value; do not use
|-
|0x002 - 0xFEF
|0x0002 - 0xFFEF
|0x?0000002 - 0x?FFFFFEF
|Used cluster; value points to next cluster
|-
|0xFF0 - 0xFF6
|0xFFF0 - 0xFFF6
|0x?FFFFFF0 - 0x?FFFFFF6
|Reserved values; do not use<ref name="msdosref" />.
|-
|0xFF7
|0xFFF7
|0x?FFFFFF7
|Bad sector in cluster or reserved cluster
|-
|0xFF8 - 0xFFF
|0xFFF8 - 0xFFFF
|0x?FFFFFF8 - 0x?FFFFFFF
|Last cluster in file
|}
 
Mac&nbsp;OS using [[PC Exchange]] stores its various dates, file attributes and long filenames in a [[hidden file]] called "<code>FINDER.DAT</code>", and [[resource fork]]s (a common Mac&nbsp;OS ADS) in a subdirectory called "<code>RESOURCE.FRK</code>", in every directory where they are used. From PC&nbsp;Exchange&nbsp;2.1 onwards, they store the Mac&nbsp;OS long filenames as standard FAT long filenames and convert FAT filenames longer than 31 characters to unique 31-character filenames, which can then be made visible to Macintosh applications.
Note that FAT32 uses only 28 bits of the 32 possible bits. The upper 4 bits are usually zero but are reserved and should be left untouched. In the table above these are denoted by a question mark.
 
[[macOS]] stores [[resource fork]]s and metadata (file attributes, other ADS) using [[AppleDouble format]] in a hidden file with a name constructed from the owner filename prefixed with "<code>._</code>", and [[Finder (software)|Finder]] stores some folder and file metadata in a hidden file called "<code>[[.DS_Store]]</code>" (but note that Finder uses <code>.DS_Store</code> even on macOS' native filesystem, [[HFS+]]).
The first cluster of the Data Region is cluster #2. That leaves the first two entries of the FAT unused. In the first byte of the first entry a copy of the media descriptor is stored. The remaining 8 bits (if FAT16), or 20 bits (if Fat32) of this entry are 1. In the second entry the end-of-cluster-chain marker is stored. The high order two bits of the second entry are sometimes, in the case of FAT16 and FAT32, used for dirty volume management: high order bit 1: last shutdown was clean; next highest bit 1: during the previous mount no disk I/O errors were detected.<ref>{{cite web | url=http://www.win.tue.nl/~aeb/linux/fs/fat/fat-1.html | title=The FAT filesystem | author=Andries E. Brouwer | date=2002-09-20 | accessdate=2006-10-14}}</ref>
 
=== <span id="UMSDOS"></span>UMSDOS permissions and filenames ===
===Directory table===
{{further|FAT filesystem and Linux}}
A '''directory table''' is a special type of file that represents a directory (also known as a folder). Each file or directory stored within it is represented by a 32-byte entry in the table. Each entry records the name, extension, attributes ([[archive bit|archive]], directory, hidden, read-only, system and volume), the date and time of creation, the address of the first cluster of the file/directory's data and finally the size of the file/directory.
Aside from the Root Directory Table in FAT12 and FAT16 file systems, which occupies the special ''Root Directory Region'' ___location, all Directory Tables are stored in the Data Region. The actual number of entries in a directory stored in the Data Region can grow by adding another cluster to the chain in the FAT.
 
Early Linux distributions also supported a format known as [[UMSDOS]], a FAT variant with Unix file attributes (such as long file name and access permissions) stored in a separate file called "<code>--linux-.---</code>". UMSDOS fell into disuse after [[#VFAT|VFAT]] was released and it is not enabled by default in [[Linux]] from version 2.5.7 onwards.<ref name="Linux_ChangeLog257" /> For some time, Linux also provided combined support for UMSDOS-style permissions and VFAT long filenames through [[UVFAT]].
Legal characters for DOS file names include the following:
* Upper case letters <tt>A</tt>&ndash;<tt>Z</tt>
* Numbers <tt>0</tt>&ndash;<tt>9</tt>
* Space (though trailing spaces in either the base name or the extension are considered to be padding and not a part of the file name, also filenames with space in them could not be used on the DOS command line prior to Windows 95 because of the lack of a suitable escaping system)
* <tt>! # $ % & ' ( ) - @ ^ _ ` { } ~ </tt>
* Values 128&ndash;255
 
=== <span id="FAT16+"></span><span id="FAT32+"></span><span id="FAT32B"></span>FAT+ ===
This excludes the following [[ASCII]] characters:
In 2007 the open '''FAT+''' draft proposed how to store [[Large file support|larger files]] up to 256&nbsp;GB minus 1&nbsp;byte, or 274,877,906,943 (2<sup>38</sup>&nbsp;−&nbsp;1) bytes, on slightly modified and otherwise backward-compatible FAT32 volumes,<ref name="DRDOS_FAT+_R2" /> but imposes a risk that disk tools or FAT32 implementations not aware of this extension may truncate or delete files exceeding the normal FAT32 file size limit. Support for '''FAT32+''' and '''FAT16+''' is limited to some versions of [[DR-DOS]] and not available in mainstream operating systems.<ref>{{cite web |url=http://www.drdosprojects.de/ |title=DR-DOS/OpenDOS Enhancement Project |first=Udo |last=Kuhnt |date=July 21, 2011 |access-date=2015-04-20 |archive-date=2016-07-06 |archive-url=https://web.archive.org/web/20160706205139/http://www.drdosprojects.de/ |url-status=live }}</ref> (This extension is critically incompatible with the <code>/EAS</code> option of the FAT32.IFS method to store [[FAT extended file attributes|OS/2 extended attributes]] on FAT32 volumes.)
* <tt>" * / : < > ? \ | </tt><br>Windows/MSDOS has no shell [[escape character#Bourne shell|escape character]]
* <tt>+ , . ; = [ ]</tt><br> They are allowed in long file names only.
* Lower case letters <tt>a</tt>&ndash;<tt>z</tt><br>Stored as <tt>A</tt>&ndash;<tt>Z</tt>. Allowed in long file names.
* Control characters 0&ndash;31
* Value 127 (DEL)
 
== Derivatives ==
The DOS file names are in the [[Code page|OEM character set]].
 
=== Turbo FAT ===
Directory entries, both in the Root Directory Region and in subdirectories, are of the following format (see also [[8.3_filename]]):
{{Main|Turbo FAT}}
 
In its [[NetWare File System]] ([[NWFS]]) [[Novell]] implemented a heavily modified variant of a FAT file system for the [[NetWare]] operating system. For larger files it utilized a performance feature named [[Turbo FAT]].
{| class="wikitable"
!width="5%"|Byte Offset
!width="5%"|Length
!width="40%"|Description
|-
|align="right"|0x00
|align="right"|8
|DOS file name (padded with spaces)
 
=== FATX ===
The first byte can have the following special values:
<!-- NB. The header "FATX" is used in redirects to this page. -->
{| class="wikitable"
<!-- {{Main|FATX}} should be created instead of further expanding this FATX section -->
|0x00
|Entry is available and no subsequent entry is in use
|-
|0x05
|Initial character is actually 0xE5
|-
|0x2E
|'Dot' entry; either '<tt>.</tt>' or '<tt>..</tt>'
|-
|0xE5
|Entry has been previously erased and is available. File [[undelete]] utilities must replace this character with a regular character as part of the undeletion process.
|}
|-
|align="right"|0x08
|align="right"|3
|DOS file extension (padded with spaces)
|-
|align="right"|0x0b
|align="right"|1
|File Attributes
{| class="wikitable"
!width="5%"|Bit
!width="5%"|Mask
!width="40%"|Description
|-
|0
|0x01
|Read Only
|-
|1
|0x02
|Hidden
|-
|2
|0x04
|System
|-
|3
|0x08
|Volume Label
|-
|4
|0x10
|Subdirectory
|-
|5
|0x20
|[[Archive bit|Archive]]
|-
|6
|0x40
|Device (internal use only, never found on disk)
|-
|7
|0x80
|Unused
|}
An attribute value of 0x0F is used to designate a long file name entry.
|-
|align="right"|0x0c
|align="right"|1
|Reserved; two bits are used by NT and later versions to encode case information (see below); otherwise 0<ref name="LongSpec">{{cite web | url=http://www.teleport.com/~brainy/lfn.htm | title=Long Filename Specification | author=vinDaci | date=1998-01-06 | accessdate=2007-03-13 }}</ref>
|-
|align="right"|0x0d
|align="right"|1
|Create time, fine resolution: 10ms units, values from 0 to 199.
|-
|align="right"|0x0e
|align="right"|2
|Create time. The hour, minute and second are encoded according to the following bitmap:
{| class="wikitable"
!width="5%"|Bits
!width="40%"|Description
|-
|15-11
|Hours (0-23)
|-
|10-5
|Minutes (0-59)
|-
|4-0
|Seconds/2 (0-29)
|}
Note that the ''seconds'' is recorded only to a 2 second resolution. Finer resolution for file creation is found at offset 0x0d.
|-
|align="right"|0x10
|align="right"|2
|Create date. The year, month and day are encoded according to the following bitmap:
{| class="wikitable"
!width="5%"|Bits
!width="40%"|Description
|-
|15-9
|Year (0 = 1980, 127 = 2107)
|-
|8-5
|Month (1 = January, 12 = December)
|-
|4-0
|Day (1 - 31)
|}
|-
|align="right"|0x12
|align="right"|2
|Last access date; see offset 0x10 for description.
|-
|align="right"|0x14
|align="right"|2
|EA-Index (used by [[OS/2]] and NT) in FAT12 and FAT16, High 2 bytes of first cluster number in FAT32
|-
|align="right"|0x16
|align="right"|2
|Last modified time; see offset 0x0e for description.
|-
|align="right"|0x18
|align="right"|2
|Last modified date; see offset 0x10 for description.
|-
|align="right"|0x1a
|align="right"|2
|First cluster in FAT12 and FAT16. Low 2 bytes of first cluster in FAT32. Entries with the Volume Label flag, subdirectory ".." pointing to root, and empty files with size 0 should have first cluster 0.
|-
|align="right"|0x1c
|align="right"|4
|File size in bytes. Entries with the Volume Label or Subdirectory flag set should have a size of 0.
|}
 
FATX is a family of file systems designed for [[Microsoft]]'s [[Xbox (console)|Xbox]] [[video game console]] [[hard disk]] drives and [[memory card]]s,<ref name="Xbox_FATX-Spec" /><ref name="Xbox_Linux" /> introduced in 2001.
Clusters are numbered from a cluster offset as defined above. That is, a zero in 0x1a would mean the first data segment is at:
 
While resembling the same basic design ideas as [[#FAT16|FAT16]] and [[#FAT32|FAT32]], the '''FATX16''' and '''FATX32''' on-disk structures are simplified, but fundamentally incompatible with normal FAT16 and FAT32 file systems, making it impossible for normal FAT file system drivers to mount such volumes.
<math>reservedSectors + (noofFAT * sectors2FAT) + (maxRootEntry * 32 / bytes2sector) - 2</math>
 
The non-bootable [[superblock (file systems)|superblock]] sector is 4&nbsp;KB in size and holds an 18&nbsp;byte large BPB-like structure completely different from normal [[FAT BPB|BPB]]s. Clusters are typically 16&nbsp;KB in size and there is only one copy of the FAT on the Xbox. Directory entries are 64&nbsp;bytes in size instead of the normal [[FAT directory entry|32&nbsp;bytes]]. Files can have filenames up to 42 characters long using the [[OEM character set]]<!-- not Unicode --> and be up to 4&nbsp;GB minus 1&nbsp;byte in size. The on-disk timestamps hold creation, modification and access dates and times but differ from FAT: in FAT, the [[Epoch (computing)|epoch]] is [[Epoch of 1980-01-01|1980]]; in FATX, the epoch is [[Epoch of 2000-01-01|2000]]. On the [[Xbox 360]], the epoch is 1980.<ref name="Xbox360_FATX" />
==== Long file names ====
 
=== exFAT ===
Long File Names (LFN) are stored on a FAT file system using a trick&mdash;adding (possibly multiple) additional entries into the directory before the normal file entry. The additional entries are marked with the Volume Label, System, Hidden, and Read Only attributes (yielding 0x0F), which is a combination that is not expected in the MS-DOS environment, and therefore ignored by MS-DOS programs and third-party utilities. Notably, a directory containing only volume labels is considered as empty and is allowed to be deleted; such a situation appears if files created with long names are deleted from plain DOS.
{{Main|exFAT}}
 
exFAT is a file system introduced with [[Windows Embedded CE 6.0]] in November 2006 and brought to the Windows&nbsp;NT family with [[Windows Vista Service Pack 1|Vista Service Pack 1]] and [[Windows XP Service Pack 3]] (or separate installation of Windows&nbsp;XP Update KB955704). It is loosely based on the File Allocation Table architecture, but incompatible, proprietary and protected by patents.<ref name="Microsoft_exFAT-License" />
Older versions of PC-DOS mistake LFN names in the root directory for the volume label, and are likely to display an incorrect label.
 
exFAT is intended for use on [[flash drive]]s and [[memory card]]s such as [[SDXC]] and [[Memory Stick XC]], where FAT32 is otherwise used. Vendors usually pre-format SDXC cards with it. Its main benefit is its exceeding of the 4&nbsp;GB file size limit, as file size references are stored with eight instead of four bytes, increasing the limit to 2<sup>64</sup>&nbsp;−&nbsp;1 bytes.
Each phony entry can contain up to 13 [[UTF-16]] characters (26 bytes) by using fields in the record which contain file size or time stamps (but not the starting cluster field, for compatibility with disk utilities, the starting cluster field is set to a value of 0. See [[8.3 filename]] for additional explanations). Up to 20 of these 13-character entries may be chained, supporting a maximum length of 255 UTF-16 characters.<ref name="LongSpec" />
 
Microsoft's [[Graphical user interface|GUI]] and command-line format utilities offer it as an alternative to [[NTFS]] (and, for smaller partitions, to [[#FAT16B|FAT16B]] and [[#FAT32|FAT32]]). The [[Master Boot Record|MBR]] [[partition type]] is <code>[[Partition type#PID_07h|0x07]]</code> (the same as used for [[Installable File System|IFS]], [[High Performance File System|HPFS]], and NTFS). Logical geometry information located in the [[Volume Boot Record|VBR]] is stored in a format not resembling any kind of BPB.
After the last [[UTF-16]] character, a 0x00 0x00 is added. Other not used characters are filled with 0xFF 0xFF.
 
In early 2010, the file system was [[reverse engineering|reverse-engineered]] by the [[SANS Institute]].<ref>{{Cite web|url=https://www.sans.org/reading-room/whitepapers/forensics/reverse-engineering-microsoft-exfat-file-system-33274|title=Reverse Engineering the Microsoft exFAT File System {{pipe}} SANS Institute|access-date=2021-03-20 |archive-date=2021-04-21 |archive-url=https://web.archive.org/web/20210421210732/https://www.sans.org/reading-room/whitepapers/forensics/reverse-engineering-microsoft-exfat-file-system-33274|url-status=live}}</ref> On August 28, 2019, Microsoft published the technical specification for exFAT so that it can be used in the Linux kernel and other operating systems.<ref>{{cite web
LFN entries use the following format:
| title = exFAT in the Linux kernel? Yes!
| url = https://cloudblogs.microsoft.com/opensource/2019/08/28/exfat-linux-kernel/
| website = Microsoft Open Source Blog
| date = August 28, 2019
| access-date = October 6, 2019
| archive-date = 2019-09-01
| archive-url = https://web.archive.org/web/20190901180353/https://cloudblogs.microsoft.com/opensource/2019/08/28/exfat-linux-kernel/
| url-status = live
}}</ref>
 
== <span id="Legal"></span>Patents ==
{| class="wikitable"
!width="5%"|Byte Offset
!width="5%"|Length
!width="40%"|Description
|-
|align="right"|0x00
|align="right"|1
|Sequence Number
|-
|align="right"|0x01
|align="right"|10
|Name characters (five [[UTF-16]] characters)
|-
|align="right"|0x0b
|align="right"|1
|Attributes (always 0x0F)
|-
|align="right"|0x0c
|align="right"|1
|Reserved (always 0x00)
|-
|align="right"|0x0d
|align="right"|1
|Checksum of DOS file name
|-
|align="right"|0x0e
|align="right"|12
|Name characters (six [[UTF-16]] characters)
|-
|align="right"|0x1a
|align="right"|2
|First cluster (always 0x0000)
|-
|align="right"|0x1c
|align="right"|4
|Name characters (two [[UTF-16]] characters)
|}
 
Microsoft applied for, and was granted, a series of patents for key parts of the FAT file system in the mid-1990s. All four pertain to long-filename extensions to FAT first seen in [[Windows 95]]: U.S. patent 5,579,517,<ref name=patent5579517>{{cite patent |inventor1-last=Reynolds |inventor1-first=Aaron R. |inventor2-last=Adler |inventor2-first=Dennis R. |inventor3-last=Lipe |inventor3-first=Ralph A. |inventor4-last=Pedrizetti |inventor4-first=Ray D. |title=Common name space for long and short filenames |issue-date=1996 |patent-number=5579517 |country-code=US }}</ref> U.S. patent 5,745,902,<ref>{{cite patent |inventor1-last=Miller |inventor1-first=Thomas J. |inventor2-last=Kimura |inventor2-first=Gary D. |title=Method and system for accessing a file using file names having different file name formats |issue-date=1998 |patent-number=5745902 |country-code=US }}</ref> U.S. patent 5,758,352,<ref name=patent5758352>{{cite patent |inventor1-last=Reynolds |inventor1-first=Aaron R. |inventor2-last=Adler |inventor2-first=Dennis R. |inventor3-last=Lipe |inventor3-first=Ralph A. |inventor4-last=Pedrizetti |inventor4-first=Ray D. |title=Common name space for long and short filenames |issue-date=1998 |patent-number=5758352 |country-code=US }}</ref> U.S. patent 6,286,013 (all expired since 2013).<ref>{{cite patent |inventor1-last=Reynolds |inventor1-first=Aaron R. |inventor2-last=Adler |inventor2-first=Dennis R. |inventor3-last=Lipe |inventor3-first=Ralph A. |inventor4-last=Pedrizetti |inventor4-first=Ray D. |title=Method and system for providing a common name space for long and short file names in an operating system |issue-date=1996 |patent-number=6286013 |country-code=US }}</ref>
If there are multiple LFN entries, required to represent a file name, firstly comes the ''last'' LFN entry (the last part of the filename). The sequence number here also has bit 7 (0x40) checked (this means the last LFN entry. However it's the first entry got when reading the directory file). The last LFN entry has the biggest sequence number which decreases in following entries. The ''first'' LFN entry has sequence number 1. Bit 8 (0x80) of the sequence number is used to indicate that the entry is deleted.
 
On December 3, 2003, Microsoft announced<ref name="Microsoft_2003_FAT32" /> that it would be offering licenses for use of its FAT specification and "associated intellectual property", at the cost of a {{US$|0.25}} royalty per unit sold, with a {{US$|250000}} maximum royalty per license agreement.<ref name="Microsoft_FAT_File_System" /> To this end, Microsoft cited four patents on the FAT file system as the basis of its intellectual property claims.
For example if we have filename "File with very long filename.ext" it would be formatted like this:
 
In the EFI FAT32 specification,<ref name="efi" /> Microsoft specifically grants a number of rights, which many readers have interpreted as permitting operating system vendors to implement FAT.<ref>{{cite web |url=https://www.youtube.com/watch?v=V2aq5M3Q76U | archive-url=https://ghostarchive.org/varchive/youtube/20211102/V2aq5M3Q76U| archive-date=2021-11-02 | url-status=live|title=EFI and Linux: the future is here, and it's awful |first=Matthew |last=Garrett |date=January 19, 2012 |work=[[linux.conf.au]] |publisher=YouTube |access-date=2014-01-12 }}{{cbignore}}</ref> Non-Microsoft patents affecting FAT include: U.S. patent 5,367,671, specific to the [[OS/2]] extended object attributes (expired in 2011).<ref>{{cite patent |inventor1-last=Feigenbaum |inventor1-first=Barry A. |inventor2-last=Miro |inventor2-first=Felix |title=System for accessing extended object attribute (EA) data through file name or EA handle linkages in path tables |issue-date=1994 |patent-number=5367671 |country-code=US }}</ref>
{| class="wikitable"
!width="5%"|Sequence number
!width="40%"|Entry data
|-
|align="right"|0x43
|align="left"|"me.ext"
|-
|align="right"|0x02
|align="left"|"y long filena"
|-
|align="right"|0x01
|align="left"|"File with ver"
|-
|align="right"|???
|align="left"|Normal 8.3 entry
|}
 
=== Challenges and lawsuits ===
A [[checksum]] also allows verification of whether a long file name matches the 8.3 name; such a mismatch could occur if a file was deleted and re-created using DOS in the same directory position. The checksum is calculated using the algorithm below. (Note that pFcbName is a pointer to the name as it appears in a regular directory entry, i.e. the first eight characters are the filename, and the last three are the extension. The dot is implicit. Any unused space in the filename is padded with spaces (ASCII 0x20) char. For example, "Readme.txt" would be <tt>"README&nbsp;&nbsp;TXT"</tt>.)
The Public Patent Foundation (PUBPAT) submitted evidence to the [[USPTO|US Patent and Trademark Office]] (USPTO) in 2004 disputing the validity of U.S. patent 5,579,517,<ref name=patent5579517 /> including prior art references from [[Xerox]] and IBM.<ref>{{cite web |url=http://www.pubpat.org/assets/files/MicrosoftFAT/Reynolds_517_Reexam_Request.pdf |title=PUBPAT's Request for Reexamination of Microsoft's FAT Patent |last=Ravicher |first=Daniel B. |publisher=Public Patent Foundation |date=April 15, 2004 |access-date=2014-01-12 |archive-date=2013-06-07 |archive-url=https://web.archive.org/web/20130607091551/http://www.pubpat.org/assets/files/MicrosoftFAT/Reynolds_517_Reexam_Request.pdf |url-status=live }}</ref> The USPTO opened an investigation and concluded by rejecting all claims in the patent.<ref>{{cite web |url=http://www.pubpat.org/assets/files/MicrosoftFAT/Reynolds_517_Rejected_040916.PDF |title=Patent Office's Office Action Rejecting Microsoft FAT Patent |author=USPTO |publisher=Public Patent Foundation |date=September 30, 2004 |access-date=2014-01-12 |author-link=USPTO |archive-date=2013-05-26 |archive-url=https://web.archive.org/web/20130526003038/http://www.pubpat.org/assets/files/MicrosoftFAT/Reynolds_517_Rejected_040916.PDF |url-status=live }}</ref> The next year, the USPTO further announced that following the re-examination process, it affirmed the rejection of '517 and additionally found U.S. patent 5,758,352<ref name=patent5758352 /> invalid on the grounds that the patent had incorrect assignees.
<source lang="c">
unsigned char lfn_checksum(const unsigned char *pFcbName)
{
int i;
unsigned char sum=0;
for (i=11; i; i--)
sum = ((sum & 1) << 7) + (sum >> 1) + *pFcbName++;
return sum;
}
</source>
 
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.<ref name="CNET_2006-01-10" />
If a filename contains only lowercase letters, or is a combination of a lowercase ''basename'' with an uppercase ''extension'', or vice-versa; and has no special characters, and fits within the 8.3 limits, a VFAT entry is not created on Windows NT and later versions such as XP. Instead, two bits in byte 0x0c of the directory entry are used to indicate that the filename should be considered as entirely or partially lowercase. Specifically, bit 4 means lowercase ''extension'' and bit 3 lowercase ''basename'', which allows for combinations such as "<tt>example.TXT</tt>" or "<tt>HELLO.txt</tt>" but not "<tt>Mixed.txt</tt>". Few other operating systems support this. This creates a backwards-compatibility problem with older Windows versions (95, 98, ME) that see all-uppercase filenames if this extension has been used, and therefore can change the name of a file when it is transported, such as on a USB flash drive. Current 2.6.x versions of Linux will recognize this extension when reading (source: kernel 2.6.18 /fs/fat/dir.c and fs/vfat/namei.c); the mount option ''shortname'' determines whether this feature is used when writing.<ref>{{cite web |url=http://linux.die.net/man/8/mount |title=mount(8): mount file system – Linux man page}}</ref>
 
In February 2009, Microsoft filed a [[patent infringement]] lawsuit against [[TomTom]] alleging that the device maker's products infringe on patents related to [[#VFAT|VFAT]] long filenames. As some TomTom products are based on [[Linux]], this marked the first time that Microsoft tried to enforce its patents against the Linux platform.<ref name="ARSTechnica_2009" /> The lawsuit was settled out of court the following month with an agreement that Microsoft be given access to four of TomTom's patents, that TomTom will drop support for the VFAT long filenames from its products, and that in return Microsoft not seek legal action against TomTom for the five-year duration of the settlement agreement.<ref name="CNET_2009" />
====Third-party extensions====
Before Microsoft added support for long filenames and creation/access time stamps, bytes 0x0C&ndash;0x15 of the directory entry were used by alternative operating systems to store additional metadata. These included:
 
In October 2010, Microsoft filed a patent infringement lawsuit against [[Motorola]] alleging several patents (including two of the VFAT patents) were not licensed for use in the [[Android (operating system)|Android]] operating system.<ref name="Microsoft_Motorola" /> They also submitted a complaint to the [[United States International Trade Commission|ITC]].<ref name="ARSTechnica_2010" />
{| class="wikitable"
Developers of open source software have designed methods intended to circumvent Microsoft's patents.<ref name="ArsTechnica_2009" /><ref name="DesktopLinux_2009" />
!width="5%"|Byte Offset
!width="5%"|Length
!width="10%"|System
!width="30%"|Description
|-
|align="right"|0x0C
|align="right"|2
|[[RISC OS]]
|File type, 0x000 - 0xFFF
|-
|align="right"|0x0C
|align="right"|1
|[[DOS Plus]]
|User-defined file attributes F1-F4
{| class="wikitable"
!width="5%"|Bit
!width="5%"|Mask
!width="40%"|Description
|-
|7
|0x80
|F1
|-
|6
|0x40
|F2
|-
|5
|0x20
|F3
|-
|4
|0x10
|F4
|}
|-
|align="right"|0x0C
|align="right"|1
|[[MSX-DOS]] 2
|For a deleted file, the original first character of the filename.
|-
|align="right"|0x0D
|align="right"|1
|[[DR-DOS]]
|For a deleted file, the original first character of the filename.
|-
|align="right"|0x0E
|align="right"|2
|DR-DOS and [[FlexOS]]
|Encrypted file password
|-
|align="right"|0x0E
|align="right"|2
|[[ANDOS]]
|File address in the memory
|-
|align="right"|0x10
|align="right"|4
|DR-DOS 7
|For a deleted file, its original file time and date; deleted files have their normal time and date fields set to the time of deletion
|-
|align="right"|0x12
|align="right"|2
|DR-DOS 6 and FlexOS
|File owner ID
|-
|align="right"|0x14
|align="right"|2
|DR-DOS and FlexOS
|File permissions bitmap (execute permissions are only used by FlexOS):
{| class="wikitable"
!width="5%"|Bit
!width="5%"|Mask
!width="40%"|Description
|-
|0
|0x0001
|Owner delete requires password
|-
|1
|0x0002
|Owner execute requires password
|-
|2
|0x0004
|Owner write requires password
|-
|3
|0x0008
|Owner read requires password
|-
|4
|0x0010
|Group delete requires password
|-
|5
|0x0020
|Group execute requires password
|-
|6
|0x0040
|Group write requires password
|-
|7
|0x0080
|Group read requires password
|-
|8
|0x0100
|World delete requires password
|-
|9
|0x0200
|World execute requires password
|-
|10
|0x0400
|World write requires password
|-
|11
|0x0800
|World read requires password
|-
|}
|}
 
In 2013, patent EP0618540 "common name space for long and short filenames" (expired since 2014<ref>{{Cite patent|title=Common name space for long and short filenames|gdate=1994-03-31|url=https://patents.google.com/patent/EP0618540B1/en}} {{Cite web |url=https://patents.google.com/patent/EP0618540B1/en |title=EP0618540B1 - Common name space for long and short filenames - Google Patents |access-date=2021-05-07 |archive-date=2020-03-28 |archive-url=https://web.archive.org/web/20200328120538/https://patents.google.com/patent/EP0618540B1/en |url-status=bot: unknown }}</ref>) was invalidated in Germany.<ref>{{cite web |url=http://www.fosspatents.com/2013/12/federal-patent-court-of-germany.html |title=Federal Patent Court of Germany invalidates Microsoft FAT patent, appeals court may disagree |first=Florian |last=Müller |publisher=FOSS Patents |date=December 5, 2013 |access-date=2014-01-12 |archive-date=2014-01-04 |archive-url=https://web.archive.org/web/20140104122540/http://www.fosspatents.com/2013/12/federal-patent-court-of-germany.html |url-status=live }}</ref> After the appeal was withdrawn, this judgment became final on the 28th October 2015.<ref>{{cite web |url=https://www.ifross.org/artikel/bundespatentgericht-erkl-rt-vfat-patent-erneut-f-r-nichtig |title=Bundespatentgericht erklärt VFAT-Patent erneut für nichtig |first=Stefan |last=Labesius |publisher=ifrOSS |date=May 28, 2017 |access-date=2019-08-02 |archive-date=2019-08-02 |archive-url=https://web.archive.org/web/20190802132657/https://www.ifross.org/artikel/bundespatentgericht-erkl-rt-vfat-patent-erneut-f-r-nichtig |url-status=live }}</ref>
== FAT licensing ==
Microsoft applied for, and was granted, a series of patents for key parts of the FAT file system in the mid-1990s. Being almost universally compatible and well-understood, FAT is frequently chosen as an interchange format for [[flash media]] used in digital cameras and [[Personal digital assistant|PDAs]].
 
== See also ==
On [[2003-12-03]] Microsoft announced it would be offering licenses for use of its FAT specification and "associated intellectual property", at the cost of a US$0.25 royalty per unit sold, with a $250,000 maximum royalty per license agreement.<ref>{{cite web | url=http://www.microsoft.com/about/legal/intellectualproperty/search/details.mspx?ip_id=IDAEYWHD&keywords=fat | publisher=Microsoft |title=Intellectual Property Licensing – FAT File System}}</ref>
 
To this end, Microsoft cited four patents on the FAT file system as the basis of its intellectual property claims. All four pertain to long-filename extensions to FAT first seen in [[Windows 95]]:
* {{US patent|5745902}} - Method and system for accessing a file using file names having different file name formats. Filed [[July 6]], [[1992]]. This covered a means of generating and associating a short, 8.3 filename with long one (for example, "Microsoft.txt" with "MICROS~1.TXT") and a means of enumerating conflicting short filenames (for example, "MICROS~2.TXT" and "MICROS~3.TXT"). It is unclear whether this patent would cover an implementation of FAT without explicit long filename capabilities. [[Hard link]]s in [[Unix]] file systems do not appear to be [[prior art]]: deleting a FAT file via its long name will also remove its short name. Renaming a file to a "short" name also updates the long file name for coherency; similarly, renaming a file to a "long" name will allocate a new "short" name. In NTFS, hard links and dual names are separate concepts and each hard link has two names. Finally, at the API level, both names are always provided together when a directory lookup is requested from the system; they do not appear as two separate files and do not have to be "matched" to determine unique files.
* {{US patent|5579517}} - Common name space for long and short filenames. Filed for on [[1995-04-24]]. This covers the method of chaining together multiple consecutive [[8.3 filename|8.3 named]] directory entries to hold long filenames, with some of the entries specially marked to prevent their confusing older, long filename-unaware FAT implementations.
** The [[Public Patent Foundation]] successfully challenged this patent; the claims were rejected<ref>{{cite web | url=http://www.pubpat.org/Microsoft_517_Rejected.htm | title=At PUBPAT's request, patent office rejects Microsoft's FAT patent: Government Relies Heavily on Evidence Submitted by PUBPAT | publisher=Public Patent Foundation | date=2004-09-30 | accessdate=2006-10-14}}</ref> on [[2004-09-14]], due to prior disclosure<ref>{{cite web | url=http://news.com.com/Microsoft+FAT+patent+falls+flat/2100-1014_3-5390138.html | title=Microsoft FAT patent falls flat | date=2004-09-30 | author=Ina Fried | publisher=CNET News | accessdate=2006-10-14}}</ref> of the claimed techniques in patents {{US patent|5307494}} and {{US patent|5367671}}. This decision was later overturned by the Patent Office on [[2006-01-10]].
* {{US patent|5758352}} - Common name space for long and short filenames. Filed on [[1996-09-05]]. This is very similar to 5,579,517.
** The [[USPTO|Public Patent Foundation]] successfully challenged this patent (USPTO); The USPTO rejected this patent on [[2005-10-05]], on the grounds that "the six assignees <!-- [sic] --> names were incorrect".<ref>{{cite web | url=http://www.regdeveloper.co.uk/2005/10/05/microsoft_patent/ | title=Microsoft FAT patent rejected - again | author=Andrew Orlowski | publisher=The Register | date=2005-10-05 | accessdate=2006-10-14}}</ref><ref>{{cite web | url=http://www.out-law.com/default.aspx?page=6202 | title=Patent Office rejects two Microsoft FAT patents | publisher=out-law.com | date=2005-06-10 | accessdate=2006-10-14}}</ref> This decision was also later overturned by the Patent Office on [[2006-01-10]].
* {{US patent|6286013}} - Method and system for providing a common name space for long and short file names in an operating system. Filed on [[1997-01-28]]. This makes claims on the methods used when [[Windows 95]], [[Windows 98]] and Windows Me expose long filenames to their [[MS-DOS]] compatibility layer. It does not appear to affect any non-Microsoft FAT implementations.
 
Many technical commentators have concluded that these patents only cover FAT implementations that include support for long filenames, and that removable solid state media and consumer devices only using short names would be unaffected.
 
Additionally, in the document "Microsoft Extensible Firmware Initiative FAT 32 File System Specification, FAT: General Overview of On-Disk Format" published by Microsoft (version 1.03, [[2000-12-06]]), Microsoft specifically grants a number of rights, which many readers have interpreted as permitting operating system vendors to implement FAT.
 
Microsoft is not the only company to have applied for patents for parts of the FAT file system. Other patents affecting FAT include:
* {{US patent|5367671}} - System for accessing extended object attribute (EA) data through file name or EA handle linkages in path tables. Filed on [[1990-09-25]] by Barry A. Feigenbaum and Felix Miro of IBM, this makes claims on the methods used by [[OS/2]], [[Windows NT]], and [[Linux]] for storing extended attribute data in the "EA&nbsp;DATA.&nbsp;SF" file.
 
=== Appeal ===
As there was widespread call for these patents to be re-examined, the Public Patent Foundation (PUBPAT) submitted evidence to the [[USPTO|US Patent and Trade Office]] (USPTO) disputing the validity of these patents, including prior art references from [[Xerox]] and [[IBM]]. The USPTO acknowledged that the evidence raised "substantial new question[s] of patentability," and opened an investigation into the validity of Microsoft's FAT patents.<ref>{{cite web | url=http://www.theregister.co.uk/2004/06/14/ms_fat_patent_reexamined/ | title=Microsoft's war on GPL dealt patent setback | author=Andrew Orlowski | publisher=The Register | date=2004-06-14 | accessdate=2006-10-14}}</ref>
 
On [[2004-09-30]] the USPTO rejected all claims of {{US patent|5579517}}, based primarily on evidence provided by PUBPAT. Dan Ravicher, the foundation's executive director, said, "The Patent Office has simply confirmed what we already knew for some time now, Microsoft's FAT patent is bogus."
 
According to the PUBPAT press release, "Microsoft still has the opportunity to respond to the Patent Office's rejection. Typically, third party requests for re-examination, like the one filed by PUBPAT, are successful in having the subject patent either narrowed or completely revoked roughly 70% of the time."
 
On [[2005-10-05]] the Patent Office announced that, following the re-examination process, it had again rejected all claims of patent 5,579,517, and it additionally found {{US patent|5758352}} invalid on the grounds that the patent had incorrect assignees.
 
Finally, on [[2006-01-10]] the Patent Office ruled that features of Microsoft's implementation of the FAT system were "novel and non-obvious", reversing both earlier non-final decisions.<ref>{{cite web | url=http://news.com.com/Microsofts+file+system+patent+upheld/2100-1012_3-6025447.html | title=Microsoft's file system patent upheld | date=2006-01-10 | author=Anne Broache | publisher=CNET News | accessdate=2006-10-14}}</ref>
 
== See also ==
* [[Comparison of file systems]]
* [[Design of the FAT file system]]
* [[Drive letter assignment]]
* [[Software patent]]
* [[List of file systems]]
* [[Transaction-Safe FAT File System]]
* [[Rock Ridge]] and [[Joliet (file system)|Joliet]] &mdash; systems for CDs that add long file names similar to what VFAT did for FAT.
 
==Notes andNotes references==
<references group="nb">
<!--See http://en.wikipedia.org/wiki/Wikipedia:Footnotes for an explanation of how to generate footnotes using the <ref(erences/)> tags-->
<ref group="nb" name="NB_NCR_FAT">Sources differ in regard to the first NCR data entry terminal integrating support for the FAT file system. According to [[Stephen Manes]] and Paul Andrews, "Gates",<!--<ref name="Manes_1993_Gates" /> --> development was for a [[NCR 8200]] in late 1977, incorrectly classified as a floppy-based upgrade to the [[NCR 7200]], which had been released in 1975-11 ([[NCR 7200 model I|model I]] and [[NCR 7200 model IV|IV]]) and was built around an [[Intel 8080]] 8-bit processor, but was cassette-based only. However, the NCR Century 8200 was a 16-bit minicomputer, onto which several data entry terminals could be hooked up. [[Marc McDonald]] even remembered<!-- in 2012-08 --> a [[NCR 8500]], a mainframe of the Criterion series, which can be ruled out as well. Announced 1977-10 for shipment in 1978-02, NCR also introduced the [[NCR I-8100]] series including the 8080-based [[NCR I-8130]] and [[NCR I-8150]] models of small business systems featuring dual floppy disks. Other sources indicate that either the NCR 7200 series itself or the successor series were the actual target platform. [[NCR Basic Plus 6]] (based on [[Microsoft Extended BASIC-80]]) became available for the cassette-based [[NCR 7200 model VI]] in Q1/1977.<!-- https://books.google.com/books?id=XEToBl0e2NIC&printsec=frontcover --> The [[NCR 7500]] series was released in 1978, based on a similar 8080 hardware, but now including [[NCR 7520]] and [[NCR 7530|7530]] models featuring 8-inch diskettes. [[NCR Basic +6]], a precursor or adaptation of [[Standalone Disk BASIC-80]] was available for them at least since 1979. One source<!-- http://www.thecorememory.com/forum/index.php?topic=83.msg342#msg342 --> claims that a special NCR 7200 model variant with two 8-inch diskettes and Microsoft BASIC existed and was imported by NCR Sydney into Australia the least.</ref>
{{reflist|2}}
<ref group="nb" name="NB_VFAT_Name">A driver named [[#VFAT|VFAT]] appeared before [[Windows 95]], in [[Windows for Workgroups]] 3.11, but this older version was only used for implementing [[32-bit file access]] and did not support [[long file name]]s.</ref>
</references><references group="nb" /><!-- {{Reflist|group="nb"}} -->
 
== References ==
{{reflist|refs=
<ref name="Microsoft_1979_BASIC80-50">{{cite book |title=Xerox BASIC-80 – basic-80 reference manual |year=1979 |version=5.0 |publisher=[[Microsoft]], [[Xerox]] |id=610P70641 |url=http://bitsavers.trailing-edge.com/pdf/xerox/820-II/BASIC-80_5.0.pdf |access-date=2014-06-02<!--, 8101-530-07--> |archive-date=2016-03-04 |archive-url=https://web.archive.org/web/20160304120148/http://bitsavers.trailing-edge.com/pdf/xerox/820-II/BASIC-80_5.0.pdf |url-status=live }} (NB. For Microsoft (Standalone Disk / Disk / Extended / 8K) BASIC-80, (Standalone Disk / Extended) BASIC-86, BASIC Compiler, release 5.0)</ref>
<ref name="Microsoft_1979_BASIC80-51">{{cite book |title=MICROSOFT BASIC-80 version 5.0 reference manual / BASIC-80 Interpreter and Compiler Addendum Release 5.1 |year=1979 |version=5.1 |publisher=[[Microsoft]] |url=http://bitsavers.trailing-edge.com/pdf/xerox/820-II/BASIC-80_5.0.pdf |access-date=2014-06-02<!--, 8101-530-07--> |archive-date=2016-03-04 |archive-url=https://web.archive.org/web/20160304120148/http://bitsavers.trailing-edge.com/pdf/xerox/820-II/BASIC-80_5.0.pdf |url-status=live }} (NB. For Microsoft (Standalone Disk / Disk / Extended / 8K) BASIC-80, (Standalone Disk / Extended) BASIC-86, BASIC Compiler, release 5.1)</ref>
<ref name="BYTE_1980_86-DOS">{{cite magazine |title=86-DOS - 8086 OPERATING SYSTEM - $95 |author=Seattle Computer Products |author-link=Seattle Computer Products |magazine=[[Byte (magazine)|Byte]] |volume=5 |number=8 |date=August 1980 |publisher=[[BYTE Publications Inc.]] |issn=0360-5280 |id={{CODEN|BYTEDJ}} |type=Advertisement |page=173 |url=https://archive.org/stream/byte-magazine-1980-08/1980_08_BYTE_05-08_The_Forth_Language#page/n173/mode/2up |access-date=2013-08-18 }} [https://tech-insider.org/personal-computers/research/acrobat/8008-a.pdf] {{Webarchive|url=https://web.archive.org/web/20200201163325/https://tech-insider.org/personal-computers/research/acrobat/8008-a.pdf |date=2020-02-01 }} (NB. The SCP advertisement already calls the product ''86-DOS'', but does not mention a specific version number. Version 0.3 is known to be called 86-DOS already, so the name change must have taken place either for version 0.2 or immediately afterwards in August 1980.)</ref>
<ref name="Hunter_1983_Softalk">{{cite journal |first=David |last=Hunter |date=1983 |title=Tim Paterson – The roots of DOS |journal=Softalk for the IBM Personal Computer |issue=March 1983 |url=http://www.patersontech.com/dos/softalk.aspx |access-date=2014-06-02 |archive-url=https://web.archive.org/web/20190906120449/http://www.patersontech.com/dos/softalk.aspx |archive-date=September 6, 2019 |url-status=dead }}</ref>
<ref name="Manes_1993_Gates">{{cite book | first1=Stephen |last1=Manes |first2=Paul |last2=Andrews | year=1993 | title=Gates: How Microsoft's Mogul Reinvented an Industry—and Made Himself the Richest Man in America | publisher=Doubleday | isbn=0-385-42075-7}}</ref>
<ref name="IBM_1984_PCDOS30">IBM (1984). ''IBM PC DOS 3.0 announcement letter''.</ref>
<ref name="IBM_1985_Reference">IBM (1985). ''IBM PC DOS Technical Reference''. First Edition, P/N 6024181, dated February 1985.</ref>
<ref name="Ecma-107">{{cite web |url=http://www.ecma-international.org/publications/standards/Ecma-107.htm |title=Volume and File Structure of Disk Cartridges for Information Interchange |work=Standard ECMA-107 (2nd ed., June 1995) |publisher=[[Ecma International|ECMA]] |year=1995 |access-date=2011-07-30 |archive-date=2018-10-07 |archive-url=https://web.archive.org/web/20181007174227/http://ecma-international.org/publications/standards/Ecma-107.htm |url-status=live }}</ref>
<ref name="ISO_9293_1994">{{cite web |url=http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=21273 |title=Information technology – Volume and file structure of disk cartridges for information interchange |work=ISO/IEC 9293:1994 |publisher=[[International Organization for Standardization|ISO]] catalogue |year=1994 |access-date=2012-01-06 |archive-date=2012-01-17 |archive-url=https://web.archive.org/web/20120117180640/http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=21273 |url-status=live }}</ref>
<ref name="ISO_9293_1987">{{cite web |url=http://www.iso.org/iso/iso_catalogue/catalogue_ics/catalogue_detail_ics.htm?csnumber=16948 |title=Information processing – Volume and file structure of flexible disk cartridges for information interchange |work=ISO 9293:1987 |publisher=[[International Organization for Standardization|ISO]] catalogue |year=1987 |access-date=2012-01-06 |archive-date=2012-01-17 |archive-url=https://web.archive.org/web/20120117181849/http://www.iso.org/iso/iso_catalogue/catalogue_ics/catalogue_detail_ics.htm?csnumber=16948 |url-status=live }}</ref>
<ref name="Patent_5758352">{{cite web |url=https://patents.google.com/patent/US5758352A/en |date=May 26, 1998 |title=Common name space for long and short filenames |author-link1=Aaron R. Reynolds |first1=Aaron R. |last1=Reynolds |first2=Dennis R. |last2=Adler |first3=Ralph A. |last3=Lipe |first4=Ray D. |last4=Pedrizetti |first5=Jeffrey T. |last5=Parsons |first6=Rasipuram V. |last6=Arun |work=US Patent 5758352 |access-date=2025-06-25}}</ref>
<ref name="Duncan_1988_MS-DOS_Encyclopedia">{{cite book |title=The MS-DOS Encyclopedia: versions 1.0 through 3.2 |author-first1=Ray |author-last1=Duncan |author-first2=Steve |author-last2=Bostwick |author-first3=Keith |author-last3=Burgoyne<!-- |author-first4=Robert A. |author-last4=Byers |author-first5=Thom |author-last5=Hogan |author-first6=Jim |author-last6=Kyle |author-first7=Gordon |author-last7=Letwin |author-link7=Gordon Letwin |author-first8=Charles |author-last8=Petzold |author-link8=Charles Petzold |author-first9=Chip |author-last9=Rabinowitz |author-first10=Jim |author-last10=Tomlin |author-first11=Richard |author-last11=Wilton |author-first12=Van |author-last12=Wolverton |author-first13=William |author-last13=Wong |author-first14=JoAnne |author-last14=Woodcock |contribution=Technical advisors |contributor-first1=Mark |contributor-last1=Zbikowski |contributor-link1=Mark Zbikowski |contributor-first2=Paul |contributor-last2=Allen |contributor-link2=Paul Allen |contributor-first3=Steve |contributor-last3=Ballmer |contributor-link3=Steve Ballmer |contributor-first4=Reuben |contributor-last4=Borman |contributor-first5=Rob |contributor-last5=Borman |contributor-first6=John |contributor-last6=Butler |contributor-first7=Chuck |contributor-last7=Carroll |contributor-first8=Mark |contributor-last8=Chamberlain |contributor-first9=David |contributor-last9=Chell |contributor-first10=Mike |contributor-last10=Colee |contributor-first11=Mike |contributor-last11=Courtney |contributor-first12=Mike |contributor-last12=Dryfoos |contributor-first13=Rachel |contributor-last13=Duncan |contributor-first14=Kurt |contributor-last14=Eckhardt |contributor-first15=Eric |contributor-last15=Evans |contributor-first16=Rick |contributor-last16=Farmer |contributor-first17=Bill |contributor-last17=Gates |contributor-link17=Bill Gates |contributor-first18=Michael |contributor-last18=Geary |contributor-first19=Bob |contributor-last19=Griffin |contributor-first20=Doug |contributor-last20=Hogarth |contributor-first21=James W. |contributor-last21=Johnson |contributor-first22=Kaamel |contributor-last22=Kermaani |contributor-first23=Adrian |contributor-last23=King |contributor-first24=Reed |contributor-last24=Koch |contributor-first25=James |contributor-last25=Landowski |contributor-first26=Chris |contributor-last26=Larson |contributor-first27=Thomas |contributor-last27=Lennon |contributor-first28=Dan |contributor-last28=Lipkie |contributor-first29=Marc |contributor-last29=McDonald |contributor-link29=Marc McDonald |contributor-first30=Bruce |contributor-last30=McKinney |contributor-first31=Pascal |contributor-last31=Martin |contributor-first32=Estelle |contributor-last32=Mathers |contributor-first33=Bob |contributor-last33=Matthews |contributor-first34=David |contributor-last34=Melin |contributor-first35=Charles |contributor-last35=Mergentime |contributor-first36=Randy |contributor-last36=Nevin |contributor-first37=Dan |contributor-last37=Newell |contributor-first38=Tani |contributor-last38=Newell |contributor-first39=David |contributor-last39=Norris |contributor-first40=Mike |contributor-last40=O'Leary |contributor-first41=Bob |contributor-last41=O'Rear |contributor-link41=Bob O'Rear |contributor-first42=Mike |contributor-last42=Olsson |contributor-first43=Larry |contributor-last43=Osterman |contributor-first44=Ridge |contributor-last44=Ostling |contributor-first45=Sunil |contributor-last45=Pai |contributor-first46=Tim |contributor-last46=Paterson |contributor-link46=Tim Paterson |contributor-first47=Gary |contributor-last47=Perez |contributor-first48=Chris |contributor-last48=Peters |contributor-first49=Charles |contributor-last49=Petzold |contributor-link49=Charles Petzold |contributor-first50=John |contributor-last50=Pollock |contributor-first51=Aaron |contributor-last51=Reynolds |contributor-link51=Aaron R. Reynolds |contributor-first52=Darryl |contributor-last52=Rubin |contributor-first53=Ralph |contributor-last53=Ryan |contributor-first54=Karl |contributor-last54=Schulmeisters |contributor-first55=Rajen |contributor-last55=Shah |contributor-first56=Barry |contributor-last56=Shaw |contributor-first57=Anthony |contributor-last57=Short |contributor-first58=Ben |contributor-last58=Slivka |contributor-first59=Jon |contributor-last59=Smirl |contributor-first60=Betty |contributor-last60=Stillmaker |contributor-first61=John |contributor-last61=Stoddard |contributor-first62=Dennis |contributor-last62=Tillman |contributor-first63=Greg |contributor-last63=Whitten |contributor-first64=Natalie |contributor-last64=Yount |contributor-first65=Steve |contributor-last65=Zeck -->|date=1988 |edition=Completely reworked |publisher=[[Microsoft Press]] |___location=Redmond, Washington, USA |isbn=1-55615-049-0 |lccn=87-21452 |oclc=16581341}} (xix+1570 pages; 26&nbsp;cm) (NB. This edition was published in 1988 after extensive rework of the withdrawn 1986 first edition by a different team of authors. [https://www.pcjs.org/pubs/pc/reference/microsoft/mspl13/msdos/encyclopedia/] {{Webarchive|url=https://web.archive.org/web/20181014053041/https://www.pcjs.org/pubs/pc/reference/microsoft/mspl13/msdos/encyclopedia/ |date=2018-10-14 }})</ref>
<ref name="Schulman_1994_Undocumented-DOS">{{cite book |author-first1=Andrew |author-last1=Schulman |author-first2=Ralf D. |author-last2=Brown |author-link2=Ralf D. Brown |author-first3=David |author-last3=Maxey |author-first4=Raymond J. |author-last4=Michels |author-first5=Jim |author-last5=Kyle |title=Undocumented DOS: A programmer's guide to reserved MS-DOS functions and data structures - expanded to include MS-DOS 6, Novell DOS and Windows 3.1 |publisher=[[Addison Wesley]] |edition=2 |date=1994 |orig-year=November 1993<!-- first printing --> |isbn=0-201-63287-X |___location=Reading, Massachusetts |page=[https://archive.org/details/undocumenteddosp00andr_0/page/11 11] |url=https://archive.org/details/undocumenteddosp00andr_0/page/11}} (xviii+856+vi pages, 3.5"-floppy) Errata: [https://web.archive.org/web/20190417215556/http://www.cs.cmu.edu/afs/cs/user/ralf/pub/books/UndocumentedDOS/errata.ud2][https://web.archive.org/web/20190417212906/https://www.pcjs.org/pubs/pc/programming/Undocumented_DOS/#errata-2nd-edition]</ref>
<ref name="Wallace_1992_Harddrive">Wallace, James; Erickson, Jim; (1992); ''Hard Drive: Bill Gates and the Making of the Microsoft Empire'', John Wiley & Sons, {{ISBN|0-471-56886-4}}</ref>
<ref name="Paterson_2007_Design-DOS">{{cite web |url=http://dosmandrivel.blogspot.com/2007/09/design-of-dos.html |date=September 30, 2007 |author-link=Tim Paterson |first=Tim |last=Paterson |title=Design of DOS |work=DosMan Drivel |access-date=2011-07-04 |archive-date=2013-01-20 |archive-url=https://web.archive.org/web/20130120075653/http://dosmandrivel.blogspot.com/2007/09/design-of-dos.html |url-status=live }}</ref>
<ref name="Norton2">[[Peter Norton|Norton, Peter]]; (1986); ''Inside the IBM PC, Revised and Enlarged'', Brady, {{ISBN|0-89303-583-1}}, p. 157</ref>
<ref name="Jenkinson_2000_Forensic">{{cite book |first1=Brian |last1=Jenkinson |last2=Sammes |first2=A. J. |title=Forensic Computing: A Practitioner's Guide (Practitioner Series) |url=https://archive.org/details/forensiccomputin00samm_915 |url-access=limited |publisher=Springer |___location=Berlin |year=2000 |page=[https://archive.org/details/forensiccomputin00samm_915/page/n163 157] |isbn=1-85233-299-9 |quote=... only 2^12 (that is, 4096) allocation units or clusters can be addressed. In fact, the number is less than this, since 000h and 001h are not used and FF0h to FFFh are reserved or used for other purposes, leaving 002h to FEFh (2 to 4079) as the range of possible clusters.}}</ref>
<ref name="efi">{{cite web |url=http://download.microsoft.com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c/fatgen103.doc |title=Microsoft Extensible Firmware Initiative FAT32 File System Specification, FAT: General Overview of On-Disk Format |publisher=[[Microsoft]] |date=March 30, 2011 |access-date=2018-12-21 |archive-date=2021-07-23 |archive-url=https://web.archive.org/web/20210723100623/http://download.microsoft.com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c/fatgen103.doc |url-status=live }}</ref>
<ref name="Brouwer_2002_Partition-IDs">{{cite web |url=http://www.win.tue.nl/~aeb/partitions/partition_types-1.html |title=List of partition identifiers for PCs |first=Andries |last=Brouwer |access-date=2012-01-11 |archive-date=2019-04-23 |archive-url=https://web.archive.org/web/20190423204723/http://www.win.tue.nl/~aeb/partitions/partition_types-1.html |url-status=live }}</ref>
<ref name="Brouwer_2002_Logical_FAT">{{cite web |url=https://www.win.tue.nl/~aeb/partitions/partition_types-2.html#ss2.6 |title=Properties of partition tables |first=Andries |last=Brouwer |access-date=2012-01-11 |archive-date=2019-04-23 |archive-url=https://web.archive.org/web/20190423204726/https://www.win.tue.nl/~aeb/partitions/partition_types-2.html#ss2.6 |url-status=live }}</ref>
<ref name="Microsoft_2003_CC736327">{{cite web |url=https://technet.microsoft.com/en-us/library/cc736327(v=ws.10).aspx |title=Dskprobe Overview: Data Recovery |publisher=[[Microsoft TechNet]] |date=March 28, 2003 |access-date=2011-08-03 |archive-date=2011-07-03 |archive-url=https://web.archive.org/web/20110703230849/http://technet.microsoft.com/en-us/library/cc736327(v=WS.10).aspx |url-status=live }}</ref>
<ref name="Microsoft_2004_KB120138">{{cite web |url=http://c-bit.org/kb/120138/EN-US/ |title=Errors Creating Files or Folders in the Root Directory |publisher=Microsoft Help and Support |date=December 16, 2004 |access-date=2006-10-14 |archive-date=2020-07-31 |archive-url=https://web.archive.org/web/20200731141634/http://c-bit.org/kb/120138/EN-US/ |url-status=live }}</ref>
<ref name="Microsoft_1998_CC768180">{{cite web |url=https://technet.microsoft.com/en-us/library/cc768180.aspx |title=Windows 98 Resource Kit – Chapter 10 – Disks and File Systems |publisher=[[Microsoft TechNet]] |year=1998 |access-date=2012-07-16 |archive-date=2012-05-01 |archive-url=https://web.archive.org/web/20120501150154/http://technet.microsoft.com/en-us/library/cc768180.aspx |url-status=live }}</ref>
<ref name="MKDOSFS">{{cite web |url=http://www.die.net/doc/linux/man/man8/mkdosfs.8.html |title=mkdosfs man page |access-date=2006-11-21 |archive-date=2006-10-07 |archive-url=https://web.archive.org/web/20061007182356/http://www.die.net/doc/linux/man/man8/mkdosfs.8.html |url-status=live }}</ref>
<ref name="Microsoft_2007_KB184006">{{cite web |url=http://c-bit.org/kb/184006/EN-US/ |title=Limitations of FAT32 File System |quote=Clusters cannot be 64&nbsp;kilobytes (<abbr title=""kilobyte"; should be "kilobyte" (1024 or 2×512&nbsp;bytes)">KB</abbr>) or larger |date=March 26, 2007 |publisher=[[Microsoft Knowledge Base]] |access-date=2011-08-21 |archive-date=2020-07-31 |archive-url=https://web.archive.org/web/20200731085746/http://c-bit.org/kb/184006/EN-US/ |url-status=live }}</ref>
<ref name="Microsoft_2007_KB314463">{{cite web |url=http://c-bit.org/kb/314463/EN-US/ |title=Limitations of the FAT32 File System in Windows XP |date=December 1, 2007 |publisher=[[Microsoft Knowledge Base]] |access-date=2011-08-21 |archive-date=2020-07-31 |archive-url=https://web.archive.org/web/20200731081921/http://c-bit.org/kb/314463/EN-US/ |url-status=live }}</ref>
<ref name="Eager_2000_Tavi">{{cite web |url=http://www.tavi.co.uk/os2pages/eadata.html |title=Implementation of extended attributes on the FAT file system |first=Bob |last=Eager |work=Tavi OS/2 pages |date=October 28, 2000 |access-date=2006-10-14 |archive-url=https://web.archive.org/web/20060613212300/http://www.tavi.co.uk/os2pages/eadata.html |archive-date=June 13, 2006 |url-status=dead }}</ref>
<ref name="Linux_ChangeLog257">{{cite web |url=https://www.kernel.org/pub/linux/kernel/v2.5/ChangeLog-2.5.7 |title=Release notes for v2.5.7 |publisher=The Linux Kernel archives |date=March 12, 2002 |access-date=2006-10-14 |archive-date=2006-04-15 |archive-url=https://web.archive.org/web/20060415030215/http://www.kernel.org/pub/linux/kernel/v2.5/ChangeLog-2.5.7 |url-status=live }}</ref>
<ref name="Xbox_FATX-Spec">{{cite web |url=http://www.free60.org/wiki/FATX |title=FATX Specification |publisher=free60 wiki |access-date=2011-08-16 |archive-date=2018-07-26 |archive-url=https://web.archive.org/web/20180726171806/http://free60.org/wiki/FATX |url-status=live }}</ref>
<ref name="Xbox_Linux">{{cite web |first1=Andrew |last1=de Quincey |first2=Lucien |last2=Murray-Pitts |version=0.13 |url=http://www.xbox-linux.org/wiki/Xbox_Partitioning_and_Filesystem_Details |title=Xbox partitioning and file system details |publisher=Xbox-Linux project |date=August 29, 2008 |access-date=2014-05-25 |archive-url=https://web.archive.org/web/20100617020539/http://www.xbox-linux.org/wiki/Xbox_Partitioning_and_Filesystem_Details |archive-date=June 17, 2010 |url-status=dead}}</ref>
<ref name="Xbox360_FATX">{{cite web |first=Michael |last=Steil |url=http://www.xbox-linux.org/wiki/Differences_between_Xbox_FATX_and_MS-DOS_FAT |title=Differences between Xbox FATX and MS-DOS FAT |publisher=Xbox-Linux project |date=February 26, 2008 |orig-year=2003<!-- 2003-11-30 --> |access-date=2014-05-25 |archive-url=https://web.archive.org/web/20100617022009/http://www.xbox-linux.org/wiki/Differences_between_Xbox_FATX_and_MS-DOS_FAT |archive-date=June 17, 2010 |url-status=dead}}</ref>
<ref name="Kelder_FAT32IFS074">Kelder, Henk; ''FAT32.TXT for FAT32.IFS version 0.74'' ({{cite web |url=http://macarlo.com/fat32v074.htm |title=@Macarlo, Inc |access-date=2012-01-14 |url-status=dead |archive-url=https://web.archive.org/web/20120330171510/http://macarlo.com/fat32v074.htm |archive-date=March 30, 2012 |df=mdy-all}}). Comment: This older version of the README file still discusses the old <code>0xEA</code> and <code>0xEC</code> magic values.</ref>
<ref name="Kelder_2003_FAT32IFS0913">Kelder, Henk; (2003); ''FAT32.TXT for FAT32.IFS version 0.9.13''. ([http://svn.netlabs.org/repos/fat32/branches/fat32-0.9/src/fat32.txt] {{Webarchive|url=https://web.archive.org/web/20130511141205/http://svn.netlabs.org/repos/fat32/branches/fat32-0.9/src/fat32.txt |date=2013-05-11 }}): "This byte [...] is not modified while running [[Windows 95]] and neighter ''[sic]'' by [[SCANDISK]] or [[DEFRAG]]. [...] If another program sets the value to <code>0x00</code> for a file that has [[extended attributes|EAs]] these EAs will no longer be found using DosFindFirst/Next calls only. The other [[OS/2]] calls for retrieving EAs (DosQueryPathInfo, DosQueryFileInfo and DosEnumAttribute) do not rely on this byte. Also the opposite could [...] occur. [...] In this situation only the performance of directory scans will be decreased. Both situations [...] are corrected by [[CHKDSK]]".</ref>
<ref name="DRDOS_FAT+_R2">{{cite web |title=FAT+ draft revision 2 |author-first1=Udo |author-last1=Kuhnt |author-first2=Luchezar I. |author-last2=Georgiev |author-first3=Jeremy |author-last3=Davis |date=2007 |format=FATPLUS.TXT |edition=2 |url=http://www.fdos.org/kernel/fatplus.txt |access-date=2015-08-05 |archive-url=https://web.archive.org/web/20150219123449/http://www.fdos.org/kernel/fatplus.txt |archive-date=February 19, 2015 |url-status=dead }}</ref>
<ref name="Microsoft_2006_ACCDATE">Microsoft (2006-11-15). [http://c-bit.org/kb/135481/EN-US/ Windows 95 CD-ROM CONFIG.TXT File] {{Webarchive|url=https://web.archive.org/web/20200731095231/http://c-bit.org/kb/135481/EN-US/ |date=2020-07-31 }} Article 135481, Revision: 1.1, retrieved 2011-12-22: "For each hard disk, specifies whether to record the date that files are last accessed. Last access dates are turned off for all drives when your computer is started in safe mode, and are not maintained for floppy disks by default. Syntax: <code>[[ACCDATE (CONFIG.SYS directive)|ACCDATE]]=drive1+|- [drive2+|-]...</code>"</ref>
<ref name="Eager_2000_EA">Eager, Bob; Tavi Systems (October 28, 2000); ''Implementation of extended attributes on the FAT file system'' ([http://www.tavi.co.uk/os2pages/eadata.html] {{Webarchive|url=https://web.archive.org/web/20060613212300/http://www.tavi.co.uk/os2pages/eadata.html |date=June 13, 2006 }})</ref>
<ref name="two">{{cite web|quote=The numbering starts with 2; the first two numbers, 0 and 1, are reserved. |url=http://www.patersontech.com/dos/Byte/InsideDos.htm#InsideDos_44 |title=An Inside Look at MS-DOS |year=1983 |publisher=[[Byte (magazine)|Byte]] |first=Tim |last=Paterson |access-date=2011-07-18 |url-status=dead |archive-url=https://web.archive.org/web/20110720115141/http://patersontech.com/Dos/Byte/InsideDos.htm |archive-date=July 20, 2011 |df=mdy}}</ref>
<ref name="Microsoft_2003_FAT32">[http://www.microsoft.com/presspass/press/2003/dec03/12-03ExpandIPPR.mspx Microsoft.com] {{webarchive|url=https://web.archive.org/web/20090822044026/http://www.microsoft.com/presspass/press/2003/dec03/12-03ExpandIPPR.mspx |date=August 22, 2009}}</ref>
<ref name="Microsoft_FAT_File_System">{{cite web |url=http://www.microsoft.com/iplicensing/productDetail.aspx?product%20title=FAT%20File%20System |archive-url=http://webarchive.loc.gov/all/20160921194326/http://www.microsoft.com/iplicensing/productDetail.aspx?product%20title=FAT%20File%20System |url-status=dead |archive-date=2016-09-21 |publisher=Microsoft |title= FAT File System |work=Intellectual Property Licensing}}</ref>
<ref name="Novell_1993_FYI.M.1101">{{citation |title=FYI – Installing DR DOS on NEC DOS 3.3 Partitions |publisher=Novell |date=January 5, 1993 |id=FYI.M.1101 |url=http://cd.textfiles.com/netwaresl/NOV_INFO/RNW93/10JAN93.MON |access-date=2014-08-12 |archive-date=2016-03-04 |archive-url=https://web.archive.org/web/20160304022753/http://cd.textfiles.com/netwaresl/NOV_INFO/RNW93/10JAN93.MON |url-status=live }}</ref>
<ref name="CNET_2006-01-10">{{cite web |url=http://www.cnet.com/news/microsofts-file-system-patent-upheld/ |title=Microsoft's file system patent upheld |date=January 10, 2006 |first=Anne |last=Broache |publisher=CNET News |access-date=2016-04-07 |archive-date=2016-05-03 |archive-url=https://web.archive.org/web/20160503195535/http://www.cnet.com/news/microsofts-file-system-patent-upheld/ |url-status=live }}</ref>
<ref name="ARSTechnica_2009">{{cite web |url=https://arstechnica.com/microsoft/news/2009/02/microsoft-sues-tomtom-over-fat-patents-in-linux-based-device.ars |title=Microsoft suit over FAT patents could open OSS Pandora's Box |last=Paul |first=Ryan |date=February 25, 2009 |access-date=2009-02-28 |publisher=arstechnica.com |archive-date=2009-02-27 |archive-url=https://web.archive.org/web/20090227181913/http://arstechnica.com/microsoft/news/2009/02/microsoft-sues-tomtom-over-fat-patents-in-linux-based-device.ars |url-status=live }}</ref>
<ref name="CNET_2009">{{cite web |url=http://news.cnet.com/8301-13860_3-10206988-56.html |title=Microsoft, TomTom settle patent dispute |last=Fried |first=Ina |date=March 30, 2009 |access-date=2009-08-22 |publisher=cnet.com |archive-date=2009-08-05 |archive-url=https://web.archive.org/web/20090805092526/http://news.cnet.com/8301-13860_3-10206988-56.html |url-status=live }}</ref>
<ref name="Microsoft_Motorola">{{cite web |url=https://www.scribd.com/doc/38550703/Micrsoft-Motorola-Patent-Suit |title=Microsoft Motorola Patent Suit |date=October 1, 2010 |access-date=2010-10-02 |archive-date=2010-10-06 |archive-url=https://web.archive.org/web/20101006014136/http://www.scribd.com/doc/38550703/Micrsoft-Motorola-Patent-Suit |url-status=live }}</ref>
<ref name="ARSTechnica_2010">{{cite web |url=https://arstechnica.com/microsoft/news/2010/10/microsoft-sues-motorola-citing-android-patent-infringement.ars |title=Microsoft sues Motorola, citing Android patent infringement |last=Protalinski |first=Emil |date=October 1, 2010 |access-date=2010-10-02 |publisher=arstechnica.com |archive-date=2010-10-02 |archive-url=https://web.archive.org/web/20101002013040/http://arstechnica.com/microsoft/news/2010/10/microsoft-sues-motorola-citing-android-patent-infringement.ars |url-status=live }}</ref>
<ref name="DesktopLinux_2009">{{cite web |url=http://www.desktoplinux.com/news/NS4980952387.html?kc=rss |title=Can FAT patch avoid Microsoft lawsuits? |last=Brown |first=Eric |date=July 2, 2009 |archive-url=https://web.archive.org/web/20130131034455/http://www.desktoplinux.com/news/NS4980952387.html |archive-date=January 31, 2013 |url-status=dead |access-date=2009-08-23 |publisher=DesktopLinux.Com}}</ref>
<ref name="ArsTechnica_2009">{{cite web |url=https://arstechnica.com/information-technology/2009/07/vfat-linux-patch-could-circumvent-microsofts-patent-claims/ |title=New Linux patch could circumvent Microsoft's FAT patents |last=Paul |first=Ryan |date=July 2, 2009 |access-date=2013-10-30 |publisher=ArsTechnica.com |archive-date=2013-11-01 |archive-url=https://web.archive.org/web/20131101061453/http://arstechnica.com/information-technology/2009/07/vfat-linux-patch-could-circumvent-microsofts-patent-claims/ |url-status=live }}</ref>
<ref name="Microsoft_2000_Wyse-DOS">{{Cite FTP |date=December 17, 2000|server=Microsoft|url-status=dead|title=Q78407: Wyse DOS 3.3 Partitions Incompatible with MS-DOS 5.x and 6.x|url=ftp://ftp.microsoft.com/misc1/PEROPSYS/MSDOS/KB/Q78/4/07.TXT}} [https://archive.org/download/ftp.microsoft.com/ftp.microsoft.com.zip/ftp.microsoft.com%2FMISC1%2FPEROPSYS%2FMSDOS%2FKB%2FQ78%2F4%2F07.TXT Alt URL]</ref>
<ref name="GB4">{{cite web |url=https://technet.microsoft.com/en-us/library/cc938937.aspx |title=File Systems |year=2001 |publisher=[[Microsoft TechNet]] |access-date=2011-07-31 |archive-date=2011-08-12 |archive-url=https://web.archive.org/web/20110812044910/http://technet.microsoft.com/en-us/library/cc938937.aspx |url-status=live }}</ref>
<ref name="IBM_4690_User_Guide">IBM; ''4690 OS User's Guide Version 5.2'', IBM document SC30-4134-01, 2008-01-10 ([https://public.dhe.ibm.com/software/retail/pubs/sw/opsys/4690/ver5r2/bsf1_UG_mst.pdf] )</ref>
<ref name="IBM_4690_Programming_Guide">IBM; ''4690 OS Programming Guide Version 5.2'', IBM document SC30-4137-01, 2007-12-06 ([https://public.dhe.ibm.com/software/retail/pubs/sw/opsys/4690/ver5r2/bsi1_PG_mst.pdf] )</ref>
<ref name="Microsoft_2000_Logical-sectoring">{{Cite FTP |date=December 17, 2000|server=Microsoft|url-status=dead|title=Q68176: Upgrading Pre-4.0 Systems with Logical Drive(s) > 32 MB|url=ftp://ftp.microsoft.com/misc1/PEROPSYS/MSDOS/KB/Q68/1/76.TXT}} [https://archive.org/download/ftp.microsoft.com/ftp.microsoft.com.zip/ftp.microsoft.com%2FMISC1%2FPEROPSYS%2FMSDOS%2FKB%2FQ68%2F1%2F76.TXT Alt URL]</ref>
<ref name="SCP_1981_86-DOS_1.0_Addendum">{{cite web |url=http://bitsavers.informatik.uni-stuttgart.de/pdf/seattleComputer/86-DOS_1.0_Addendum.pdf |title=SCP 86-DOS 1.0 Addendum |author=Seattle Computer Products |year=1981 |access-date=2013-03-10 |archive-date=2012-10-03 |archive-url=https://web.archive.org/web/20121003100657/http://bitsavers.informatik.uni-stuttgart.de/pdf/seattleComputer/86-DOS_1.0_Addendum.pdf |url-status=live }}</ref>
<ref name="Microsoft_exFAT-License">{{cite web |url=http://www.microsoft.com/en-us/legal/intellectualproperty/IPLicensing/Programs/exFATFileSystem.aspx |title=exFAT File System Intellectual Property licensing program |author=Microsoft |website=[[Microsoft]] |access-date=2013-04-23 |url-status=dead |archive-url=https://web.archive.org/web/20130507183540/http://www.microsoft.com/en-us/legal/intellectualproperty/IPLicensing/Programs/exFATFileSystem.aspx |archive-date=May 7, 2013 |df=mdy}}</ref>
<ref name="DC-009-2010">{{cite web|url=http://www.cipa.jp/english/hyoujunka/kikaku/pdf/DC-009-2010_E.pdf |title=Standard of the Camera & Imaging Products Association, CIPA DC-009-Translation-2010, Design rule for Camera File system: DCF Version 2.0 (Edition 2010) |author=JEIDA/JEITA/CIPA |year=2010 |access-date=2011-04-13 |url-status=dead |archive-url=https://web.archive.org/web/20130930190707/http://www.cipa.jp/english/hyoujunka/kikaku/pdf/DC-009-2010_E.pdf |archive-date=September 30, 2013 |df=mdy}}</ref>
<ref name="Livingstone_1998_FAT32X">{{cite magazine |title=FAT-32X may operate differently than FAT-32 on large hard drives |first=Brian |last=Livingston |magazine=[[InfoWorld]] |date=October 28, 1998 |volume=20 |issue=43 |url=http://brianlivingston.com/windowmanager/archive/cgi-bin/new/livingst/981026bl.htm |access-date=2015-04-17 |archive-date=2015-11-12 |archive-url=https://web.archive.org/web/20151112193343/http://brianlivingston.com/windowmanager/archive/cgi-bin/new/livingst/981026bl.htm |url-status=live }}</ref>
<ref name="PowerQuest_1998_FAT32X">{{cite web |title=What is a FAT32X partition? |first=David |last=Steinberg |publisher=[[PowerQuest]] Technical Support |work=Tech Tip / FAQ |date=May 1, 1998 |url=http://www.sysopt.com/showthread.php?88915-What-is-FAT32X&p=532052&viewfull=1#post532052 <!-- another url citing the same source: url=http://www.techimo.com/forum/archive/index.php/t-20617.html --> |access-date=2015-04-17 |archive-date=2015-09-21 |archive-url=https://web.archive.org/web/20150921030455/http://www.sysopt.com/showthread.php?88915-What-is-FAT32X&p=532052&viewfull=1#post532052 |url-status=live }}</ref>
<ref name="PowerQuest_1998_PQ4">{{cite web |title=PowerQuest PartitionMagic 4.0 now available |first=Christina |last=Karpowitz |publisher=[[PowerQuest]] |url=http://www.powerquest.com/press/PM4available.html |date=September 23, 1998 |archive-url=https://web.archive.org/web/19990208204638/http://www.powerquest.com/press/PM4available.html |archive-date=February 8, 1999 |access-date=2015-04-17}}</ref>
<ref name="Caldera_1998_DRFAT32">{{citation |title=DRFAT32.SYS R1.00 INT 13h Interface for FAT32 Redirector |publisher=Caldera, Inc. |date=September 11, 1998}}</ref>
<ref name="Caldera_1998_DRFAT32-RM">{{cite book |title=README.TXT – Caldera DR-DOS FAT32 Enabled Boot Disk (DRFAT32) |publisher=Caldera, Inc. |date=July 24, 1998}}</ref>
<ref name="Duitz_2001_FAQ">{{cite web |title=Can anyone explain FAT32X? |first=Neal |last=Duitz |publisher=Win98 Private FAQ, Windows 98 Consumer Preview Program |url=http://www.win98private.net/fat32x.htm |date=July 17, 2001 |archive-url=https://web.archive.org/web/20040613232209/http://www.win98private.net/fat32x.htm |archive-date=June 13, 2004 |access-date=2015-04-17}}</ref>
<ref name="Costanzo_1998_FAT32X">{{cite web |title=FAT32X |first=Lance |last=Costanzo |url=http://lance.advantweb.com/fat32x/ |date=May 14, 1998 |archive-url=https://web.archive.org/web/19980521015015/http://lance.advantweb.com/fat32x/ |archive-date=May 21, 1998 |access-date=2015-04-17}}</ref>
}}
 
== External links ==
* [https://support.microsoft.com/kb/154997/ ''Description of the FAT32 File System'']: Microsoft Knowledge Base Article 154997
* [http://www.ecma-international.org/publications/standards/Ecma-107.htm ECMA-107 Volume and File Structure of Disk Cartridges for Information Interchange], identical to ISO/IEC 9293.
* [https://jeffpar.github.io/kbarchive/kb/039/Q39927/ ''MS-DOS: Directory and Subdirectory Limitations'']: Microsoft Knowledge Base Article 39927
* [http://www.microsoft.com/whdc/system/platform/firmware/fatgen.mspx Microsoft Extensible Firmware Initiative FAT 32 File System Specification, FAT: General Overview of On-Disk Format]
* [https://support.microsoft.com/kb/100108/ ''Overview of FAT, HPFS, and NTFS File Systems'']: Microsoft Knowledge Base Article 100108
* [http://www.pjrc.com/tech/8051/ide/fat32.html Understanding FAT32 Filesystems (explained for embedded firmware developers)]
* Microsoft Technet; [https://web.archive.org/web/20060307082555/http://www.microsoft.com/technet/prodtechnol/winxppro/reskit/c13621675.mspx ''Volume and file size limits of FAT file systems''], copy made by [https://archive.org/ Internet Archive Wayback Machine] of an article with summary of limits in FAT32 which is no longer available on Microsoft website.
* [http://users.iafrica.com/c/cq/cquirke/fat.htm Understanding FAT] including lots of info about LFNs
* [[Raymond Chen (Microsoft)|Chen, Raymond]]; [https://web.archive.org/web/20081118122857/http://www.microsoft.com/technet/technetmag/issues/2006/07/WindowsConfidential/ ''Microsoft TechNet: A Brief and Incomplete History of FAT32'']
* [http://support.microsoft.com/kb/140418/ Detailed Explanation of FAT Boot Sector] - Microsoft Knowledge Base Article 140418
* [https://web.archive.org/web/20170610205053/https://support.microsoft.com/en-us/help/263044/fdisk-does-not-recognize-full-size-of-hard-disks-larger-than-64-gb Fdisk does not recognize full size of hard disks larger than {{nowrap|64 GB}}]: Microsoft Knowledge Base Article 263044, copy made by [https://archive.org/web/ Internet Archive Wayback Machine]. Explains inability to work with extremely large volumes under Windows 95/98.
* [http://support.microsoft.com/kb/154997/ Description of the FAT32 File System] - Microsoft Knowledge Base Article 154997
* [https://web.archive.org/web/20050319235548/http://www.microsoft.com/resources/documentation/Windows/XP/all/reskit/en-us/prkc_fil_cycz.asp ''Microsoft Windows XP: FAT32 File System''], copy made by the [[Internet Archive]]'s [[Wayback Machine]] of an article with summary of limits in FAT32 which is no longer available on Microsoft website.
* [http://sourceforge.net/projects/libfat/ FAT12 / FAT16/ FAT32 Filesystem implementation for *nix] - Includes libfat libraries and fusefat , a FUSE filesystem driver
* [http://support.microsoft.com/kb/39927/ MS-DOS: Directory and Subdirectory Limitations] - Microsoft Knowledge Base Article 39927
* [http://support.microsoft.com/kb/100108/ Overview of FAT, HPFS, and NTFS File Systems] - Microsoft Knowledge Base Article 100108
* [http://www.microsoft.com/technet/prodtechnol/winxppro/reskit/c13621675.mspx Volume and file size limits of FAT file systems] - Microsoft Technet
* [http://www.microsoft.com/technet/technetmag/issues/2006/07/WindowsConfidential/ Microsoft TechNet: A Brief and Incomplete History of FAT32] by [[Raymond Chen]]
* [http://www.ridgecrop.demon.co.uk/index.htm?fat32format.htm FAT 32 Formatter]: allows formatting volumes larger than 32GB with FAT32 under [[Windows 2000]], [[Windows XP]] and [[Windows Vista]]
* [http://support.microsoft.com/kb/263044 Fdisk Does Not Recognize Full Size of Hard Disks Larger than 64 GB] - Microsoft Knowledge Base Article 263044.
* [http://web.archive.org/web/20050319235548/www.microsoft.com/resources/documentation/Windows/XP/all/reskit/en-us/prkc_fil_cycz.asp Microsoft Windows XP - FAT32 File System] - Copy made by [http://www.archive.org/ Internet Archive Wayback Machine] of an article with summary of limits in FAT32 which is not longer available on Microsoft website.
* [http://sf.net/projects/efsl EFSL], Open source FAT implementation for embedded devices
* [http://www.beginningtoseethelight.org/fat16/ Visual Layout of a FAT16 drive]
* [http://www.viralpatel.net/taj/tutorial/fat.php Understand the Master Boot Record of FAT16]
 
{{File systems}}
{{Microsoft Windows components}}
{{Ecma International Standards}}
{{WindowsISO Componentsstandards}}
{{List of International Electrotechnical Commission standards}}
 
[[Category:1977 software]]
[[Category:Computer file systems]]
[[Category:Disk file systems]]
[[Category:DOS on IBM PC compatiblestechnology]]
[[Category:Windows disk file systems]]
[[Category:Windows components]]
[[Category:Ecma standards]]
[[Category:File systems supported by the Linux kernel]]
 
[[Category:Windows components]]
[[ar:جدول توزيع الملف]]
[[Category:Windows disk file systems]]
[[ca:File Allocation Table]]
[[cs:File Allocation Table]]
[[da:FAT]]
[[de:File Allocation Table]]
[[el:File Allocation Table]]
[[es:Tabla de Asignación de Archivos]]
[[eo:FAT]]
[[eu:FAT]]
[[fa:جدول تخصیص فایل]]
[[fr:File Allocation Table]]
[[gl:FAT]]
[[ko:파일 할당 테이블]]
[[id:FAT]]
[[it:File Allocation Table]]
[[he:File Allocation Table]]
[[lt:FAT]]
[[nl:File Allocation Table]]
[[ja:File Allocation Table]]
[[no:FAT]]
[[pl:File Allocation Table]]
[[ro:File Allocation Table]]
[[ru:File Allocation Table]]
[[sk:File Allocation Table]]
[[fi:FAT]]
[[sv:FAT]]
[[vi:FAT]]
[[tr:Dosya Yerleşim Tablosu]]
[[zh:FAT]]