Superformatting is the process of formatting a floppy disk at a capacity higher than it was originally designed or rated for. While it carries a risk of data corruption or wearing out the disk, it was historically used in some floppy-based operating systems (such as specialized Linux distributions) to maximize storage and squeeze in more applications and utilities. muLinux is a notable example of a distribution that utilized this technique.
Another common use was to format low-density 3.5-inch or 5.25-inch floppies as high-density, or even extra-high density (such as HD-36) in the case of 3.5-inch disks. Superformatting is usually done via a low-level formatting process using tools like FORMAT /U in MS-DOS, fdformat, or the more advanced superformat tool in Linux.
Superformatting pushes floppy disks to their physical limits by altering how sectors, tracks, and gaps are arranged. Using specialized software like superformat (part of the Linux fdutils package), a standard High-Density (HD) floppy can sometimes be formatted up to 1992 KiB, and an Extra-High Density (ED) disk up to 3984 KiB.
High-capacity formats are incredibly sensitive to the exact rotation speed of the floppy drive and the resulting difference in raw data capacity. Because of this, advanced superformatting tools perform a live measurement of the drive's raw capacity before proceeding. To save time on subsequent formats, this deviation can be calculated and stored in system configuration files (such as /etc/driveprm on Linux).
Superformatting often makes use of 2m formats. These formats were specifically designed to hold MS-DOS filesystems by taking advantage of data redundancy. The standard MS-DOS filesystem stores two copies of the File Allocation Table (FAT). To save space, superformatting software can drop the second copy of the FAT from the physical disk, banking on the reliability of the first copy.
To achieve higher storage yields and optimize read/write speeds, superformatting utilities allow manual or automated overrides of low-level disk geometry.
To maximize the user data transfer rate, sectors are often arranged so that Sector 1 of a new track or head arrives under the drive head at the very moment the drive is ready to read it after finishing the previous track. The "skew" value describes how far sector number 1 is shifted from the physical index mark.
By default, sector sizes are assumed to be 512 bytes, but superformatting can support larger sectors or utilize small auxiliary sectors ("chunks") to handle heterogeneous sector sizes. Users can also manipulate the format gap (the physical distance between sectors) to pack data more tightly onto a track.
floppymeter are often required to measure the drive's specific tolerances.The following examples show how the Linux superformat utility is used to achieve custom disk capacities:
| Command | Target Drive | Resulting Format |
|---|---|---|
superformat /dev/fd0 hd | Drive 0 (3.5") | Standard 1440 KB HD format |
superformat /dev/fd0 dd | Drive 0 (3.5") | Standard 720 KB DD format |
superformat /dev/fd0 sect=21 cyl=83 | Drive 0 (3.5") | Extended 1743 KB format (83 cylinders, 21 sectors) |
superformat /dev/fd0 tracksize=12KB cyl=83 mss | Drive 0 (3.5") | Extended 1992 KB format (83 cylinders, 2 heads, 12 KB per track) |