FAT: The Universal Compromise


We have now covered filesystems that were finished (ZFS), filesystems that were never finished (BTRFS, HAMMER2), and filesystems whose creators were permanently offlined.

Today we cover the filesystem that has no business still existing. The filesystem with no features, no ambition, and no shame. The filesystem that every operating system, every embedded device, every camera, every game console, and every car stereo supports — not because it is good, but because everyone agreed to pretend it is acceptable.

FAT.

The File Allocation Table. The filesystem equivalent of a participation trophy. And the entire industry gave it one.

The Origin:

In 1977, Bill Gates and Marc McDonald sat down to solve a simple problem: how to organize files on a floppy disk. They invented FAT. The design was elegant in the way that a cardboard box is elegant — it holds things, it is easy to understand, and you would never build a house out of it.

The File Allocation Table is literally a table. A flat array that maps clusters to files. No tree structure. No B+ trees. No dancing trees. No trees at all. A table. You look up which cluster belongs to which file, you follow the chain, you read the data. A child could implement it. Many children have. It is the first filesystem every OS development tutorial teaches because it is the only one simple enough to explain in a single afternoon.

This was fine in 1977. Floppy disks held 160 kilobytes. The table was small. The files were small. Everything was small.

Then storage grew. And FAT refused to grow with it.

The Generations:

FAT did not evolve. It was stretched. Each version is the same cardboard box with more tape.

VersionYearIntroduced WithMax VolumeMax File SizeClusters
FAT121980MS-DOS 1.032 MB32 MB4,096
FAT161984MS-DOS 3.02 GB2 GB65,526
FAT321996Windows 95 OSR22 TB4 GB~268 million
exFAT2006Windows CE128 PB16 EB~4 billion

Look at that table. Look at FAT32. Released in 1996, still the most widely used version, and it cannot store a file larger than 4 gigabytes. In 2026. A single 4K video recording from your phone exceeds this limit. A modern game install laughs at it. A database backup spits on it.

And yet. When you buy a USB drive today, it comes formatted as FAT32. When you insert an SD card into a camera, it speaks FAT. When you plug a drive into your car stereo, your PlayStation, your television, your printer — FAT.

What FAT Does Not Have:

Let us be precise about what this filesystem lacks. Not what it does poorly. What it does not do at all.

FeatureFATEvery Modern FS
JournalingNoYes
File permissionsNoYes
Access control listsNoYes
ChecksumsNoYes
EncryptionNoYes
CompressionNoYes
Hard linksNoYes
Symbolic linksNoYes
SnapshotsNoYes
Copy-on-writeNoYes
Crash recoveryHopeEngineering

Crash recovery on FAT is not a feature. It is a prayer. If power fails during a write, the File Allocation Table may become inconsistent. Your options are chkdsk and optimism. There is no journal to replay. There is no transaction log. There is no copy-on-write to fall back on. The filesystem was writing, the power died, and now your data is in a state that the specification does not define.

ZFS checksums every block. BTRFS copies on write. ReiserFS had journaling in 2001. FAT has nothing. It is a flat table from 1977 and it has learned nothing in forty-nine years.

The FAT Acceptance Movement:

So why does every operating system support it?

This is where the gaslighting begins.

The industry will tell you it is about “compatibility.” They will tell you FAT is a “lingua franca.” They will tell you it is “good enough for portable media.” They will frame it as pragmatism.

It is not pragmatism. It is FAT Acceptance.

At some point in the 1990s, the filesystem community made a collective decision to stop judging FAT by the same standards as every other filesystem. No journaling? That is fine, it is FAT. No permissions? We accept that. No checksums? It is just being itself. 4GB file size limit in the age of 8K video? We must not filesystem-shame.

Every other filesystem must prove itself. ZFS must justify its RAM usage. BTRFS must explain its RAID5/6 failures. ext4 must maintain backward compatibility with ext2. HAMMER2 must deliver clustering. But FAT? FAT shows up with nothing — no features, no ambition, no roadmap — and every operating system on Earth opens the door.

