Skip to content
HexaTransfer
Back to blog
File Transfer

File Transfer Over Slow Connections: Make It Work Anyway

Stuck with a slow internet connection? Learn techniques for successful file transfers even on limited bandwidth: compression, chunking, and scheduling.

To move a file over a slow connection, you need three things: aggressive compression before upload, a service with resumable chunked transfers (so an interruption doesn't restart from zero), and a time-of-day strategy that avoids peak congestion. A 2 GB video on a 3 Mbps upstream connection takes roughly 90 minutes uninterrupted, but with H.265 re-encoding it drops to 350 MB and 16 minutes. Slow doesn't mean impossible, it means you stop treating the transfer as a single shot and start treating it as a job that survives retries.

Establish what "slow" actually means

Run speedtest-cli or go to speedtest.net during the hour you plan to transfer. Write down the upload number. A "slow" connection for file transfer purposes is anything under 10 Mbps upstream, which includes most ADSL lines, rural fixed wireless, cellular hotspots outside LTE cities, satellite on Starlink's busier cells, and many older cable plans with 5 Mbps upstream caps.

Also test latency and jitter. A 5 Mbps connection with 40 ms latency behaves very differently from the same 5 Mbps with 250 ms latency and 80 ms jitter (typical on geostationary satellite or deeply congested cellular). High latency breaks single-stream uploads even at nominally decent bandwidth because TCP windowing can't fill the pipe.

Compression is the cheapest bandwidth

If you can cut the file's size, you've effectively doubled your connection. On video, HandBrake with H.265 at CRF 23 typically reduces file size 60 to 80 percent with no visible quality loss. On PDFs, Ghostscript with -dPDFSETTINGS=/ebook downsamples embedded images from 600 DPI to 150 DPI and often trims 70 percent. On image batches, converting JPEGs to WebP at quality 85 saves 30 to 40 percent.

Never send uncompressed TIFF, BMP, or WAV over a slow link. Never send a 4K export of a video that's going to be viewed on a phone. Match the output quality to the use case before you ever start uploading.

Pick a service with real resume support

Chunked uploads with resume are non-negotiable on flaky connections. tus.io-based services, Google Drive resumable uploads, S3 multipart, and OneDrive's upload session all survive TCP drops. WeTransfer and SwissTransfer resume within the browser tab if the connection blips. Smash handles resume cleanly up to several hours of session persistence.

Avoid anything that uses a single multipart/form-data POST for the whole file. That's how old PHP upload scripts work, and a 2 GB upload over a 5 Mbps connection that drops at 75 percent means restarting from 0 percent. Dropbox Transfer's 100 MB free cap uses a single POST; it's fine for small files, painful for anything bigger.

Schedule for low-traffic windows

ISP congestion on shared residential infrastructure peaks between 7 PM and 11 PM. On a 5 Mbps upstream, that peak can drop throughput to 1.5 Mbps. The same connection at 3 AM often delivers the full 5 Mbps. A transfer that would take 4 hours at 9 PM finishes in 75 minutes overnight.

Queue the upload before bed. Leave the laptop plugged in, screensaver and sleep disabled (caffeinate on macOS, Don't let the computer sleep on Windows power settings). Check it in the morning.

Use the wired connection you have

Switching a slow laptop from Wi-Fi to Ethernet doesn't add bandwidth past the internet link's ceiling, but it eliminates the 5 to 15 percent of retransmits Wi-Fi typically adds on congested 2.4 GHz bands. On a 3 Mbps upstream, recovering 10 percent of packet efficiency means 300 Kbps more usable throughput.

If you're tethering from a phone, USB tethering outperforms Wi-Fi hotspot by avoiding the extra Wi-Fi radio hop.

Split the file when the service can't

If you're stuck with a tool that doesn't support chunked upload, split the file yourself. split -b 100M bigfile.mov part. on macOS/Linux or 7-Zip's "Split to volumes" option on Windows breaks a 2 GB file into 20 pieces of 100 MB. Upload each piece separately, and if one fails, you only re-upload 100 MB instead of the whole thing.

The recipient reassembles with cat part.* > bigfile.mov or by extracting the 7-Zip volume. Not elegant, but reliable on hotel Wi-Fi.

Turn off everything else on the network

On a 5 Mbps upstream, a single Zoom HD call eats 2.5 Mbps, leaving 2.5 Mbps for the transfer. iCloud Photos syncing after a vacation import can consume the entire upstream. Backblaze, Carbonite, Dropbox, and Google Drive all push in the background.

Pause them explicitly. macOS Activity Monitor's Network tab shows who's using bandwidth; Windows 11 Task Manager's Performance tab has the same info. Temporarily quit anything over 50 KB/s upload.

Cellular and tethered connections: the metered trap

Tethering from a cellphone on an "unlimited" plan is usually fine up to a usage cap (typically 30 to 100 GB per month), after which the carrier drops you to 1 to 5 Mbps or de-prioritises you on congested cells. AT&T, Verizon, and T-Mobile all do this on their consumer plans.

A 10 GB transfer in the middle of the month is usually fine. The same transfer after you've already streamed Netflix on cellular all month can crawl. Check your data usage before you start.

Satellite and high-latency considerations

Starlink delivers 20 to 100 Mbps uploads at 25 to 60 ms latency in most regions, which is perfectly usable. Geostationary satellite (HughesNet, Viasat) runs at 600 to 800 ms latency, which causes single-stream TCP uploads to stall far below the advertised bandwidth. Services that run parallel chunked uploads fare far better here because each parallel stream gets its own congestion window.

If you're on GEO satellite, use a transfer service explicitly designed for parallel chunked upload and keep expectations realistic: 5 GB in an evening is achievable, 50 GB probably isn't.

Simple rule: match the tool to the pipe

On slow connections, reliability matters more than speed. A service that resumes cleanly after a drop and runs parallel chunks will out-perform a faster single-stream service every time. HexaTransfer uses parallel chunked uploads with AES-256-GCM encryption and retries failed chunks automatically, which is exactly what a flaky 3 Mbps hotel connection needs.

Try it at hexatransfer.com — free, no account, 10 GB max.

Send large files securely with end-to-end encryption

Transfer files up to 10 GB for free with end-to-end encryption. No account required. Your files are encrypted in your browser before upload — no one else can read them.

Send a file