Controlling download progress output in wget keeps long-running transfers understandable in interactive terminals and quiet in automation. A visible progress indicator exposes remaining time, current throughput, and stalled connections, while a hidden indicator prevents scheduled jobs from flooding log files with noise.
The wget client prints status lines, HTTP headers, and a progress indicator to standard error while streaming payload data directly to the destination file. Progress formatting is driven by the --progress option, which selects bar-style or dot-style indicators, and verbosity is tuned with flags such as --quiet, --no-verbose, and --verbose that add or remove protocol chatter around the transfer statistics.
Excessively chatty settings can generate multi‑megabyte logs from a single cron job, while overly quiet settings can hide HTTP errors and partial downloads behind a non‑zero exit code that no one checks. Typical Linux environments running wget 1.x allow safe experimentation in a shell, but updating shared defaults in /etc/wgetrc or system scripts changes behavior for every user and scheduled task, so changes benefit from being validated interactively before deployment.
Steps to show or hide download progress with wget:
- Run wget --version to confirm that the binary is installed and reachable on the current PATH.
$ wget --version GNU Wget 1.21.2 built on linux-gnu. ##### snipped #####
The version banner confirms that wget is available and lists build options that can affect HTTPS support and available progress styles.
- Download a test file with default settings to inspect the standard progress bar format.
$ wget https://example.com/largefile.zip --2024-09-16 12:01:34-- https://example.com/largefile.zip Resolving example.com (example.com)... 93.184.216.34 Connecting to example.com (example.com)|93.184.216.34|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 128482304 (122M) [application/zip] Saving to: ‘largefile.zip’ largefile.zip 100%[==================>] 122.52M 1.28MB/s in 98s 2024-09-16 12:03:12 (1.28 MB/s) - ‘largefile.zip’ saved [128482304/128482304]
The default mode shows a single updating bar that reports percentage, transferred size, throughput, and elapsed time on one line.
- Switch to dot-style binary output with --progress=dot:binary to produce compact, line-oriented progress suitable for log files.
$ wget --progress=dot:binary https://example.com/largefile.zip --2024-09-16 12:10:02-- https://example.com/largefile.zip Resolving example.com (example.com)... 93.184.216.34 Connecting to example.com (example.com)|93.184.216.34|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 128482304 (122M) [application/zip] Saving to: ‘largefile.zip’ largefile.zip 2%[ ] 2.45M 2.45MB/s largefile.zip 8%[ ] 9.80M 3.20MB/s largefile.zip 50%[=====> ] 61.26M 1.10MB/s largefile.zip 100%[================>] 122.52M 1.28MB/s
Dot-style progress appends new lines during the transfer, which preserves a full history of the download rate when logs are rotated or archived.
- Use bar-style output with --progress=bar:force to keep an ASCII bar visible even when output is redirected.
$ wget --progress=bar:force https://example.com/largefile.zip --2024-09-16 12:15:27-- https://example.com/largefile.zip Resolving example.com (example.com)... 93.184.216.34 Connecting to example.com (example.com)|93.184.216.34|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 128482304 (122M) [application/zip] Saving to: ‘largefile.zip’ largefile.zip 42%[=========> ] 52.26M 1.15MB/s largefile.zip 100%[====================>] 122.52M 1.30MB/s in 94s 2024-09-16 12:17:01 (1.30 MB/s) - ‘largefile.zip’ saved [128482304/128482304]
The bar:force style is useful when progress must remain visible through pipes or when terminal detection behaves inconsistently under multiplexers like tmux or screen.
- Reduce chatter while still keeping a compact summary by enabling non-verbose mode with --no-verbose.
$ wget --no-verbose https://example.com/largefile.zip 2024-09-16 12:20:41 URL:https://example.com/largefile.zip [128482304/128482304] -> "largefile.zip" [1]
Non-verbose mode hides intermediate progress details but prints a single summary line that includes timestamp, URL, size, and destination file.
- Hide progress and most status messages entirely by using quiet mode with --quiet and checking only the exit status.
$ wget --quiet https://example.com/largefile.zip $ echo $? 0
Quiet mode suppresses visible errors and progress output, so failed downloads can be missed if exit codes are not checked or monitored.
- Configure a preferred default progress style for interactive use by setting the progress directive in the user configuration file /~/.wgetrc.
~/.wgetrc progress = dot:binary
User-level settings in /~/.wgetrc override system defaults for that account and apply automatically without changing scripts or aliases.
- Verify that progress behavior matches expectations by running two transfers, one with explicit flags and one relying on configuration, and checking the resulting file.
$ rm -f largefile.zip $ wget --progress=bar:force https://example.com/largefile.zip ##### snipped ##### $ ls -lh largefile.zip -rw-r--r-- 1 user user 123M Sep 16 12:25 largefile.zip
Successful tuning produces consistent progress output across runs, an exit code of 0 for completed downloads, and files on disk with the expected size and timestamp.
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.
Comment anonymously. Login not required.