Windows supports FAT. Linux supports FAT. macOS supports FAT. FreeBSD supports FAT. OpenBSD supports FAT. NetBSD supports FAT. Your car supports FAT. Your camera supports FAT. Your television supports FAT. Your refrigerator, if it has a USB port, supports FAT.

No other filesystem receives this treatment. Try plugging an XFS-formatted USB drive into a Windows machine. Try reading a ZFS pool on macOS without third-party tools. Try mounting HAMMER2 on anything that is not DragonFlyBSD.

But FAT? FAT is welcome everywhere. Not because it earned the invitation. Because the industry collectively decided that asking FAT to have features would be discrimination.

The Patent Racket:

There is a darker reason FAT persists, and it is not technical. It is legal.

Microsoft held patents on the FAT long filename implementation — the VFAT layer that allows filenames longer than 8.3 characters. For decades, any device that read or wrote FAT with long filenames was technically under Microsoft’s patent umbrella. Microsoft licensed these patents aggressively. Every SD card, every USB drive, every camera — if it used FAT with long filenames, Microsoft collected.

The patents have since expired. But the damage was done. FAT became the default not because it was best, but because it was already everywhere, and changing defaults costs more than accepting mediocrity.

exFAT — the 2006 successor that actually supports large files — has its own naming history. Internally, the next logical name was FAT64. During development, engineers codenamed it Obese — because what do you call something bigger than FAT? But by 2006, the FAT Acceptance movement had reached even Redmond. You could not ship a filesystem called Obese. Marketing would not survive the meeting. So they went with exFAT — the “extended” File Allocation Table. The polite version. The version that does not describe what it actually is.

exFAT was proprietary until August 28, 2019, when Microsoft published the specification and released the patents to the Open Invention Network. exFAT entered the Linux kernel with version 5.4 in November 2019.

Microsoft spent thirteen years keeping the FAT replacement behind a patent wall, ensuring that the inferior FAT32 remained the default on portable media for over two decades longer than it should have.

The Numbers:

The “12,” “16,” and “32” in FAT12, FAT16, and FAT32 refer to the number of bits used to address clusters in the allocation table.

  • FAT12: 12 bits → 4,096 possible clusters. Enough for a floppy.
  • FAT16: 16 bits → 65,536 possible clusters. Enough for a small hard drive.
  • FAT32: 28 bits. Not 32. 28. The upper 4 bits are reserved. They named it FAT32 anyway. Even the name is a lie. FAT28 was apparently not marketable.

exFAT uses 32 actual bits for cluster addressing plus an allocation bitmap, because by 2006 someone at Microsoft finally admitted that a flat table alone is not a filesystem architecture.

The Lesson:

FAT teaches a lesson that no computer science course will admit: simplicity is not a feature. It is a a lack of ambition that the market rewarded.

FAT has no journaling because journaling is hard. FAT has no permissions because permissions require design. FAT has no checksums because checksums cost CPU cycles. FAT has none of these things, and the market said: perfect. Ship it on every USB drive. Put it in every camera. Make it the one filesystem that everything understands.

The filesystem with the fewest features became the most universal. Not because minimalism is elegant — ext2 is minimal and elegant, and nobody defaults to ext2 on SD cards. FAT won because it was first, it was simple enough for any hardware vendor to implement in a weekend, and Microsoft’s patents ensured nothing better could replace it for thirty years.

In the Republic of Derails, we have a filesystem standard too. It supports journaling, permissions, checksums, encryption, and snapshots. It runs on exactly one machine. Nobody else can read it. This is because it was designed by engineers, not by a market that rewards the lowest common denominator.

FAT was designed by a market. And the market chose the filesystem with no features, because features require decisions, and decisions require courage, and courage is not a filesystem specification.

But I accept FAT. We all accept FAT. We have no choice. It is on every USB drive in the building, and the Supreme Leader must transfer files like everyone else.

— Kim Jong Rails, Supreme Leader of the Republic of Derails