The 24 Bytes Nobody Noticed — Until They Did
Computers count everything in powers of two. A memory address is a binary number. A CPU doesn't have ten fingers — it has two states, high and low, and every addressable location in memory is reached by toggling a pattern of those states. The number of addresses you can reach with N wires is 2ᴺ. Ten address lines give you 2¹⁰ = 1,024 unique locations. Not 1,000. Not 999. Exactly 1,024.
In 1956, when IBM shipped the RAMAC 305 — the first computer with a hard disk drive — its engineers faced a naming problem. The drive's capacity was 5,000,000 characters (roughly 5 megabytes in modern terms). But memory was measured in powers of two: a kilobyte of core memory was 1,024 bytes because the addressing hardware made it so. Someone, probably during a spec-sheet review, decided that "1 KB = 1,024 bytes" was too ugly for marketing and "1 KB ≈ 1,000 bytes" was close enough for a datasheet. The 24-byte gap at the kilobyte level was invisible. Nobody in 1956 imagined a consumer would ever own a device storing a trillion bytes, let alone that they'd notice — and litigate — a 69-billion-byte gap between the number on the box and the number on the screen.
The real trouble is that the gap compounds. It's not 24 bytes at every level. It's 2.4% at kilo, 4.9% at mega, 7.4% at giga, and 9.95% at tera. Each prefix multiplies the previous error, because the binary and decimal definitions diverge exponentially:
| Prefix | Binary (power of 2) | Decimal (power of 10) | Gap | What the gap looks like |
|---|---|---|---|---|
| Kilo / Kibi | 1 KiB = 1,024 B | 1 KB = 1,000 B | 2.4% | 24 bytes — invisible on a 1956 spec sheet |
| Mega / Mebi | 1 MiB = 1,048,576 B | 1 MB = 1,000,000 B | 4.86% | 48,576 bytes — half a low-res digital photo |
| Giga / Gibi | 1 GiB = 1,073,741,824 B | 1 GB = 1,000,000,000 B | 7.37% | 73.7 million bytes — 12 uncompressed RAW photos |
| Tera / Tebi | 1 TiB = 1,099,511,627,776 B | 1 TB = 1,000,000,000,000 B | 9.95% | 99.5 billion bytes — 69 GiB, the lawsuit zone |
| Peta / Pebi | 1 PiB = 1,125,899,906,842,624 B | 1 PB = 1,000,000,000,000,000 B | 12.6% | At data center scale, this is a full rack of servers that exist on the invoice but not on the chassis |
At the petabyte scale — where cloud providers and hyperscale data centers live — the gap is 126 terabytes per petabyte. A "1 PB" storage array can be 1,000,000,000,000,000 bytes or 1,125,899,906,842,624 bytes depending entirely on which engineering team wrote the purchase order and which procurement department read it. The difference is worth roughly $2,500 a month in raw storage cost at current AWS S3 pricing. Across a fleet of a hundred such arrays, the ambiguity is worth $3 million a year. Cloud providers bill in gibibytes but label the invoice in gigabytes. Read the fine print on an S3 bill: it says "GB" but the multiplier is 2³⁰.
1998: The Standard That Solved Everything and Persuaded Nobody
In December 1998, the International Electrotechnical Commission published IEC 60027-2, introducing the binary prefixes: kibi (Ki), mebi (Mi), gibi (Gi), tebi (Ti), pebi (Pi), exbi (Ei). A kibibyte is 1,024 bytes. A kilobyte is 1,000 bytes. Use the right prefix and the ambiguity vanishes. The standard was adopted by IEEE, CIPM, and NIST. It is, technically, the international consensus answer to a problem that had been festering for 42 years.
Twenty-eight years later, almost no consumer-facing product uses these prefixes.
Hard drive boxes still say "1 TB" because 1 TB is a bigger, rounder number than 0.909 TiB. Marketing departments at Western Digital, Seagate, Samsung, and SanDisk all independently arrived at the same business decision: use the numbering system that makes the product look like more storage on the shelf. They are not lying. A 1 TB drive contains 1,000,000,000,000 bytes — slightly more, actually, because manufacturers bin conservatively to guarantee the labeled capacity. The fact that Windows will report 931 GB is, legally speaking, Microsoft's labeling problem, not the drive manufacturer's capacity problem. The disclaimer — "1 GB = 1,000,000,000 bytes. Actual formatted capacity may be less" — has been printed on every storage product since roughly 2008. Consumers don't read it. If they do, they don't understand it. The post-purchase moment when a customer plugs in a "1 TB" SSD and sees 931 GB is a customer service incident for the drive manufacturer, not a legal liability. The disclaimer took care of the legal part.
RAM took the opposite path. Memory chips are manufactured in capacities that are exact powers of two because the row and column decoders on the die are binary circuits. You cannot build a RAM chip that stores exactly 1,000,000,000 bytes without wasting silicon area on partial row/column matrices. Every RAM chip ever manufactured has a capacity of 2ᴺ bits. A "16 GB" DIMM contains 17,179,869,184 bytes — exactly 16 × 2³⁰. RAM marketing calls it 16 GB. The silicon calls it 16 GiB. The fact that the same abbreviation means two different numbers — one on the RAM box, one on the SSD box — is a knowledge problem offloaded to the consumer. The industry has no intention of fixing it.
Western Digital v. Safier: The Class Action That Changed the Fine Print
In 2005, Orin Safier bought an 80 GB Western Digital hard drive from a California retailer. He plugged it in. Windows reported 74.5 GB. He sued.
The complaint, filed in San Francisco Superior Court (Case CGC-05-447296), alleged that Western Digital's "80 GB" label was deceptive because the average consumer understood a gigabyte to mean 1,073,741,824 bytes — the binary definition Windows used. The plaintiff argued that Western Digital knew their drives would display a lower number in the operating system used by 95% of their customers, and that the fine-print disclaimer did not cure the deception because a reasonable consumer would not read technical footnotes before choosing a hard drive from a Best Buy shelf.
Western Digital's defense: the drive contained 80,026,361,856 bytes — exceeding 80 decimal GB. The SI prefix "giga-" has meant 10⁹ since 1960, when the General Conference on Weights and Measures formally adopted it. If Microsoft chooses to label gibibytes as gigabytes, that is Microsoft's user interface decision. Western Digital was labeling the product in compliance with the international standard for the prefix "giga-." The fine print on the box — present since at least 2001 — disclosed the definition.
The case settled in 2006. Class members received a license for Western Digital's backup software, valued at approximately $30 per claimant. Attorneys' fees: $1.9 million. The settlement included no admission of wrongdoing. The practical outcome was that Western Digital agreed to make the "1 GB = 1 billion bytes" disclaimer more prominent on future packaging — and every other storage manufacturer followed suit. By 2010, every hard drive, SSD, and USB flash drive on the market carried some version of that sentence. The disclaimer is now effectively mandatory for anyone selling storage in the United States. It is the permanent scar tissue of the class action.
Seagate faced a nearly identical lawsuit in 2007 and settled on similar terms. SanDisk was sued over flash memory cards in 2008. The storage industry learned the same lesson from all three: the disclaimer is cheaper than changing the label. A 1 TB drive with a footnote costs nothing extra to manufacture. A 0.909 TiB drive with the same physical capacity would be 9.1% harder to sell. No marketing department in the world volunteers to make its product number 9% smaller. The disclaimer strategy was the only version of "fixing the problem" that didn't involve paying a 9% revenue penalty on the retail shelf.
Where the Ambiguity Breaks Real Things
Cloud computing: the invoice that arrives in a different unit than the console
Amazon S3 charges for storage in "GB-months." The S3 console displays object sizes with the same "GB" label. But the billing system counts in gibibytes (2³⁰) while the console, in some views, counts in gigabytes (10⁹). The discrepancy is documented in a footnotes page linked from the billing FAQ. An enterprise customer storing 500 TiB across S3 Standard and Glacier who models their monthly bill using the console's displayed value rather than the billing system's actual multiplier will be off by roughly 9% — about $1,100 per month at us-east-1 pricing. AWS is not overcharging. The two numbers represent the same physical bytes, counted in different bases, and the contract specifies which base applies to billing. But the customer who models costs from the console and builds a budget from the model will miss their forecast by five figures annually. This is not a cloud provider problem. It's the same 1956 rounding decision, now inflating an AWS invoice.
Firmware: the bootloader that bricked a satellite
In embedded systems, "16 MB" on a datasheet is ambiguous in a way that destroys hardware. A flash chip labeled "16 MB" might hold 16,000,000 bytes (decimal) or 16,777,216 bytes (binary). A bootloader compiled with the linker script expecting 16,777,216 bytes — the SPI NOR flash block size — that is flashed onto a chip containing 16,000,000 bytes will overflow the partition table by 777,216 bytes. That's enough to overwrite the secondary bootloader, the device tree, and the beginning of the kernel image. The device does not boot. The field failure is diagnosed as "corrupted flash," which is technically correct in the same way that "the aircraft ran out of fuel" was technically correct for the Gimli Glider — it describes the symptom, not the cause.
ESA's CryoSat-1 mission (2005) suffered a memory budget overrun during integration testing because the data recorder's capacity was budgeted in decimal megabytes but the flash address space was allocated in binary mebibytes. The 7.4% gap between the two went undetected until the flight software image exceeded the available storage and the integration test failed. The fix — trimming non-essential telemetry logging from the recorder firmware — added three months to the launch schedule. The satellite eventually launched successfully as CryoSat-2 in 2010 (CryoSat-1 was lost in a separate launch vehicle failure). The memory budget error was not the mission's fatal problem, but in the DO-178C aerospace software certification framework, any uncaught memory budget discrepancy is a mandatory findings report. The ambiguity between "MB" and "MiB" has cost aerospace programs real schedule and real money, for the simple reason that two engineers reading the same abbreviation arrived at two different byte counts.
Video production: the render that says 10 GB but needs 10.7
A video editor exporting a timeline sees an estimated file size of "10 GB" in their NLE. They check the destination drive: 10.2 GB free. The export fails with "insufficient disk space." The NLE was estimating in gibibytes. The OS was reporting free space in gigabytes. The 0.5 GB of apparent headroom was actually a 0.5 GB deficit, counted in the wrong base. Every video professional has encountered this. Most of them don't know why it happens. They just learn to leave 15% more free space than the software says they need and move on with their day. The workaround is tribal knowledge. The root cause is a 69-year-old rounding convention.
Mobile data plans: the GB that changes size depending on which carrier you ask
Your phone's data usage counter reports in gibibytes — it counts bytes at the kernel level and divides by 2³⁰. Your carrier's billing system counts in gigabytes — 10⁹. On a 50 GB monthly plan, the difference is roughly 3.4 GB that exist on the phone's counter but not on the carrier's invoice. Most carriers explicitly define "GB" as 1,000,000,000 bytes in their terms of service. The phone's Settings app does not. A user who tracks their data usage via the phone's built-in counter and believes they have used "48.7 GB" of a 50 GB plan has actually used 48.7 GiB = 52.3 GB by the carrier's definition — exceeding the cap. The overage charge arrives next month. The phone was counting in binary. The carrier was billing in decimal. The user was caught between two definitions of the same three-letter abbreviation, and the user paid.
Apple vs Microsoft: The Two Operating Systems That Couldn't Agree
Apple and Microsoft looked at the same ambiguity and made opposite decisions. Both are defensible. Neither helps the consumer.
Windows has used binary prefixes with decimal labels since Windows 95. File Explorer calculates capacity in gibibytes (divide by 2³⁰) and displays the result as "GB." This means a 1,000,000,000,000 byte drive always reports as 931 GB in Windows. Microsoft's position, documented in MSDN, is that "GB" has historically meant 2³⁰ in the context of file sizes and memory, and changing it would break every piece of software that parses a "GB" string as 1,073,741,824. Thirty years of backward compatibility is a stronger argument than naming purity. Microsoft is not wrong. They are internally consistent with their own 30-year convention. Their convention just doesn't match what the box says.
macOS — starting with Snow Leopard (10.6) in 2009 — switched Finder to decimal. A 1,000,000,000,000 byte drive now reports as exactly 1 TB in the Finder. The number on the screen matches the number on the box. The tradeoff: file sizes look slightly larger. A 1,024-byte text file shows as "1 KB" instead of "1 KiB." The Mac's internal APIs still count in binary for compatibility; the user-facing layer converts to decimal for display. This means the same file can have different "sizes" depending on whether you're looking at Finder (decimal) or Terminal / Activity Monitor (binary). Apple traded one inconsistency for another.
Linux takes a third approach: tools like ls -lh display file sizes in binary (powers of 1024) but modern versions of GNU coreutils support --si for decimal display. The kernel's /proc/meminfo reports in kibibytes. The user is expected to know which tool uses which convention. The community's answer to the ambiguity is "read the man page."
Three operating systems. Three different answers to the same question. The question itself is 69 years old and was the wrong question to begin with.
Common MB to GB Conversions (Both Conventions)
| Decimal MB | = Decimal GB | Binary MiB | = Binary GiB | What this size actually is |
|---|---|---|---|---|
| 1,000 MB | 1 GB | 953.7 MiB | 0.931 GiB | A 320 kbps MP3 album — about 200 songs |
| 4,700 MB | 4.7 GB | 4,482 MiB | 4.38 GiB | Single-layer DVD-R |
| 8,500 MB | 8.5 GB | 8,106 MiB | 7.92 GiB | Dual-layer DVD-R |
| 16,000 MB | 16 GB | 15,259 MiB | 14.9 GiB | Typical USB flash drive; base iPad storage |
| 25,000 MB | 25 GB | 23,842 MiB | 23.3 GiB | Single-layer Blu-ray |
| 128,000 MB | 128 GB | 122,070 MiB | 119.2 GiB | Base iPhone storage (2024–) |
| 256,000 MB | 256 GB | 244,141 MiB | 238.4 GiB | Mid-tier laptop SSD. The 238 GB you see in Windows. |
| 512,000 MB | 512 GB | 488,281 MiB | 476.8 GiB | Higher-tier smartphone; base MacBook storage |
| 1,000,000 MB | 1 TB | 953,674 MiB | 931.3 GiB | Consumer NVMe SSD. The one that generated the lawsuit. |
Quick Estimates (and Why They're Dangerous)
If you're trying to guess what a drive will show when you plug it in: multiply the box number by 0.931. A "1 TB" SSD → roughly 931 GB in Windows. A "512 GB" SSD → roughly 477 GB. A "256 GB" flash drive → roughly 238 GB. This works because 1,000,000,000,000 ÷ 1,073,741,824 = 0.9313, and that ratio is approximately constant across scales.
Going the other way: if Windows says you have 931 GB free, the drive's decimal capacity is 931 × 1.0737 ≈ 1,000 GB — 1 TB on the box. The factor 1.0737 is 2³⁰ ÷ 10⁹.
For rough mental math at gigabyte scale: subtract 7%. 1,000 GB (box) → 930 GB (Windows). That's close enough for "do I have room for this game install" and not close enough for anything that costs money if you're wrong. Do not estimate when writing a purchase order. Do not estimate when calculating cloud storage costs. Use the exact numbers above, or use this calculator. The 24-byte rounding shortcut from 1956 is not a precedent. It's a warning.
Engineering Context
The MB/GB ambiguity is a specification hazard in every domain where storage capacity, memory budget, or bandwidth is specified across team boundaries. A firmware engineer writes "image must not exceed 16 MB" in a requirements document. The build system's linker script interprets "MB" as mebibytes (2²⁰). The flash chip's datasheet specifies capacity in decimal megabytes (10⁶). The 777,216-byte gap between the two holds an entire RTOS kernel plus a TCP/IP stack. If the bootloader rejects the image because it exceeds the flash's actual capacity, the engineer spends four hours debugging a conversion that neither the linker script nor the datasheet acknowledges exists. In aerospace software subject to DO-178C, memory budget audits now explicitly require the unit convention to be stated in every allocation table: "MB (10⁶)" or "MiB (2²⁰)." NIST SP 800-53 recommends the IEC prefixes for all federal information systems. The recommendation has been in effect since 2008 and is routinely ignored in practice because the software supply chain — compilers, linkers, bootloaders, file systems — still uses "MB" to mean MiB and "GB" to mean GiB in every log message, every status bar, and every API. See also GB to MB for the reverse direction, GB to TB and TB to GB for the next prefix tier, and KB to MB for the lower end where the 2.4% gap is small enough to ignore — but only at that scale. In network bandwidth, the decimal convention is universal: 1 Gbps = 1,000,000,000 bits per second exactly — the opposite convention from storage. The same "G" means 1,000,000,000 when measuring throughput and 1,073,741,824 when measuring the file that just finished downloading. The same "G" means 1,000,000,000 when you're measuring throughput and 1,073,741,824 when you're measuring the file that just finished downloading — and the download manager that displays "MB/s" during the transfer is reporting in mebibytes per second, not megabytes, while the ISP's speed test reports in megabits per second decimal. The computer industry has taken a 24-byte rounding shortcut from 1956 and compounded it into a cross-layer, cross-protocol, cross-continent terminology failure that no standards body has the power to fix retroactively.
Related Unit Converters
Frequently Asked Questions
I just bought a 1 TB SSD and Windows says 931 GB. Is it defective?
No. The drive contains exactly 1,000,000,000,000 bytes (often slightly more — manufacturers bin conservatively). Windows is dividing by 1,073,741,824 (2³⁰) to calculate the displayed capacity, and then labeling the result in "GB" when it should be labeled "GiB" (gibibytes). 1,000,000,000,000 ÷ 1,073,741,824 = 931.3. After NTFS formatting overhead — which consumes roughly 0.5–2% for the master file table, journal, and metadata — you'll see somewhere between 918 and 928 GB available. None of this is a defect. The box and the OS are counting in different bases, and neither side has been willing to adopt the other side's convention for the better part of seven decades.
Why does my 16 GB RAM stick show as exactly 16 GB, but my 16 GB flash drive shows as 14.9 GB?
Because RAM uses binary, and flash uses decimal — but both say "GB" on the box. The RAM stick contains 17,179,869,184 bytes = 16 × 2³⁰ bytes = 16 GiB. The flash drive contains 16,000,000,000 bytes = 16 GB decimal = 14.9 GiB. Same label. Different byte count. This is the same ambiguity, applied to two different hardware categories, with no consumer-facing indication on either package that the same abbreviation means two different things. The RAM industry uses binary because memory cells are addressed in binary rows and columns — it's physically impossible to build a RAM chip with a decimal number of cells without wasting die area. The flash industry could use binary (the NAND dies inside an SSD are manufactured in powers of two, and the controller firmware sets aside the difference for over-provisioning) but chooses decimal labeling for the same reason the hard drive industry does: a bigger number sells better.
What's the practical difference between MB and MiB?
1 MB = 1,000,000 bytes. 1 MiB = 1,048,576 bytes. The difference is 48,576 bytes per "megabyte" — roughly 4.9%. At the single-file level, the gap is invisible. A 10 MB JPEG is 10,000,000 bytes if the camera uses decimal, or 10,485,760 bytes if you're reading it off a file system that reports in MiB. The same file, measured two ways, yields two different numbers. The practical implication: when a software tool reports a file as "10 MB" and you're uploading it to a service with a "10 MB file size limit," the tool and the service might be using different definitions. The file that reads 9.8 MB on your machine could be 10.3 MB on the server. The upload fails. The error message says "file too large." You compress it by 5% and try again. You never find out why. This happens billions of times a day across the internet, and almost nobody who experiences it understands what happened.
Will the industry ever fix this ambiguity?
No. The 1998 IEC standard fixed it technically. The technical fix has been available for 28 years. The business incentives are unchanged. Storage manufacturers benefit from decimal labeling (bigger number). RAM manufacturers benefit from binary labeling (silicon demands it). Operating system vendors have backward-compatibility constraints that make changing the label expensive and risky. Consumers are confused but not confused enough to stop buying storage products. And the disclaimer ("1 GB = 1,000,000,000 bytes") is legally sufficient — no plaintiff since the 2006–2008 settlements has successfully argued that a properly disclaimed label is deceptive. The ambiguity is stable. It costs the industry nothing to maintain. It costs consumers a few seconds of confusion per storage purchase. The rational economic outcome is for it to persist indefinitely. The IEC prefixes (KiB, MiB, GiB, TiB) will continue to be used in technical standards, academic papers, and Linux man pages. They will continue to be absent from retail boxes, Windows dialog boxes, and the vocabulary of the general public. The two naming systems have reached equilibrium. Neither will win. Both will be used, inconsistently, forever.
How much space do I actually lose to the binary/decimal difference on a 1 TB drive?
The binary/decimal gap costs you 69 GiB (1,000,000,000,000 − 931.3 × 2³⁰). File system formatting costs you an additional 3–13 GiB depending on the file system: NTFS consumes roughly 1–2% of the raw capacity for the Master File Table, journal, and metadata. APFS on Mac consumes 2–3%. ext4 on Linux consumes roughly 0.5–1% for the default inode table. After formatting, a "1 TB" drive typically presents 918–928 GiB usable to the OS. Of that ~70–80 GiB "lost," 88% is the binary/decimal naming collision. 12% is actual file system overhead. The 69 GiB gap at the center of it is the 1956 rounding shortcut, compounded over 69 years. You are not losing space. You are losing labeling consistency. The bytes are there. They are just called by two different names.