If you've used Linux command line tools, you've probably seen "KiB," "MiB," or "GiB" in output. They look like typos for KB, MB, GB — but they're not. They're the official IEC binary units, and using them eliminates a confusion that has plagued the computing world for 25 years.

The IEC binary unit names

In 1998, the International Electrotechnical Commission standardized binary unit prefixes to disambiguate from the SI (decimal) units:

Decimal (SI)BytesBinary (IEC)Bytes
kilobyte (KB)10³kibibyte (KiB)2¹⁰ = 1,024
megabyte (MB)10⁶mebibyte (MiB)2²⁰ = 1,048,576
gigabyte (GB)10⁹gibibyte (GiB)2³⁰ ≈ 1.074 billion
terabyte (TB)10¹²tebibyte (TiB)2⁴⁰ ≈ 1.1 trillion
petabyte (PB)10¹⁵pebibyte (PiB)2⁵⁰
exabyte (EB)10¹⁸exbibyte (EiB)2⁶⁰

The "bi" infix stands for "binary." Pronounced "kib-ee-byte," "meb-ee-byte," etc. (Some say "kee-byte" or "meh-byte" — varies by speaker.)

Why the IEC names matter

Without explicit binary units, "GB" is ambiguous:

  • Drive label "1 GB" usually means decimal (10⁹ bytes).
  • Operating system "1 GB" usually means binary (2³⁰ bytes).
  • Memory "1 GB" always means binary.
  • Networking "1 GB" almost always means decimal (in transferred data).

4 different definitions for the same word. The IEC names eliminate this — KiB is always binary, KB is always decimal.

Why most people don't use them

Old habits. "MB" was used for both decimal and binary for decades before the IEC standard. Switching to "MiB" feels pedantic in casual contexts.

Plus the names are awkward. "Mebibyte" sounds like a children's TV character. "Gibibyte" is hard to pronounce naturally. Marketing materials and casual writing stick with "MB" and "GB."

So in practice: serious technical writing uses MiB/GiB; casual writing uses MB/GB; everyone has to figure out from context which is meant.

Where you'll see IEC units

  • Linux command line: ls -h, du -h, df -h all output KiB, MiB, GiB.
  • Some BIOS/UEFI: drives shown in GiB.
  • Memory specifications: RAM specs increasingly use MiB and GiB.
  • Some Linux file managers: Nautilus shows GiB.
  • Technical specifications: drive datasheets, BIOS spec sheets.

Where you'll see decimal "GB" but it means binary

  • Windows Explorer: "GB" but means binary.
  • macOS Finder: "GB" but means binary.
  • iOS storage display: "GB" but means binary.
  • Most consumer software: "GB" but binary.

Where decimal really is decimal

  • Hard drive labels: "1 TB" means decimal 10¹² bytes.
  • Cloud storage: Google Drive, Dropbox, iCloud "1 TB plan" usually decimal.
  • Mobile data plans: "10 GB/month" usually decimal.
  • Network speeds (Mbps, Gbps): always decimal.

Worked example: a 1 TB drive

The drive box says 1 TB.

  • Drive maker (decimal): 1 TB = 10¹² bytes = 1,000,000,000,000 bytes.
  • Windows (binary, calls it "GB"): 1,000,000,000,000 / 2³⁰ = 931.32 GB. But this is really 931.32 GiB.
  • Correct labeling: drive holds 1 TB (931.32 GiB).

If Windows used "GiB" instead of "GB," the discrepancy would be obvious. The mismatch in units obscures it.

Programming languages and IEC units

Most programming language standard libraries either avoid the issue (using raw bytes) or use both:

  • Java: 1 << 30 for "1 GiB"; standardized as Long.toString and various utility libraries.
  • Python: humanize, sizeofbytes use IEC names by default.
  • Go: bytefmt is a popular library; uses MiB/GiB conventions.
  • Rust: human-friendly libraries use IEC by default.

What you should use

In casual writing: MB, GB are fine if context makes the unit clear. Just be aware they're ambiguous.

In technical writing: MiB, GiB when you mean binary; MB, GB when you mean decimal. Spell out the prefix the first time it appears.

In code: use named constants (KIB = 1024, KB = 1000) to make intent explicit.

In drive comparisons: spell out the units. "Effective usable space: 931 GiB on a 1 TB drive."

The size discrepancy in summary

Decimal claimBinary equivalent
1 TB drive~931 GiB
4 TB drive~3.64 TiB
16 TB drive~14.55 TiB

Convert quickly

Our data storage converter handles both bases. Pick "1024" for binary or "1000" for decimal. Useful for comparing OS-reported sizes to drive specifications, or for any storage capacity planning.