TechCompare LogoTechCompare

Why is my file transfer slower than my internet connection? TCP window, latency, and overhead explained

A transatlantic transfer on a 1 Gbps link with the default 64 KB TCP window peaks at about 6.55 Mbps, which is 0.66% of the rated speed. The link is fine, the window is the bottleneck. Window scaling or parallel streams close the gap.

If your internet connection is rated 1 Gbps but your cross-country file transfer peaks at 5 or 6 Mbps, the link is not broken and your ISP is not lying. The bottleneck is the TCP receive window on a high-latency path. A 1 Gbps link at 80 ms transatlantic round-trip with the default 64 KB window delivers about 6.55 Mbps, which is 0.66% of the rated speed. The link could carry 1000 Mbps, but TCP is only allowed to put 64 KB of data in flight at a time, and the acknowledgment takes 80 ms to cycle back.

By TechCompare · Updated

Transfer time
1d 9h 54m 30s
Window-limited to 6.6 Mbps
File size
100 GB
100 GB
Link speed
1,000 Mbps
Gigabit Ethernet (1000 Mbps)
Effective throughput
6.6 Mbps
at 80 ms RTT
Link utilized
0.66%
Bottleneck: TCP window

Calculator

Data Transfer Calculator

Configuration

Mbps

Latency & TCP window model

Window-limited to 6.6 Mbps

Model is on with 80 ms RTT (Transatlantic) and a 64 KB unscaled TCP receive window. Change the settings below to see how a different RTT or window affects the transfer.

ms

NY to London, ~5500 km

KB

Window scaling lets the TCP window grow past the 64 KB limit (up to 1 GiB). Modern Windows, Linux, and macOS enable it by default, but older firewalls, load balancers, and legacy consumer routers silently strip the option, reintroducing the 64 KB cap at ~40+ ms RTT.

Estimated Transfer Time
1d 9h 54m 30s

Bandwidth-delay product limit

Link speed
1 Gbps
rated
Effective throughput
6.6 Mbps
capped by 64 KB window / 80 ms RTT
Link used
0.66%
of rated speed

The TCP window, not the link, is the bottleneck. Your 1 Gbps connection is delivering 0.66% of its rated speed because the receive window (64 KB) can't stay full long enough at 80 ms RTT. That's the bandwidth-delay product at work.

Speed Comparison

USB 2.0
27m 46s
480 Mbps
USB 4 / Thunderbolt 4
20s
40 Gbps
Gigabit Ethernet
13m 20s
1 Gbps
Selected
10 Gigabit Ethernet
1m 20s
10 Gbps
WiFi 5 (ac)
33m 20s
400 Mbps
WiFi 7 (be)
2m 40s
5 Gbps
SATA SSD
3m 1s
4.4 Gbps
NVMe Gen4 SSD
14s
56 Gbps

How this is calculated

There are several reasons a transfer runs below the link rate, and the bandwidth-delay product is the most common one people miss. The checklist, roughly in order of likelihood: the TCP window is smaller than the bandwidth-delay product (common on WAN and cloud transfers), the transfer tool is single-threaded and cannot parallelize, the disk at one end cannot sustain the link rate, the link is shared and contended, or the protocol (SMB, NFS, HTTPS) has per-connection overhead. On a local LAN the window almost never matters because the RTT is under 1 ms and even a 64 KB window cycles fast enough to fill a 1 Gbps link. On a WAN the window is the first thing to check, and the test is whether enabling window scaling materially changes the throughput.

Verdict

A file transfer running at a fraction of the rated link speed is almost always bottlenecked by the TCP receive window on a high-latency path rather than by the link itself, and the 1 Gbps transatlantic example is the cleanest proof: at 80 ms round-trip the default 64 KB window delivers 6.55 Mbps, which is 0.66% of the 1000 Mbps the link can carry. The diagnostic order that resolves most real cases is to check whether window scaling is negotiated first (because that is the cheapest fix and the most common silent failure), then check whether the transfer tool is single-threaded, then check whether the disk at either end can sustain the link rate, then suspect link contention. The structural reason a naive size-over-speed calculator misdiagnoses this is that it assumes the link is the only bottleneck, which is true on a LAN and false the moment the RTT crosses roughly 10 ms.

More WAN scenarios

100 GB over USB 3.0
A 100 GB transfer over USB 3.0 works out to exactly 2 minutes 40 seconds at the interface's 5 Gbps peak rate.
View details ➜
1 TB over USB 3.0
A 1 TB transfer over USB 3.0 works out to 26 minutes 40 seconds at the interface's 5 Gbps peak data rate.
View details ➜
4 GB over USB 2.0
A 4 GB transfer over USB 2.0 works out to 1 minute 6 seconds at the interface's 480 Mbps peak rate.
View details ➜

Frequently asked questions

Why is my transfer speed slower than my internet speed?
On a long-distance transfer the bottleneck is usually the TCP receive window, not the link. The effective throughput is window size divided by round-trip time, which on a 1 Gbps transatlantic link with the default 64 KB window works out to about 6.55 Mbps, or 0.66% of the rated speed.
How do I speed up a slow WAN file transfer?
First, confirm TCP window scaling is enabled on both endpoints and not stripped by a middlebox. Second, use a tool that opens parallel streams (rsync with parallel jobs, SMB Multichannel, or a tuned FTP client). Third, check that the disk at both ends can sustain the link rate. Each of these can be the bottleneck on its own.
Is my ISP throttling my long-distance transfers?
Usually no. Active throttling is rare. The far more common explanation is the TCP window bandwidth-delay product, which caps throughput at window / RTT on high-latency paths. If a local speed test shows full rate but a cross-country transfer crawls, the link is fine and the window is the bottleneck.
Does a VPN make WAN transfer latency worse?
Often yes, by adding encryption overhead and sometimes an extra network hop. More importantly, some VPN clients reset TCP window settings or disable window scaling for compatibility, which reintroduces the 64 KB cap on links that need a much larger window.