Limiting download speed for wget keeps large transfers from saturating shared links or desktop connections. Throttling background downloads prevents sluggish shells, video calls, or web browsing while archives, images, or backups move across the network.
The wget client implements local throttling with the --limit-rate option, applying an average per-connection cap in bytes per second. When a cap is active, wget periodically sleeps during the transfer, interpreting suffixes such as k, m, and g as multiples of 1024 to keep the observed rate near the configured value.
Rate limiting remains approximate and must account for protocol overhead, server behavior, and competing traffic on the same link. Aggressively low caps can cause HTTP timeouts or extend jobs beyond maintenance windows, whereas overly generous limits may still produce brief bursts that stress upstream routers or metered connections; selecting conservative values and verifying actual throughput on the target Linux system avoids surprises in automation and scheduled tasks.
Steps to throttle download speed with wget:
- Open a terminal on the target Linux system with access to the network on which throttling is required.
- Decide on a maximum download rate in kilobytes or megabytes per second that leaves sufficient bandwidth for interactive workloads.
- Start a download with a conservative kilobyte-per-second cap using the --limit-rate option.
$ wget --limit-rate=100k https://downloads.example.net/files/largefile.zip --2026-01-10 06:06:45-- https://downloads.example.net/files/largefile.zip Resolving downloads.example.net (downloads.example.net)... 203.0.113.50 Connecting to downloads.example.net (downloads.example.net)|203.0.113.50|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 2097152 (2.0M) [application/zip] Saving to: 'largefile.zip' 0K .......... .......... .......... .......... .......... 2% 76.8K 26s 50K .......... .......... .......... .......... .......... 4% 158K 19s 100K .......... .......... .......... .......... .......... 7% 77.7K 20s 150K .......... .......... .......... .......... .......... 9% 157K 18s 200K .......... .......... .......... .......... .......... 12% 78.5K 18s 250K .......... .......... .......... .......... .......... 14% 158K 17s 300K .......... .......... .......... .......... .......... 17% 78.1K 17s 350K .......... .......... .......... .......... .......... 19% 153K 16s 400K .......... .......... .......... .......... .......... 21% 79.3K 16s 450K .......... .......... .......... .......... .......... 24% 77.8K 16s 500K .......... .......... .......... .......... .......... 26% 153K 15s 550K .......... .......... .......... .......... .......... 29% 78.1K 15s 600K .......... .......... .......... .......... .......... 31% 160K 14s 650K .......... .......... .......... .......... .......... 34% 77.1K 14s 700K .......... .......... .......... .......... .......... 36% 160K 13s 750K .......... .......... .......... .......... .......... 39% 77.2K 12s 800K .......... .......... .......... .......... .......... 41% 78.8K 12s 850K .......... .......... .......... .......... .......... 43% 157K 11s 900K .......... .......... .......... .......... .......... 46% 77.4K 11s 950K .......... .......... .......... .......... .......... 48% 161K 10s 1000K .......... .......... .......... .......... .......... 51% 76.9K 10s 1050K .......... .......... .......... .......... .......... 53% 160K 9s 1100K .......... .......... .......... .......... .......... 56% 77.2K 9s 1150K .......... .......... .......... .......... .......... 58% 156K 8s 1200K .......... .......... .......... .......... .......... 61% 79.2K 8s 1250K .......... .......... .......... .......... .......... 63% 76.8K 8s 1300K .......... .......... .......... .......... .......... 65% 158K 7s 1350K .......... .......... .......... .......... .......... 68% 78.1K 7s 1400K .......... .......... .......... .......... .......... 70% 157K 6s 1450K .......... .......... .......... .......... .......... 73% 78.3K 5s 1500K .......... .......... .......... .......... .......... 75% 156K 5s 1550K .......... .......... .......... .......... .......... 78% 78.2K 4s 1600K .......... .......... .......... .......... .......... 80% 78.2K 4s 1650K .......... .......... .......... .......... .......... 83% 155K 3s 1700K .......... .......... .......... .......... .......... 85% 77.9K 3s 1750K .......... .......... .......... .......... .......... 87% 156K 2s 1800K .......... .......... .......... .......... .......... 90% 78.7K 2s 1850K .......... .......... .......... .......... .......... 92% 158K 1s 1900K .......... .......... .......... .......... .......... 95% 77.9K 1s 1950K .......... .......... .......... .......... .......... 97% 154K 0s 2000K .......... .......... .......... .......... ........ 100% 74.9K=20s 2026-01-10 06:07:05 (99.9 KB/s) - 'largefile.zip' saved [2097152/2097152]The --limit-rate value applies per connection, so multiple concurrent wget processes each receive their own cap.
- Apply a higher megabyte-per-second cap for faster links while still preventing full link saturation.
$ wget --limit-rate=2m https://downloads.example.net/files/tool.tar.gz --2026-01-10 06:07:05-- https://downloads.example.net/files/tool.tar.gz Resolving downloads.example.net (downloads.example.net)... 203.0.113.50 Connecting to downloads.example.net (downloads.example.net)|203.0.113.50|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 786432 (768K) [application/gzip] Saving to: 'tool.tar.gz' 0K .......... .......... .......... .......... .......... 6% 131M 0s 50K .......... .......... .......... .......... .......... 13% 110M 0s 100K .......... .......... .......... .......... .......... 19% 249M 0s 150K .......... .......... .......... .......... .......... 26% 135M 0s 200K .......... .......... .......... .......... .......... 32% 328M 0s 250K .......... .......... .......... .......... .......... 39% 114M 0s 300K .......... .......... .......... .......... .......... 45% 155M 0s 350K .......... .......... .......... .......... .......... 52% 191M 0s 400K .......... .......... .......... .......... .......... 58% 241K 0s 450K .......... .......... .......... .......... .......... 65% 121M 0s 500K .......... .......... .......... .......... .......... 71% 108M 0s 550K .......... .......... .......... .......... .......... 78% 76.8M 0s 600K .......... .......... .......... .......... .......... 84% 208M 0s 650K .......... .......... .......... .......... .......... 91% 244M 0s 700K .......... .......... .......... .......... .......... 97% 260M 0s 750K .......... ........ 100% 233M=0.2s 2026-01-10 06:07:05 (3.54 MB/s) - 'tool.tar.gz' saved [786432/786432]Suffixes k, m, and g are interpreted as kibibytes, mebibytes, and gibibytes per second, respectively, using a base of 1024.
- Combine throttling with recursive or scripted downloads to keep large mirroring jobs from monopolizing bandwidth.
$ wget --limit-rate=300k --recursive --no-parent https://www.example.com/repo/ --2026-01-10 06:07:05-- https://www.example.com/repo/ Resolving www.example.com (www.example.com)... 203.0.113.50 Connecting to www.example.com (www.example.com)|203.0.113.50|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 174 [text/html] Saving to: 'www.example.com/repo/index.html' 0K 100% 10.9M=0s 2026-01-10 06:07:05 (10.9 MB/s) - 'www.example.com/repo/index.html' saved [174/174] FINISHED --2026-01-10 06:07:05-- Total wall clock time: 0.04s Downloaded: 1 files, 174 in 0s (10.9 MB/s)Very low limits for recursive transfers can stretch jobs across maintenance windows or quiet periods and increase the chance of remote timeouts or interrupted sessions.
- Monitor runtime bandwidth usage to confirm that effective throughput remains near the configured cap.
$ sudo nethogs -t -c 2 Adding local address: 192.0.2.40 Ethernet link detected Refreshing: unknown TCP/0/0 0 0 Refreshing: unknown TCP/0/0 0 0
Tools such as nethogs, iftop, or interface graphs from monitoring systems help validate that throttled transfers behave as expected.
- Inspect the final summary line printed by wget to confirm that the reported average download speed does not exceed the configured limit.
$ wget --limit-rate=100k https://downloads.example.net/files/largefile.zip --2026-01-10 06:07:07-- https://downloads.example.net/files/largefile.zip Resolving downloads.example.net (downloads.example.net)... 203.0.113.50 Connecting to downloads.example.net (downloads.example.net)|203.0.113.50|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 2097152 (2.0M) [application/zip] Saving to: 'largefile.zip.1' 0K .......... .......... .......... .......... .......... 2% 77.2K 26s 50K .......... .......... .......... .......... .......... 4% 159K 19s 100K .......... .......... .......... .......... .......... 7% 77.3K 20s 150K .......... .......... .......... .......... .......... 9% 157K 18s 200K .......... .......... .......... .......... .......... 12% 78.5K 18s 250K .......... .......... .......... .......... .......... 14% 157K 17s 300K .......... .......... .......... .......... .......... 17% 78.4K 17s 350K .......... .......... .......... .......... .......... 19% 154K 16s 400K .......... .......... .......... .......... .......... 21% 78.6K 16s 450K .......... .......... .......... .......... .......... 24% 78.3K 16s 500K .......... .......... .......... .......... .......... 26% 156K 15s 550K .......... .......... .......... .......... .......... 29% 77.5K 15s 600K .......... .......... .......... .......... .......... 31% 157K 14s 650K .......... .......... .......... .......... .......... 34% 78.4K 14s 700K .......... .......... .......... .......... .......... 36% 152K 13s 750K .......... .......... .......... .......... .......... 39% 78.3K 12s 800K .......... .......... .......... .......... .......... 41% 78.8K 12s 850K .......... .......... .......... .......... .......... 43% 155K 11s 900K .......... .......... .......... .......... .......... 46% 78.1K 11s 950K .......... .......... .......... .......... .......... 48% 155K 10s 1000K .......... .......... .......... .......... .......... 51% 77.8K 10s 1050K .......... .......... .......... .......... .......... 53% 161K 9s 1100K .......... .......... .......... .......... .......... 56% 77.1K 9s 1150K .......... .......... .......... .......... .......... 58% 160K 8s 1200K .......... .......... .......... .......... .......... 61% 77.0K 8s 1250K .......... .......... .......... .......... .......... 63% 78.1K 8s 1300K .......... .......... .......... .......... .......... 65% 160K 7s 1350K .......... .......... .......... .......... .......... 68% 77.8K 7s 1400K .......... .......... .......... .......... .......... 70% 158K 6s 1450K .......... .......... .......... .......... .......... 73% 77.1K 5s 1500K .......... .......... .......... .......... .......... 75% 158K 5s 1550K .......... .......... .......... .......... .......... 78% 78.6K 4s 1600K .......... .......... .......... .......... .......... 80% 77.3K 4s 1650K .......... .......... .......... .......... .......... 83% 156K 3s 1700K .......... .......... .......... .......... .......... 85% 78.7K 3s 1750K .......... .......... .......... .......... .......... 87% 155K 2s 1800K .......... .......... .......... .......... .......... 90% 78.9K 2s 1850K .......... .......... .......... .......... .......... 92% 152K 1s 1900K .......... .......... .......... .......... .......... 95% 78.3K 1s 1950K .......... .......... .......... .......... .......... 97% 155K 0s 2000K .......... .......... .......... .......... ........ 100% 75.9K=20s 2026-01-10 06:07:27 (100 KB/s) - 'largefile.zip.1' saved [2097152/2097152]An average rate at or below the configured limit indicates successful throttling, especially when cross-checked against external network monitoring.
Mohd Shakir Zakaria is a cloud architect with deep roots in software development and open-source advocacy. Certified in AWS, Red Hat, VMware, ITIL, and Linux, he specializes in designing and managing robust cloud and on-premises infrastructures.
