What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

To use GNU Wget on Windows, install it through MSYS2, open the MSYS2 MinGW 64-bit shell, and run wget https://example.com/file.zip. One Windows-specific trap: in Windows PowerShell 5.1, wget is an alias for the different command Invoke-WebRequest. Check which command your shell will run before troubleshooting Wget options.

What Wget does—and which Windows version this guide uses

GNU Wget is a free, non-interactive command-line tool for retrieving files over HTTP, HTTPS, FTP, and FTPS. Its basic form is wget [option]... [URL].... It is useful for direct downloads, resuming supported transfers, reading a list of URLs, and retrieving linked pages recursively. It is not the same program as Windows PowerShell’s Invoke-WebRequest, even though PowerShell 5.1 uses the name wget as an alias for that cmdlet. See the GNU Wget project page and the GNU Wget manual for the program and its options.

This walkthrough uses MSYS2’s MinGW 64-bit package as the documented Windows installation route. Its package record lists Wget 1.25.0-2, updated 2026-09-28, and identifies the executable as /mingw64/bin/wget.exe. Package versions can change; check the MSYS2 Wget package record for the current package details.

Install GNU Wget with MSYS2

  1. Install MSYS2 by following its official installation instructions.
  2. Open the MSYS2 MinGW 64-bit shell. Use this environment for the commands below; a different MSYS2 shell may use a different package or executable path.
  3. Install the package:
    pacman -S mingw-w64-x86_64-wget
  4. Confirm that the executable runs:
    wget --version

The package manager may ask you to confirm the installation; follow its prompt. If the version command prints Wget’s version information, the shell can find the program and you can start downloading. This guide keeps the default workflow in the MSYS2 shell rather than prescribing a PATH edit: the exact Windows path depends on where MSYS2 was installed. The package record gives the MSYS2 path as /mingw64/bin/wget.exe; a Windows shell can call the corresponding executable by its Windows filesystem path if you know your installation directory.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Download a file and choose where it goes

Save using the server-provided filename

In the MSYS2 MinGW 64-bit shell, run:

wget https://example.com/file.zip

Wget saves the response as a local file, ordinarily using the filename from the URL. The file is written in the shell’s current working directory. To see or change that directory in MSYS2, use pwd and cd.

Set an explicit output filename

Use uppercase -O (the letter O, not zero) to name the output yourself:

wget -O renamed-file.zip https://example.com/file.zip

This is handy when the URL has no useful filename or when you want a predictable name for a later script. Be aware that choosing a filename that already exists can overwrite it; use a new name or check the destination first if preserving an existing file matters. The syntax is documented in the GNU Wget manual.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Useful Wget options for common download jobs

Task Command What it does
Resume a partial download wget -c https://example.com/large-file.zip Attempts to continue an incomplete file. Resuming depends on the server supporting it; if it does not, the transfer may not continue as expected.
Read several URLs from a text file wget -i urls.txt Reads URLs from urls.txt, ordinarily one URL per line. Put the file in the current directory or provide its path.
Retrieve linked pages recursively, with limits wget -r -l 2 -np https://example.com/archive/ -r enables recursive retrieval, -l 2 limits traversal depth to two levels, and -np prevents ascending to a parent directory.

These are examples, not a complete option reference. Wget has many additional controls for output, retries, timeouts, authentication, and mirroring. Consult the manual corresponding to your installed version before relying on a less familiar option or building a script around it.

Use recursive retrieval deliberately

Do not add -r for a one-file download. Recursion follows links and can retrieve many resources, so keep its scope bounded. The example above uses a starting archive path, a depth limit, and -np to avoid walking upward. The -A option can accept filename patterns when you need to restrict which files Wget retrieves. For an actual site mirror, use the fuller, version-specific example in the GNU Wget manual rather than treating the short recursive example as a complete mirror configuration.

PowerShell: check whether “wget” is really GNU Wget

Before running a Wget command in Windows PowerShell 5.1, check command resolution:

Get-Command wget

If PowerShell reports an alias to Invoke-WebRequest, then entering wget invokes that PowerShell cmdlet, not GNU Wget. Its parameters differ, so a Wget flag such as -O can produce an unexpected parameter error. Microsoft documents the alias and cmdlet in its Invoke-WebRequest documentation.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Run the GNU executable explicitly

If you know your MSYS2 installation directory, call its MinGW executable from PowerShell using the Windows filesystem path that corresponds to /mingw64/bin/wget.exe. For example, if MSYS2 is installed in C:msys64:

& 'C:msys64mingw64binwget.exe' https://example.com/file.zip

