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:

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. 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.

  8. 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.