HDD Capacity FAQ


Under some circumstances, and in certain hardware/software configurations, there will be occasions where the BIOS or OS reports less than the full native capacity of the HDD. The purpose of this article is to provide an explanation or solution, where appropriate.

1/ Why does my OS report a capacity of 465GB / 931GB / 1.81TB for my 500GB / 1TB / 2TB HDD?

HDD manufacturers specify the capacity of a HDD using a decimal system whereas the OS will typically use a binary system.

New units have been introduced in an attempt to eliminate the confusion.

1 kilobyte (KB) = 1000 bytes
1 kibibyte (KiB) = 1024 bytes

1 megabyte (MB) = 1,000,000 bytes
1 mebibyte (MiB) = 1024 x 1024 = 1,048 ,576 bytes

1 gigabyte (GB) = 1,000,000,000 bytes
1 gibibyte (GiB) = 1024 x 1024 x 1024 = 1,073,741,824 bytes

1 terabyte (TB) = 1,000,000,000,000 bytes
1 tebibyte (TiB) = 1024 x 1024 x 1024 x 1024 = 1,099,511,627,776 bytes

For example, a 500GB drive will be reported as having a capacity of 465GiB, although the "i" may be omitted.

2/ Why is my 1TB HDD reporting a capacity of only 31MB / 32MB / 33MB, or why is my 1.5TB HDD reporting 500GB, or why is my 2TB HDD reporting 1TB, or why is my 3TB HDD reporting 2TB (not 2TiB)?

GigaByte motherboards with an Xpress Recovery BIOS are affected by a bug.

When the drive is first in the boot order, Gigabyte's BIOS will write a backup copy of itself to a small Host Protected Area (HPA) at the end of the user area. It then hides this image by reducing the capacity of the drive by a corresponding amount. Unfortunately a bug in the BIOS incorrectly adjusts the drive's capacity after creating the HPA. 1TB drives are reduced to 31/32/33MB, 1.5TB become 500GB, 2TB become 1TB, and 3TB become 2TB (not 2TiB). Smaller drives appear to be unaffected by the bug. (Note that if a 3TB drive is detected as 746GB or 2TiB, then that is a different problem, possibly a 32-bit limitation in the OS or BIOS, or in the driver for the motherboard chipset or SATA controller, or a 32-bit limitation of the firmware in an external enclosure.)

The solution is to use a utility such as HDAT2, HDD Capacity Restore Tool, or SeaTools to restore the drive's full factory capacity.

For example, to "change the native size" of your HDD, see page 5 of the HDAT2 user guide:

Some versions of GigaByte's BIOS appear to be able to automatically remove the HPA simply by switching the drive's boot order. I suspect that in these cases the BIOS re-examines each drive and removes any backup copy from all but the boot drive, or it may leave the BIOS code in place but remove the HPA. Unfortunately I don't have any user feedback to confirm this.

I believe that most versions of GigaByte's BIOS (or perhaps all versions) will not touch a drive a second time if they detect an existing backup copy. This copy effectively provides immunity from the bug, unless perhaps the BIOS is updated. However, as before, I don't have any user feedback to confirm this.

If the drive's file system has not been touched while the drive was in the truncated state, then everything should be back to normal after the HPA is removed. However, if a user has attempted to use a tool such as Microsoft's FIXMBR or FIXBOOT to repair the file system, then the partition table and boot sector will probably be trashed. In this case a utility such as TestDisk or Partition Find and Mount should be able to undo the damage.

My only concern would be in regard to the location of the BIOS code. That is, I would be asking whether the code was successfully written to the end of the drive, or whether it was written somewhere in the middle of the file system. To this end I would use a disc editor such as HxD or DMDE to perform a reverse search for BIOS related text strings.

The procedure for DMDE would be as follows:

Choose your Physical Drive

Select Mode -> Hexadecimal

Type Ctrl-End to go to the last sector of the drive.

Select Tools -> Search String in Object

Type your desired text into the Text box, eg BIOS, AMI, American Megatrends, Award, Phoenix, Diskette, etc

Select the Backward and From Cursor radio buttons and click OK.

3/ Why does my Asus BIOS report a capacity of 500GB for my 1.5TB drive?

I haven't confirmed this to my satisfaction, but it appears that some flavours of Asus BIOS may have a bug similar to that described in Q2.

See this thread for one example:

4/ How can I reduce the capacity of my drive?

Sometimes it may be necessary to reduce the capacity of a drive for reasons of compatibility with an existing installation. Alternatively, it could be done for testing purposes.

To this end, and provided that the firmware supports the HPA (Host Protected Area) feature set, one could use a tool such as HDAT2. The procedure for creating a HPA is explained on page 5 of the HDAT2 Cook Book (see References).

5/ Why does my drive report a reduced capacity of 32GB?