Adjust the path if you installed MSYS2 elsewhere. The leading PowerShell call operator & runs the quoted executable path. Alternatively, open the MSYS2 MinGW 64-bit shell and use the plain Wget commands shown above. Adding a directory to Windows PATH is another possible setup, but the exact location depends on your installation and existing PATH configuration.

If you intended to use PowerShell’s own web request command

Use Invoke-WebRequest with its own documented syntax rather than passing it GNU Wget flags. Microsoft notes that, after the 2025-12-09 security update, Windows PowerShell 5.1 may display a script-execution warning while parsing web content; its documentation recommends -UseBasicParsing to avoid script execution during parsing. That behavior belongs to the PowerShell cmdlet, not GNU Wget.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Wget, PowerShell, or curl.exe: which should you use?

Choice Is installation needed? Use its own syntax Best fit
GNU Wget via MSYS2 Yes, install the MSYS2 package. wget options such as -O, -c, and -r. Tasks that benefit from Wget’s resume, URL-list, retry, or recursive-retrieval workflow.
PowerShell Invoke-WebRequest Available as a Windows PowerShell 5.1 cmdlet. PowerShell cmdlet parameters; wget is an alias in that shell. A PowerShell script that is intentionally written for the cmdlet rather than GNU Wget.
Windows curl.exe Windows includes the executable. Use curl’s options, not Wget flags. In Windows PowerShell 5.1, type curl.exe explicitly to avoid the curl alias. A straightforward transfer when you prefer the built-in executable and do not need Wget’s particular workflow.

For details on the Windows-provided curl executable and the PowerShell naming issue, see Microsoft’s curl on Windows documentation. Wget, Invoke-WebRequest, and curl are distinct command interfaces; copying flags from one to another is a common source of errors.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Troubleshooting Wget on Windows

  • “wget is not recognized” or command not found: You may be in PowerShell or Command Prompt without Wget on PATH, or using an MSYS2 environment that does not contain the package. Open the MSYS2 MinGW 64-bit shell and install mingw-w64-x86_64-wget; alternatively, invoke the executable by its full Windows path.
  • An option is rejected unexpectedly: In PowerShell, run Get-Command wget. If it resolves to Invoke-WebRequest, use the GNU executable explicitly or switch to the MSYS2 shell. Do not assume PowerShell accepts GNU Wget options.
  • The downloaded file is in the wrong folder: Wget writes relative output in the current working directory. Check pwd in MSYS2 or use an explicit destination name and path with -O.
  • A resume attempt starts over or fails: -c can continue a partial transfer only when the server supports resuming. Retry without -c if a fresh download is acceptable, and ensure enough disk space is available.
  • A recursive command retrieves too much: Stop it and narrow the starting URL and traversal using -l, -np, and, when appropriate, -A. Recursive retrieval is not a single-file download shortcut.
  • PowerShell displays a script warning: Confirm whether you ran Invoke-WebRequest. Microsoft’s Windows PowerShell 5.1 guidance for the post-2025-12-09 security-update warning is -UseBasicParsing; it is unrelated to GNU Wget.

Or skip the browser setup

Wget retrieves files; if your actual goal is a clean screenshot of a web page, ScreenshotNeo is a screenshot API and MCP server rather than a Wget replacement. For a browser-free screenshot request, use the API as follows (the API key is available through ScreenshotNeo):

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://example.com -o shot.webp

See the ScreenshotNeo API documentation for options and response details. Cookie and consent banners are accepted like a visitor and more than 60 known consent platforms, newsletter popups, and chat widgets can be removed before capture; each of those steps can be turned off. Bot checks, blank pages, timeouts, failed loads, and cache hits cost nothing, and response headers identify the page verdict and billing status. Its MCP server provides take_screenshot, get_page_info, and capture_pdf tools for Claude, Cursor, and other MCP clients. The Free plan includes 1,000 screenshots a month with no card; paid plans start at $5 for 3,000. Sign up free for 1,000 screenshots a month, no card required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

FAQ

Does GNU Wget work on Windows?

Yes. The GNU project documents Windows support, and the MSYS2 MinGW 64-bit package provides a Windows executable. This guide uses MSYS2 rather than assuming a standalone installer from GNU.

Is PowerShell’s wget the same as GNU Wget?

No. In Windows PowerShell 5.1, wget is an alias for Invoke-WebRequest. Use Get-Command wget to see what your shell resolves.

Can I use Wget to download an entire website?

Wget supports recursive retrieval, but a broad crawl is not the same as downloading one file. Set a deliberate starting point and limits, and consult the manual’s mirror guidance before mirroring a site.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.