You buy a 1 TB external drive, plug it in, and your operating system says it has 931 GB. You did not get ripped off. The drive really does hold a trillion bytes — but Windows is using a different definition of “gigabyte” than the marketing on the box. The disagreement is older than the personal computer, and it is the source of more support tickets, forum arguments, and quietly buggy software than almost any other unit confusion in computing. This article walks through where the two definitions came from, which one you should use when, and how to convert between them without losing your mind.

Two megabytes, both real

A byte is unambiguous: it is eight bits. The trouble starts at the prefix. There are two competing systems for what “mega” means in front of “byte”.

  • Decimal (SI) megabyte: 1 MB = 106bytes = 1,000,000 bytes. This is the same “mega” that means a million in megahertz, megawatts, or megapixels. It is defined by the International System of Units (SI).
  • Binary megabyte (mebibyte): 1 MiB = 220 bytes = 1,048,576 bytes. Computers address memory in powers of two, so engineers historically reused the SI prefix “mega” to mean the nearest power of two — 220, which is about 4.86% larger than 106.

Both definitions appear in the wild today. The decimal one is what disk manufacturers, network engineers, and the SI itself use. The binary one is what most operating systems display for memory and file sizes, though they usually still write the symbol as “MB” rather than the technically correct “MiB”.

Why two systems exist

The SI prefixes (kilo, mega, giga, tera...) were standardized in 1960 and have always meant powers of ten. They predate digital computing. When early computer engineers needed a short word for 1,024 bytes — which is 210, the natural addressing unit — they grabbed “kilobyte” because 1,024 is close to 1,000. The error was small enough not to matter for an 8 KB memory chip.

The error compounds at every prefix. By the time you reach “tera”, the binary version (240) is roughly 10% larger than the decimal one (1012). On a multi-terabyte drive, that is hundreds of gigabytes of apparent disagreement, which is exactly why the issue surfaces most loudly with storage.

To end the ambiguity, the International Electrotechnical Commission published IEC 60027-2 in 1999, defining a separate set of binary prefixes: kibi (Ki), mebi (Mi), gibi (Gi), tebi (Ti), and so on. Those definitions were later folded into IEC 80000-13:2008, which is the current normative reference. The IEEE adopted the same prefixes in IEEE 1541-2002, and NIST recommends them in its own guidance on metric units. The standards are clear; the marketplace is slow to follow.

Comparison table: SI vs IEC prefixes

Here is what each prefix actually means, side by side, up through the scales most people encounter day to day.

Decimal (SI)Decimal valueBinary (IEC)Binary valueDifference
kilobyte (kB)103 = 1,000kibibyte (KiB)210 = 1,024+2.40%
megabyte (MB)106 = 1,000,000mebibyte (MiB)220 = 1,048,576+4.86%
gigabyte (GB)109 = 1,000,000,000gibibyte (GiB)230 = 1,073,741,824+7.37%
terabyte (TB)1012tebibyte (TiB)240 ≈ 1.0995 × 1012+9.95%
petabyte (PB)1015pebibyte (PiB)250 ≈ 1.1259 × 1015+12.59%

Note that the SI symbol for kilo is a lowercase “k” (so “kB”, not “KB”), while the IEC binary prefix is capital “Ki”. In practice you will see “KB” used loosely for both, which is one more reason to look at context before doing arithmetic.

The famous “missing gigabytes”

The most common place this confusion bites end users is hard-drive capacity. Storage manufacturers — including Seagate, Western Digital, Samsung, and every reputable SSD vendor — sell capacity in decimal units. A drive labeled 1 TB holds 1012 bytes (a trillion). That is not a marketing trick; it is the SI definition, and it is the same definition used by the underlying logical block addressing scheme.

Windows, however, reports file and volume sizes using binary divisors (powers of 1,024) while still writing the symbol as “GB”. So your 1 TB drive shows up as:

  • 1012 bytes ÷ 230bytes/GiB ≈ 931.32 “GB” (really GiB)

No bytes have gone missing. The drive holds exactly what it says — the operating system is dividing by 1,073,741,824 instead of 1,000,000,000 and not telling you. macOS switched to decimal units in OS X 10.6 (Snow Leopard, 2009) and now agrees with the manufacturer. Linux file managers vary; many modern ones display both, or use the unambiguous “GiB” symbol.

Which convention applies where

A useful rule of thumb: storage media and data transfer use decimal, memory uses binary. More specifically:

  • Hard drives, SSDs, USB sticks, SD cards: decimal. Manufacturer capacities are 10n bytes.
  • Network throughput: decimal. A gigabit Ethernet link is 109 bits/s, not 230. ISP speed tiers (“100 Mbps”) are also SI megabits per second.
  • RAM and CPU caches: binary. An 8 GB DIMM is actually 8 × 230 = 8,589,934,592 bytes. This is dictated by the binary addressing of the memory bus — anything else would waste address space.
  • Operating system file sizes: mixed. Windows uses binary divisors with SI symbols; macOS uses decimal; Linux depends on the tool.
  • File system block sizes (4 KiB, 64 KiB): binary, because they map directly to memory pages.
  • Optical media (CD, DVD):originally binary (“700 MB” CD = 700 MiB ≈ 734 MB decimal). DVDs are sold using a hybrid that does not match either system cleanly.

Worked examples

Example 1: How long to download a 4 GB movie on a 100 Mbps connection?

First, normalize. The 4 GB file is decimal if you got the size from cloud storage that uses SI, or it is 4 GiB ≈ 4.295 GB if you got it from Windows. Assume the SI version. Convert bytes to bits:

  • 4 × 109 bytes × 8 bits/byte = 3.2 × 1010 bits
  • 100 Mbps = 108 bits/s
  • 3.2 × 1010 ÷ 108 = 320 seconds ≈ 5 min 20 s of theoretical wire time

Real downloads include TCP and protocol overhead, so plan for 10–15% more.

Example 2: A 32 GiB RAM module is how many decimal gigabytes?

  • 32 × 230 bytes = 34,359,738,368 bytes
  • ÷ 109 = 34.36 GB

Conversely, when an OS reports “31.9 GB” available on a 32 GB module, it is reading the true binary capacity (32 GiB) and subtracting a small amount reserved by the integrated graphics or the firmware. There is no missing memory.

Example 3: A 2 TB drive in Windows.

  • Marketed: 2 × 1012 = 2,000,000,000,000 bytes
  • Windows display: 2 × 1012 ÷ 230 ≈ 1,862.6 GB (GiB)
  • Apparent “loss”: ~137 GB — entirely a unit-conversion artifact.

Common pitfalls

A few traps that catch even experienced engineers:

  • Bits vs bytes. Network speeds are in bits per second (lowercase b: Mbps, Gbps). Storage is in bytes (uppercase B: MB, GB). A 1 Gbps link transfers at most 125 MB/s, not 1 GB/s. Off by a factor of eight.
  • Mixing units in throughput math. Always convert both sides to bits or both to bytes before dividing. Half the back-of-the-envelope download estimates on Stack Overflow are wrong for this reason.
  • “1.44 MB” floppy disks.A delightful historical edge case: the 3.5″ HD floppy advertised as 1.44 MB is neither 1.44 × 106 bytes nor 1.44 × 220. It is 1,440 × 1,024 = 1,474,560 bytes — a hybrid that uses kilo to mean 1,000 once and 1,024 once. There is no defensible reason for this.
  • Programmatic file size reporting. If you write code that displays file sizes, decide explicitly whether you are using SI or IEC, and label the symbols accordingly. The Linux ls -lh command, for example, uses binary divisors with SI-looking suffixes; the --si flag switches to actual SI.
  • Rounding in cloud-storage billing. Most providers (AWS, Google Cloud, Azure) bill in GB or TB meaning 109 and 1012 bytes. Read the fine print; the difference matters at scale.

Practical conversion shortcuts

Memorizing a few constants makes mental conversion fast:

  • 1 KiB = 1.024 kB (about 2.4% larger)
  • 1 MiB ≈ 1.049 MB
  • 1 GiB ≈ 1.074 GB
  • 1 TiB ≈ 1.100 TB
  • 1 PiB ≈ 1.126 PB

To go from a manufacturer’s decimal capacity to the binary value Windows will display, divide by these factors. To go the other way (from a Windows-reported size to the underlying byte count), multiply. For more than a couple of conversions in a row, use a calculator — compounding 7% errors at each prefix is exactly the kind of mistake that ships in bug reports.

The takeaway

There are two correct megabytes. The SI megabyte (106 bytes) governs storage media, network throughput, and anything that flows from the SI itself. The binary mebibyte (220bytes) governs RAM, addressing, and most of what your operating system shows you when it writes “MB”. The IEC and IEEE have given us unambiguous symbols — KiB, MiB, GiB — to disambiguate, and you should use them in any technical writing where confusion would matter. Everywhere else, look at context: who labeled it, what it is measuring, and whether the number ends with a suspicious power of two.