At one time, some flavours of BIOS had a 32GB HDD limitation. In order to be compatible with these BIOS versions, some drives had a capacity limitation jumper or alternate capacity jumper (Maxtor) that reduced the drive's reported capacity to 32GB. Some users inadvertently install this jumper by confusing it with an IDE drive's master or slave jumper. Often these jumpers are at opposite ends of the jumper block.

6/ Why, after successfully partitioning my drive, does the format process hang at 54% or 73%, or why does a surface scan show almost 50% bad blocks?

Early NVIDIA nForce drivers (Windows) were affected by a 1TiB limitation (= 1.1TB). The symptom would be that the drive could be partitioned in Disk Management, but would hang at the 54% mark (2TB) or 73% mark (1.5TB) during a full format. Alternatively, a drive that had been quick formatted would report 46% or 27% bad blocks during a subsequent surface scan.

The solution is a driver update.

See the References section for Seagate Knowledge Base articles that explain the problem in much greater detail.

7/ After cloning a laptop drive to a larger drive, why does the clone HDD report the same capacity as the original?

There are at least two possible reasons for this.

(a) If the drive was cloned sector-by-sector, then the clone will be an exact image of the original. This means that the clone's MBR and partition table will reflect the partition sizes of the original drive. In this case a partitioning utility (eg Windows Disk Management or GParted) will see the remaining space as unallocated. The simplest solution is to assign the remaining space to additional partitions. Alternatively, the last partition or logical volume could be expanded to fill the drive.

(b) In certain situations, the clone, as reported by BIOS, will be reduced to the same physical size as the original drive. A common example is a Dell laptop with a MediaDirect partition. In this case the MediaDirect partition is hidden inside a Host Protected Area (HPA), and access to this area is gained via special boot code in LBA 3. Dell uses its own MBR code in LBA 0 to transfer control to the code in LBA 3 if the MediaDirect function key is pressed during the boot process. Unfortunately the code in LBA 3 also truncates the drive.

To reinstate the full capacity of your drive, read the sections entitled "How To Avoid the Truncation Problem" and "How To Repair A Truncated Disk" at the following URL:

The HDAT2 FAQ has several questions relating to Dell's HPA, and page 5 of the HDAT2 Cook Book explains how to "change the native size" of your HDD.

Note that you must remove Dell's MBR code before rebooting your drive, otherwise this code will once again truncate your drive.

8/ Why does my drive identify itself with 0 LBAs, or a strange model number (eg ST_M13FQBL), or a strange capacity (eg 3GB)?

First check whether the drive is configured to Power Up In Standby (PUIS). Most drives that support PUIS do so via an ATA Set Features command. Some also provide a jumper option. Western Digital refers to this jumper as PM2.

To disable PUIS, you could use HDAT2. However, to wake up the drive, you will need to start HDAT2 with the /w switch.

When a drive powers up, its MCU (microcontroller) puts it through a self test during which it confirms the integrity of the SDRAM and serial flash memory, among other things. It then consults the PUIS flag and, if disabled, it commands the motor controller IC to spin up the motor. The drive then accesses the hidden System Area (also called the Service Area or Negative Cylinders) on the platters and retrieves information such as the runtime ATA firmware, P-list and G-list (factory defects and grown defects), translator (to convert LBAs to physical Cylinder/Head/Sector), etc. If any of these modules are corrupted or inaccessible, then the drive powers up in a kind of "safe" mode. In this mode there is no access to user data. Sometimes the drive reports 0 LBAs, as is the case with some Seagate models that have corrupted G-lists or SMART data. At other times the drive identifies itself with its "factory alias" (eg ST_M13FQBL or ROM MODEL HAWK) rather than its actual model number. This alias is stored within the serial flash memory on the PCB.

In most cases there are no known DIY solutions, or at least none that the data recovery community has been willing to divulge. One notable exception is the well publicised 0 LBA fix for Seagate's 7200.11 and 7200.12 models (see References).


Storage Capacity Measurement Standards [194563]:

Drive displays a smaller capacity than the indicated size on the drive label:

Difference between Gibibyte and Gigabyte:

Explanation of Gigabyte BIOS bug by "ernstatat":

Explanation of Host Protected Area:

HDD Capacity Restore Tool:

HDAT2/CBL Hard Disk Repair Utility:

SeaTools for DOS:


Partition Find and Mount:

DMDE (DM Disk Editor and Data Recovery Software):

HxD - Freeware Hex Editor and Disk Editor:

Large SATA drives (above 1.1 TB) will not completely format [211211]:

1.5TB (ST31500341AS) or larger SATA hard drive only showing 1.1TB capacity in Windows Vista [206391]:

Understanding the Dell MediaDirect Partition:

Inside the Dell PC Restore Partition - HPA Issues:

Seagate 7200.11 BSY bug and 0 LBA fix: