MB, Mb, MiB: why your 100 Mbps connection uploads at 11 MB/s

Three different quantities are all abbreviated to something that looks like "MB", and the gap between them is exactly the gap between the speed you pay for and the speed you see.

Updated:

Bits and bytes

A byte is eight bits. Network speeds are quoted in bits per second; file sizes are in bytes. The abbreviations differ by one letter: Mb or Mbps is megabits, MB is megabytes.

So the conversion is a division by eight. A 100 Mbps connection moves at most 12.5 MB/s. In practice, protocol overhead — TCP, TLS, HTTP framing — takes another 5–10%, so about 11 MB/s is the realistic ceiling. Nothing is wrong with your connection; the number on the bill was never the same unit as the number in the progress bar.

Advertised speedTheoretical MB/sRealistic MB/s1 GB takes about
10 Mbps1.25~1.115 minutes
50 Mbps6.25~5.63 minutes
100 Mbps12.5~111.5 minutes
500 Mbps62.5~5618 seconds
1 Gbps125~1109 seconds

The second gap: MB versus MiB

Storage and network vendors use decimal units: 1 MB = 1,000,000 bytes, 1 GB = 1,000,000,000. Operating systems have traditionally used binary ones: 1 MiB = 1,048,576 bytes, 1 GiB = 1,073,741,824 — and Windows displays those while labelling them "MB" and "GB".

The gap compounds: about 2.4% at the kilobyte level, 4.9% at megabytes, 7.4% at gigabytes, and 10% at terabytes. That is the entire explanation for why a 1 TB drive shows up as roughly 931 GB, and why a file your phone calls 4.7 GB may be quoted as 5.05 GB by a service that measures in decimal. Nobody is rounding dishonestly; there are two conventions and only one set of abbreviations. macOS switched to decimal years ago, which is why the same file can show different sizes on a Mac and a PC.

Advertisement

Why upload is the slow direction

Most home connections are asymmetric: cable and VDSL are engineered on the assumption that people consume far more than they publish, so the upstream channel is a fraction of the downstream. A "100 Mbps" cable plan may well have 10 Mbps up. Fibre is usually symmetric, and 5G varies enormously with signal.

Sending a file uses the upstream. This is why receiving a 2 GB file feels instant and sending the same file takes twenty minutes on the same connection — and it is worth checking your actual upload figure before you promise someone a delivery time. A speed test reports both numbers; the second one is the one that matters here.

Estimating a transfer honestly

  1. Take your upload speed in Mbps and divide by 8 → MB/s.
  2. Subtract about 10% for protocol overhead.
  3. Divide the file size in MB by that number → seconds.
  4. Add time for anything the sender does before uploading — encryption, compression, hashing — which on a large file is not free.
  5. If it is a phone on Wi-Fi, add a generous margin: the radio, the distance to the router and other traffic on the network move this more than any of the above.

Worked example: a 1.5 GB video on a 20 Mbps upload. 20 ÷ 8 = 2.5 MB/s, less overhead ≈ 2.25 MB/s. 1500 ÷ 2.25 ≈ 665 seconds, about 11 minutes. If a progress bar is telling you 3 minutes, it is measuring how fast your browser is handing data to the operating system, not how fast it is leaving the building.

More guides

Try SendMyFile

Encrypt a file in your browser and hand it over with a 9-digit code. No account, and it deletes itself.

Try SendMyFile