You pay for 100 Mbps. Your browser downloads at 11 MB/s. It looks like you're getting a ninth of what you bought. You're getting essentially all of it — the two figures are quoted in different units, and one is eight times the other by definition.
The factor of eight
A bit is a single binary digit. A byte is eight bits. Network links are measured in bits per second; files and transfers are measured in bytes.
The abbreviations differ by one letter's case, which is the entire problem:
| Written | Reads as | Means | Used for |
|---|---|---|---|
| Mbps / Mbit/s | megabits per second | 1,000,000 bits/s | Link speed, plan speed |
| MB/s | megabytes per second | 1,000,000 bytes/s | Download progress, disk speed |
To go from Mbps to MB/s, divide by 8. To go back, multiply by 8. Both units here use decimal prefixes, so there is no 1,024 complication in this particular conversion — unlike storage capacity, where there is.
What each plan speed actually delivers
| Plan | Theoretical max | Realistic sustained | 4 GB file |
|---|---|---|---|
| 50 Mbps | 6.25 MB/s | ~5.5 MB/s | ~12 min |
| 100 Mbps | 12.5 MB/s | ~11 MB/s | ~6 min |
| 300 Mbps | 37.5 MB/s | ~33 MB/s | ~2 min |
| 500 Mbps | 62.5 MB/s | ~56 MB/s | ~72 s |
| 1 Gbps | 125 MB/s | ~110 MB/s | ~36 s |
The "realistic" column is roughly 88–90% of theoretical. That gap is the second part of the story.
Where the rest of the gap goes
Even after the divide-by-eight, you will not see the full theoretical number. The missing 10–15% is not waste — it is the machinery that makes the connection work:
- Protocol overhead. Every packet carries TCP and IP headers, typically 40 bytes on a payload of about 1,460. That alone is roughly 2.7%.
- Ethernet or link-layer framing. Another few percent for frame headers, checksums and inter-frame gaps.
- Encryption. TLS adds record headers and padding.
- TCP behaviour. Connections ramp up rather than starting at full speed, and any packet loss triggers a back-off. Short transfers may never reach the ceiling at all.
- The other end. The server, or the number of people sharing it, is often the real limit. Your line is rarely the bottleneck on a fast connection.
A connection sustaining 88% of its rated speed on a large single-stream download is performing normally. If you are seeing 50% or less on a consistent basis, that is worth investigating — Wi-Fi, congestion or the source server are the usual candidates, in that order.
Working out what speed you need
Streaming services publish their requirements in Mbps, so no conversion is needed to compare them against a plan. Converting to MB/s is useful for the other question — how much data a habit consumes.
| Activity | Typical need | In MB/s | Per hour |
|---|---|---|---|
| Music streaming | 0.3 Mbps | 0.04 MB/s | ~0.14 GB |
| SD video | 3 Mbps | 0.38 MB/s | ~1.4 GB |
| HD video (1080p) | 5–8 Mbps | 0.6–1.0 MB/s | ~2.3–3.6 GB |
| 4K video | 15–25 Mbps | 1.9–3.1 MB/s | ~6.8–11 GB |
| Video call (HD) | 2–4 Mbps | 0.25–0.5 MB/s | ~0.9–1.8 GB |
Two 4K streams at once need 50 Mbps, which is why a household on a 50 Mbps plan hits problems that a single user never notices. Requirements add; they do not average.
Wired interfaces have the same trap
The bit/byte split runs through hardware specifications too, and the mixture is the reason interface comparisons are so confusing:
- Gigabit Ethernet: 1 Gbps = 125 MB/s theoretical.
- USB 3.0: 5 Gbps = 625 MB/s theoretical, well under that in practice.
- SATA III: 6 Gbps = 750 MB/s theoretical, about 550 MB/s real.
- A typical NVMe SSD: 3,000+ MB/s — quoted in bytes, because storage is.
Notice that interfaces are sold in bits and drives in bytes. Comparing a "6 Gbps" port against a "550 MB/s" drive requires the conversion before the two numbers mean anything next to each other.
Why are links measured in bits at all?
Because a link genuinely transmits bits, and it does not know or care where byte boundaries fall. Early serial protocols used framing that did not use eight-bit bytes at all, and line coding schemes still transmit more raw bits than the payload contains. The bit is the honest unit for a channel; the byte is the honest unit for a file. Both conventions are correct in their own domain, which is why neither is going away.