Bandwidth / Download Time Calculator
Estimate download time from file size and connection speed, with throughput conversions.
Results update as you type.
About this calculator
A bandwidth calculator works out how long a file takes to transfer over a connection of a given speed, and the key to getting it right is the bits-versus-bytes distinction. File sizes are quoted in bytes — KB, MB, GB, TB — while connection speeds are quoted in bits per second — Kbps, Mbps, Gbps — and a byte is 8 bits. So the download time is the file size converted to bits (× 8), divided by the effective bit rate of the link. That single factor of 8 is why a connection’s headline number never matches the download figure you watch tick by.
As a worked example, a 1 GB file over a 100 Mbps connection is 1 GB × 8 = 8,000 megabits, and 8,000 / 100 = 80 seconds at the theoretical maximum — because 100 Mbps is only about 12.5 MB per second. Add a protocol-overhead allowance for the real world (TCP/IP headers, retransmissions, shared links) and the time stretches accordingly; a 10% overhead pushes that 80 s to about 89 s. The calculator also lists the speed expressed in bps, Kbps, Mbps, Gbps and MB/s for quick cross-checks.
You can switch between decimal units (1 KB = 1,000 bytes, the convention ISPs and drive makers use) and binary units (1 KiB = 1,024 bytes, how operating systems count), which shifts the numbers by a few percent — a "1 TB" decimal drive is about 931 binary GiB. This makes the tool handy for estimating backups and large downloads, sizing an internet plan, planning video streaming or uploads, and sanity-checking why a transfer is taking as long as it is.
Frequently asked questions
Why is my download slower than my connection speed?
Speeds are quoted in megabits per second but files are measured in megabytes — a byte is 8 bits, so a 100 Mbps line moves about 12.5 MB per second at best. Protocol overhead, shared bandwidth and server limits reduce it further, which the overhead field models.
What is the difference between decimal and binary sizes?
Decimal units (used by ISPs and drive makers) treat 1 KB as 1000 bytes; binary units treat 1 KiB as 1024 bytes. A "1 TB" decimal drive is about 931 binary GiB, so the convention changes the transfer time slightly.
How do I convert Mbps to MB/s?
Divide by 8: 100 Mbps ÷ 8 = 12.5 MB/s. The calculator does this automatically and reports the resulting time in days, hours, minutes and seconds.
What should I set the protocol overhead to?
Real transfers lose a slice to TCP/IP headers, handshakes and retransmissions. 5–10% is a reasonable allowance for a healthy wired link; use more for Wi-Fi, mobile or congested connections. It shaves the effective speed and lengthens the estimate.
Why is 1 GB not always the same number of bytes?
Under the decimal convention 1 GB is 1,000,000,000 bytes, but operating systems often count in binary where 1 GiB is 1,073,741,824 bytes. Switch the byte-convention option to match how your file size was measured for an accurate transfer time.
How long to download a large file on my connection?
Enter the file size and your plan speed and read off the time. For instance a 25 GB game over 100 Mbps takes roughly 33 minutes at best, before overhead — the tool breaks the result into days, hours, minutes and seconds.
Does this measure my actual internet speed?
No — it estimates transfer time from a speed you supply, it does not test your line. Run a separate speed test to find your real throughput, then enter that figure here for a realistic download-time estimate.
API — use this calculator from code
Call this calculator as a free JSON endpoint — no key required. Send the field values below as query parameters or JSON. Read the full API docs →
Endpoint
GET https://calculator.free/api/v1/bandwidth/
curl
curl "https://calculator.free/api/v1/bandwidth/?size=1&size_unit=GB&speed=100&speed_unit=Mbps"
JavaScript fetch()
const r = await fetch(
"https://calculator.free/api/v1/bandwidth/?" + new URLSearchParams({
"size": "1",
"size_unit": "GB",
"speed": "100",
"speed_unit": "Mbps"
}));
const data = await r.json();
console.log(data.results);
Results are estimates for general guidance only, not financial, medical or tax advice.