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.4 built on linux-gnu. -cares +digest -gpgme +https +ipv6 +iri +large-file -metalink +nls +ntlm +opie +psl +ssl/openssl Wgetrc: /home/user/.wgetrc (user) /etc/wgetrc (system) Locale: /usr/share/locale Compile: gcc -DHAVE_CONFIG_H -DSYSTEM_WGETRC="/etc/wgetrc" -DLOCALEDIR="/usr/share/locale" -I. -I../../src -I../lib -I../../lib -Wdate-time -D_FORTIFY_SOURCE=3 -DHAVE_LIBSSL -DNDEBUG -g -O2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -ffile-prefix-map=/build/wget-SlgjzS/wget-1.21.4=. -flto=auto -ffat-lto-objects -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -fdebug-prefix-map=/build/wget-SlgjzS/wget-1.21.4=/usr/src/wget-1.21.4-1ubuntu4.1 -DNO_SSLv2 -D_FILE_OFFSET_BITS=64 -g -Wall Link: gcc -DHAVE_LIBSSL -DNDEBUG -g -O2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -ffile-prefix-map=/build/wget-SlgjzS/wget-1.21.4=. -flto=auto -ffat-lto-objects -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -fdebug-prefix-map=/build/wget-SlgjzS/wget-1.21.4=/usr/src/wget-1.21.4-1ubuntu4.1 -DNO_SSLv2 -D_FILE_OFFSET_BITS=64 -g -Wall -Wl,-Bsymbolic-functions -flto=auto -ffat-lto-objects -Wl,-z,relro -Wl,-z,now -lpcre2-8 -luuid -lidn2 -lssl -lcrypto -lz -lpsl ../lib/libgnu.a Copyright (C) 2015 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://www.gnu.org/licenses/gpl.html>. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Originally written by Hrvoje Niksic <hniksic@xemacs.org>. Please send bug reports and questions to <bug-wget@gnu.org>.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://downloads.example.net/files/largefile.zip --2026-01-10 05:15:02-- 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% 191M 0s 50K .......... .......... .......... .......... .......... 4% 493M 0s 100K .......... .......... .......... .......... .......... 7% 326M 0s 150K .......... .......... .......... .......... .......... 9% 282M 0s 200K .......... .......... .......... .......... .......... 12% 600M 0s 250K .......... .......... .......... .......... .......... 14% 345M 0s 300K .......... .......... .......... .......... .......... 17% 529M 0s 350K .......... .......... .......... .......... .......... 19% 563M 0s 400K .......... .......... .......... .......... .......... 21% 229M 0s 450K .......... .......... .......... .......... .......... 24% 275M 0s 500K .......... .......... .......... .......... .......... 26% 298M 0s 550K .......... .......... .......... .......... .......... 29% 592M 0s 600K .......... .......... .......... .......... .......... 31% 614M 0s 650K .......... .......... .......... .......... .......... 34% 250M 0s 700K .......... .......... .......... .......... .......... 36% 655M 0s 750K .......... .......... .......... .......... .......... 39% 466M 0s 800K .......... .......... .......... .......... .......... 41% 300M 0s 850K .......... .......... .......... .......... .......... 43% 564M 0s 900K .......... .......... .......... .......... .......... 46% 431M 0s 950K .......... .......... .......... .......... .......... 48% 335M 0s 1000K .......... .......... .......... .......... .......... 51% 428M 0s 1050K .......... .......... .......... .......... .......... 53% 404M 0s 1100K .......... .......... .......... .......... .......... 56% 372M 0s 1150K .......... .......... .......... .......... .......... 58% 405M 0s 1200K .......... .......... .......... .......... .......... 61% 318M 0s 1250K .......... .......... .......... .......... .......... 63% 436M 0s 1300K .......... .......... .......... .......... .......... 65% 235M 0s 1350K .......... .......... .......... .......... .......... 68% 480M 0s 1400K .......... .......... .......... .......... .......... 70% 620M 0s 1450K .......... .......... .......... .......... .......... 73% 561M 0s 1500K .......... .......... .......... .......... .......... 75% 340M 0s 1550K .......... .......... .......... .......... .......... 78% 391M 0s 1600K .......... .......... .......... .......... .......... 80% 340M 0s 1650K .......... .......... .......... .......... .......... 83% 616M 0s 1700K .......... .......... .......... .......... .......... 85% 411M 0s 1750K .......... .......... .......... .......... .......... 87% 684M 0s 1800K .......... .......... .......... .......... .......... 90% 445M 0s 1850K .......... .......... .......... .......... .......... 92% 739M 0s 1900K .......... .......... .......... .......... .......... 95% 517M 0s 1950K .......... .......... .......... .......... .......... 97% 594M 0s 2000K .......... .......... .......... .......... ........ 100% 345M=0.005s 2026-01-10 05:15:02 (394 MB/s) - 'largefile.zip' saved [2097152/2097152]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://downloads.example.net/files/largefile.zip --2026-01-10 05:15:08-- 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 ................ ................ ................ 18% 443M 0s 384K ................ ................ ................ 37% 638M 0s 768K ................ ................ ................ 56% 419M 0s 1152K ................ ................ ................ 75% 520M 0s 1536K ................ ................ ................ 93% 511M 0s 1920K ................ 100% 557M=0.004s 2026-01-10 05:15:08 (499 MB/s) - 'largefile.zip' saved [2097152/2097152]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://downloads.example.net/files/largefile.zip --2026-01-10 05:15:13-- 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' largefile.zip 0%[ ] 0 --.-KB/s largefile.zip 100%[===================>] 2.00M --.-KB/s in 0.002s 2026-01-10 05:15:13 (803 MB/s) - 'largefile.zip' saved [2097152/2097152]
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://downloads.example.net/files/largefile.zip 2026-01-10 05:15:19 URL:https://downloads.example.net/files/largefile.zip [2097152/2097152] -> "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://downloads.example.net/files/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://downloads.example.net/files/largefile.zip ##### snipped ##### $ ls -lh largefile.zip -rw-r--r-- 1 user user 2.0M Jan 10 04:05 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.
