Transfer progress should match the job you are running. An interactive terminal usually needs visible progress so you can spot stalls quickly, while scheduled jobs and copied logs need an output style that stays readable after the download finishes.

GNU wget exposes two progress families with --progress: bar for a redrawn terminal bar and dot for line-oriented output. Current builds use a bar by default on a real terminal, fall back to dot mode when output is not a TTY, and let you override that behavior with parameters such as bar:force:noscroll. --show-progress keeps a progress indicator visible even when you also use quieter verbosity modes.

The trade-off is observability versus log hygiene. Bar mode is ideal for a live terminal, but copied logs often retain only the final summary line because the bar redraws in place, while dot mode produces durable lines that are easier to archive, tail, and parse later.

Steps to control wget progress output:

  1. Use line-oriented dot output when you want visible progress that survives shell history, copied logs, and monitoring tools.
    $ wget --progress=dot:binary https://downloads.example.net/files/sample-1m.bin
    --2026-03-27 06:59:20--  https://downloads.example.net/files/sample-1m.bin
    Connecting to downloads.example.net (downloads.example.net)|203.0.113.50|:443... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 1048576 (1.0M) [application/octet-stream]
    Saving to: 'sample-1m.bin'
    
         0K ........... ..... ................ ................ 37% 92.3K 7s
       384K ................ ................ ................ 75% 99.8K 3s
       768K ................ ................                 100% 114K=10s
    
    2026-03-27 06:59:31 (99.9 KB/s) - 'sample-1m.bin' saved [1048576/1048576]

    dot:binary prints progress in durable lines, which makes it the easier style to archive and review later.

  2. Force bar output for an interactive terminal or multiplexer when automatic detection would otherwise fall back.
    $ wget --progress=bar:force:noscroll https://downloads.example.net/files/sample-1m.bin
    2026-03-27 06:58:50 URL:https://downloads.example.net/files/sample-1m.bin [1048576/1048576] -> "sample-1m.bin" [1]

    Bar mode redraws the same terminal line repeatedly, so pasted logs usually keep only the final completion summary shown here.

  3. Add --show-progress when you also want quieter status output such as --no-verbose or a separate log file.
    $ wget --show-progress --progress=bar:force --no-verbose https://downloads.example.net/files/sample-1m.bin
    2026-03-27 06:56:07 URL:https://downloads.example.net/files/sample-1m.bin [1048576/1048576] -> "sample-1m.bin" [1]

    --show-progress keeps the live progress indicator on stderr even when the rest of the transfer output is reduced.

  4. Save the preferred default for one account in /$HOME/.wgetrc and override it only when a specific job needs a different style.
    ~/.wgetrc
    progress = bar:force

    Account-level defaults are useful when the same shell or automation environment runs wget repeatedly with one preferred display style.

  5. Treat --quiet as a logging choice, not a verification strategy.
    $ wget --quiet --output-document=/tmp/sample-1m.bin https://downloads.example.net/files/sample-1m.bin
    $ echo $?
    0
    $ ls -lh /tmp/sample-1m.bin
    -rw-r--r-- 1 user user 1.0M Mar 27 06:59 /tmp/sample-1m.bin

    Quiet mode hides progress and most status messages, so always pair it with an exit-code check and a destination-file check.