Fact-checked by Grok 2 weeks ago

Wget

GNU Wget is a free and open-source command-line utility for non-interactively retrieving files from the using the HTTP, , FTP, and protocols. Originally developed in 1996 by Hrvoje Nikšić as part of the Project, Wget enables users to download single files, mirror entire websites or FTP directories, and perform recursive retrievals while respecting server restrictions like robots.txt. It supports features such as resuming interrupted downloads via and methods, handling HTTP proxies and , converting links for offline viewing, and operating in the background for scripted or automated tasks. Licensed under the GNU General Public License version 3 or later, Wget is maintained by a team including Tim Rühsen, Darshit Shah, and Giuseppe Scrivano, with the latest stable release being version 1.25.0, released in November 2024. A successor project, Wget2, is under active development to enhance performance and add modern features like support.

Background

Origins and History

Wget originated as a personal project by Hrvoje in 1996, initially known as Geturl, aimed at creating a command-line tool for non-interactively retrieving files from the . , then a developer associated with , sought to address the need for a simple, scriptable downloader that could operate without a graphical interface or browser. The project focused initially on HTTP protocol support for basic file transfers. The first public release occurred in 1996, when Nikšić integrated it into the Project as , with the name derived from combining "Web" (referring to the ) and "get" (the HTTP request method for retrieving resources). Version 1.4.0, released in November 1996, was the first under the name Wget and distributed under the . This marked Wget's transition from a solo endeavor to an open-source utility under the umbrella, emphasizing principles. Early versions emphasized reliability in unstable network conditions and included support for FTP and recursive downloads, aligning with the growing accessibility of the . Widespread adoption began in systems by the late , as evidenced by its inclusion in major distributions like starting with version 1.4.0 in February 1997. Entering the , maintenance shifted to a collaborative model amid increasing web complexity, with contributions from developers like Dan Harkless, who released version 1.6 in December 2000. A major rewrite in version 1.5, released in September 1998, focused on improving stability and code architecture to handle evolving protocols and error recovery more robustly. This period saw Wget establish itself as a standard tool in command-line environments, licensed under the GPL to encourage community involvement.

Authors and Licensing

GNU Wget was originally written by Hrvoje Nikšić, who initiated its development and served as the primary author and maintainer in its early years. The copyright for Wget has been held by the (FSF) since 1996, as part of its integration into the GNU Project, with all releases featuring FSF copyright notices. Wget is distributed under the GNU General Public License (GPL) version 3 or later, which permits free modification and redistribution provided the source code is made available and derivative works remain under the same license terms. Maintainership evolved over time: after , Tortonesi maintained the project from 2004 to 2007, followed by Cowan from 2007 to 2010. Since 2010, Tim Rühsen has served as the primary maintainer, with significant contributions from Darshit Shah and Giuseppe Scrivano, who joined as co-maintainers around 2014. The GPL licensing has ensured no forks exist, as any modifications must adhere to the open-source requirements, preserving Wget's status as .

Core Functionality

Download Protocols and Capabilities

Wget supports the HTTP, (with SSL/TLS encryption), FTP, and protocols for retrieving files from remote servers, enabling secure and non-interactive downloads over these widely used standards. It lacks native support for or , focusing instead on these core web and file transfer protocols to ensure broad compatibility without additional dependencies. At its foundation, Wget enables single-file downloads by specifying a , recursive retrieval of directories to mirror site structures, wildcard for selective file downloads (particularly in FTP contexts), and timestamping to compare remote file modification times against local copies, thereby avoiding unnecessary re-downloads of unchanged content. These capabilities allow users to efficiently fetch resources while respecting server metadata for optimized transfers. Wget manages redirects by automatically following HTTP 3xx status codes up to a limit of 20, configurable for extended chains, and integrates with servers through environment variables such as http_proxy or https_proxy for routed access in networked environments. For authentication, it handles HTTP basic authentication via username and password options or embedded credentials, alongside FTP login support using similar mechanisms or .netrc files. A notable feature is support, which facilitates multi-source downloads by processing .metalink files (versions 3 and 4) to select optimal mirrors based on checksums and availability, introduced in Wget 1.17 in November 2015. Additionally, interrupted downloads can be resumed precisely using HTTP requests to continue from the exact byte offset or the FTP command, enhancing reliability over unstable connections.

Robustness and Reliability Features

Wget has been engineered for robustness, particularly in environments with slow or unstable network connections, where it automatically retries failed downloads due to transient issues such as timeouts or server errors in the 5xx range. By default, Wget attempts up to 20 retries before giving up, excluding fatal errors like "connection refused" or responses, and this count is configurable via the --tries option. This mechanism ensures reliable completion of transfers without intervention, making it suitable for long-running or unattended operations over unreliable links. To prevent overwhelming remote servers or local networks, Wget includes bandwidth limiting capabilities through the --limit-rate option, which caps speeds to a specified rate, such as 20 kilobytes per second. Additionally, it supports persistent HTTP connections by default, reusing a single connection for multiple requests to the same server, which reduces connection setup overhead and improves efficiency in high-volume s. Users can disable this with --no-http-keep-alive if server incompatibilities arise. For enhanced offline usability, Wget features automatic link conversion in downloaded and CSS files, transforming absolute URLs to relative ones via the --convert-links option, allowing seamless local browsing without network access. Regarding web etiquette, Wget honors the standard by default to respect site crawling restrictions, but this can be overridden with the --no-robots option for cases where full access is permitted or required. On the security front, Wget prioritizes secure protocols like to protect against interception of sensitive data, such as credentials in URLs, which remain visible in command lines or logs if not encrypted. A notable , CVE-2024-10524, affected versions up to 1.24.5, enabling server-side request (SSRF) through improper handling of shorthand FTP URLs with embedded credentials, potentially allowing requests to unintended hosts. This was addressed in version 1.25.0 (released November 2024) by removing support for such shorthand formats, recommending explicit full URLs for safer operations.

Advanced Features

Recursive Download and Mirroring

Wget supports recursive downloading, which allows users to retrieve entire directory structures or websites by following hyperlinks and FTP listings hierarchically. This mode is activated using the -r or --recursive option, enabling Wget to traverse links and download linked resources up to a specified depth. By default, the recursion depth is limited to 5 levels to prevent excessive downloading and potential infinite loops, but this can be adjusted with the -l or --level=depth option, where a value of 0 or inf permits unlimited depth. For complete site mirroring, the -m or --mirror option is used, which combines recursive retrieval with checking (-N), infinite depth (-l inf), and preservation of FTP listings (--no-remove-listing). This setup ensures that only updated files are downloaded on subsequent runs, creating an efficient offline of the site while maintaining its . also involves converting absolute links to relative ones for local , facilitated by the -k or --convert-links option. To control the scope of recursive downloads, Wget provides selectors and filters for accepting or rejecting specific file types and paths. The -A or --accept option specifies comma-separated patterns or suffixes for files to include, such as *.html or *.css, using shell-like wildcards (enclosed in quotes to avoid expansion). Conversely, the -R or --reject option excludes patterns, for example, rejecting *.exe or *.zip files to avoid downloading executables or archives. Directory pruning allows skipping unwanted paths through the -X or --exclude-directories option, which takes a comma-separated list of directories (with wildcard support) to ignore, or --cut-dirs=number to trim leading directory components from the retrieval tree. These filters ensure targeted downloads, focusing on relevant content like web pages while omitting binaries or temporary directories. By default, recursive downloads are restricted to from which retrieval begins, but the -H or --span-hosts option enables spanning multiple hosts by allowing to external domains, useful for downloading linked resources across sites. For handling content that may lack proper file extensions, such as dynamically generated pages saved without .html, the --adjust-extension option appends appropriate suffixes based on content type, improving local file organization and . Wget's recursive features are limited to static content, as it does not execute or render dynamic elements, making it suitable for mirroring static websites but ineffective for single-page applications or AJAX-driven sites. Without quotas or careful configuration, recursive can lead to substantial disk usage, particularly on large sites with deep hierarchies, emphasizing the need for depth limits and filters to manage storage requirements.

Non-Interactive and Automation Options

Wget is designed as a non-interactive command-line tool, making it ideal for automated and scripted operations where user input is neither required nor possible. Unlike graphical download managers, it operates entirely from or scripts, ensuring seamless integration into batch processes or scheduled tasks without interrupting workflows. This non-interactive approach relies on command-line options and files to handle decisions such as file overwrites or directory placements, using predefined defaults to avoid any prompts. One key feature for unattended execution is the -b or --background option, which detaches Wget from the controlling , allowing it to run as a background process similar to a daemon mode. When invoked with -b, output is automatically redirected to a file named wget-[log](/page/Log) unless a custom log file is specified via the -o or --output-file option, enabling monitoring of progress and errors without real-time user supervision. This capability supports long-running downloads, leveraging Wget's inherent reliability for resuming interrupted transfers if needed. For batch processing multiple URLs, the -i or --input-file option allows Wget to read a list of URLs from a specified file or standard input, facilitating automated handling of large sets of resources without invocation for each one. This is particularly useful in scripts where URLs are dynamically generated or sourced from external data, streamlining operations like periodic data fetches. Wget's is further enhanced by its reliance on initialization files, such as ~/.wgetrc, which define default behaviors like custom user agents via the user_agent directive or output directories with dir_prefix, eliminating the need to repeat common parameters in every command. Additionally, session persistence is supported through the --load-cookies option, which imports cookies from a /Mozilla-compatible file to maintain states across runs, crucial for accessing protected resources in automated sequences. In practice, Wget integrates well with system schedulers like for recurring tasks, such as daily mirroring of , by embedding download commands directly into crontab entries for hands-off execution. For handling API responses, the --content-disposition option respects server-provided filenames from HTTP headers, ensuring downloaded files are named appropriately without renaming in automated pipelines. Distinguishing it from interactive tools, Wget forgoes confirmation prompts for actions like file overwrites, instead applying sensible defaults; for instance, the or --timestamping option checks remote timestamps against local files to skip redundant downloads, promoting efficiency in unattended environments.

Usage and Configuration

Basic Syntax and Commands

The basic syntax for invoking Wget is wget [option]... [URL]..., where multiple URLs can be specified on the command line, and Wget will download each one sequentially. This command-line structure allows for simple retrieval of files from supported protocols such as HTTP, , and FTP, with options modifying the default behavior. For a straightforward download, the essential command is wget https://example.com/file.txt, which retrieves the specified resource and saves it in the current directory under its original filename derived from the URL. To customize the output filename, use the -O or --output-document option, as in wget -O output.txt https://example.com/file.txt, which directs the content to the named file instead of using the URL's basename; if -O - is specified, output is sent to standard output. By default, without such options, Wget saves files to the current working directory with the filename taken from the last component of the URL path. Output control can be adjusted for directory placement using --directory-prefix or -P, which sets a base directory for all saved files; for example, wget --directory-prefix=/downloads https://example.com/file.txt stores the file in /downloads/file.txt rather than the current . Verbose mode, enabled by default but adjustable with -v or --verbose, provides detailed progress logs including connection details and transfer statistics. For reduced output, -q or --quiet suppresses all messages except fatal errors, while --no-verbose or -nv turns off verbosity but retains basic information and error reports. To access usage information, run wget --help, which displays a summary of all command-line options, or consult the manual page with man wget for full . Wget provides error handling through codes: 0 indicates successful completion with no issues, 1 signifies a generic such as invalid options or network failures, and 8 denotes a server-issued response like a 4xx or 5xx HTTP status. Lower-numbered codes take precedence if multiple s occur during a run.

Common Options and Examples

Wget provides several common options that enhance its utility for everyday downloading tasks, allowing users to handle interruptions, concerns, and bandwidth limitations effectively. The --no-check-certificate option disables verification of SSL/TLS certificates, converting potential errors into warnings, which is useful for accessing sites with self-signed or invalid certificates, though it should be used cautiously to avoid risks. For resuming interrupted downloads, the -c or --continue option appends data to partially downloaded files, provided the server supports range requests, making it ideal for large files or unstable connections. To manage network load, --limit-rate restricts the download speed, such as --limit-rate=100k to cap at 100 kilobytes per second, preventing overload on shared connections or servers. File type filtering is handled via the -A or --accept option, such as wget -A.pdf,.txt https://example.com to download only PDF and text files during retrieval. In API interactions, wget -q -O - "https://api.example.com/data?key=val" quietly fetches or other data directly to stdout, facilitating integration into scripts for automated data pulls. For monitoring large files, --progress=bar displays a during downloads, as in wget --progress=bar https://example.com/largefile.zip, providing visual feedback on completion status without verbose output. Best practices emphasize customization and caution: --user-agent allows mimicking a , e.g., wget --user-agent="Mozilla/5.0" https://example.com, to bypass sites that block default Wget identification. These options support non-interactive automation by enabling scripted, reliable downloads with minimal intervention.

Configuration Files

Wget supports configuration files to set default options persistently. The primary file is .wgetrc, using a simple syntax of variable = value for options (case-insensitive, with underscores or hyphens interchangeable). Comments begin with #, and empty lines are ignored. The global configuration file is typically located at /usr/local/etc/wgetrc, while the user-specific file is at ~/.wgetrc in the . The location can be overridden by the WGETRC or the --config option. Command-line options take precedence over settings in these files. This allows customization of behaviors like settings, limits, or default directories without specifying them each time.

Portability and Integration

Supported Platforms

Wget is designed for high portability across operating systems, where it compiles natively using standard tools like Autoconf to ensure compatibility with standards. It has been tested and runs on a wide range of Unix variants, including distributions, macOS (formerly Mac OS X), , , , , SunOS 4.x, OSF/Tru64 Unix, , , AIX, and Darwin-based systems. This emphasis on Unix standards dates back to its early versions, such as 1.0 released in 1996, prioritizing broad compatibility without reliance on proprietary features. On Microsoft Windows, Wget is supported through POSIX emulation layers like or MSYS2, which provide a environment for native compilation and execution, or via pre-built binaries compiled with tools such as MS Visual C++, Watcom C, , or . These Windows ports enable core functionality but may lack full support for certain Unix-specific features, such as advanced signal handling, unless using or MSYS2. Additionally, historical ports exist for via the compiler and maintained by third parties. For secure protocol support, Wget requires either the or library to handle connections, with the choice specified at compile time via options like --with-ssl=openssl or --with-ssl=gnutls. is optionally used for enhanced (FTP over TLS) capabilities, though also supports ; neither nor any GUI libraries are needed, keeping the tool lightweight and command-line focused. Wget's non-interactive design further aids its portability by minimizing dependencies on interactive environments. Wget extends to embedded and mobile platforms, such as , where it runs in Unix-like environments like , allowing compilation and use without root access. There is no official support for due to platform restrictions on command-line tools and sandboxing, though unofficial or jailbroken implementations may exist.

Installation and Compatibility

The current stable version 1.25.0, released in November 2024, maintains with scripts dating back to the 1.0 era, allowing legacy automation tools to function without modification in most cases. On Unix-like systems, Wget is pre-installed on most major distributions, such as , , , and , where it can be verified with wget --version or installed via package managers if absent—for example, sudo apt install wget on Debian-based systems or sudo dnf install wget on . For custom builds, users can compile from source by downloading the tarball from the official FTP site, extracting it, and running ./configure && make && sudo make install, which requires a compatible compiler like 4.8 or newer to handle features. For Windows, it can be installed via package managers like MSYS2, providing the latest version and seamless integration. These binaries are fully compatible with environments, though users may need to invoke them as wget.exe to avoid conflicts with PowerShell's built-in wget alias for Invoke-WebRequest. On macOS, Wget is not included by default but can be installed using Homebrew via brew install wget or with sudo port install wget, both of which build with for TLS 1.2 and higher to handle connections securely. These methods ensure compatibility with macOS versions from 10.13 onward, leveraging the system's or libraries. Notable compatibility considerations include the absence of full HTTP/2 support in versions prior to 1.20, which may affect performance on sites requiring for optimal transfers; users on older installations should upgrade to 1.25.0 for enhanced protocol handling. When compiling custom versions, matching the system's compiler version (e.g., 4.8+) is recommended to avoid linkage issues with dependencies like libgnutls.

Development and Maintenance

Current Maintainers and Contributions

The primary maintainers of GNU Wget are Tim Rühsen, who has served as lead maintainer since 2014 and contributed extensively to support and continuous integration; Darshit Shah, maintainer since 2014 with a focus on security-related patches and build processes; and Giuseppe Scrivano, who maintained from 2007 to 2014 and continues to contribute to core fixes, particularly for HTTP and functionality. Contributions to Wget are managed through a structured process hosted on the GNU Savannah platform, where developers can clone the source repository using Git via git clone git://git.savannah.gnu.org/wget/wget.git or the HTTPS equivalent. Patches and proposed changes must adhere to GNU coding standards, including style guidelines for C code, documentation requirements, and copyright assignment to the for significant contributions exceeding 15 lines. Submissions are sent via email to the active bug-wget mailing list at [email protected], where discussions on bugs, features, and testing occur. The project emphasizes collaborative development through this , which serves as the central hub for reporting issues and coordinating efforts, alongside Savannah's tools. Historically, Wget has benefited from over 100 documented contributors, reflecting broad community involvement in enhancements and bug fixes. Following high-profile security vulnerabilities in , such as CVE-2024-38428 and CVE-2024-10524, the maintainers have intensified focus on security audits, resulting in more frequent releases prioritizing vulnerability remediation.

Version History and Notable Releases

Wget's development began with its initial stable release, version 1.0, in , which introduced core functionality for retrieving files via basic HTTP and FTP protocols, establishing it as a non-interactive downloader for command-line use. In 1998, version 1.5 marked a significant advancement by adding support for through integration with SSL libraries, enabling secure downloads over encrypted connections and broadening its applicability to protected web resources. This release addressed growing demands for secure protocol handling in an era of expanding web security standards. Version 1.10, released in June 2005, enhanced network compatibility with support on dual-stack systems, alongside improvements in large file handling and authentication, facilitating downloads in modern IPv6-enabled environments. Subsequent releases focused on protocol extensions and security. Version 1.14, released on August 6, 2012, introduced support for content disposition on error responses, WARC logging for , and TLS (), improving compatibility with and error handling in HTTP interactions. Version 1.21, released on December 31, 2020, added protocol support via the nghttp2 library, enabling faster multiplexed downloads and better performance on compatible servers, while also fixing numerous bugs in validation and progress reporting. The most recent stable release, 1.25.0, arrived on November 11, 2024, primarily addressing security vulnerabilities, including the removal of shorthand parsing for credentials to mitigate CVE-2024-10524, a potential information disclosure issue in FTP and HTTP URLs, and fixes for CVE-2024-38428 related to URI semicolon handling. It also refined input handling for non-blocking stdin reads and updated to align with RFC 3986 standards. As of November 2025, no major updates have been issued beyond 1.25.0, with the project maintaining a stable branch frozen after 1.21 for security-focused patches only. Throughout its evolution, Wget transitioned from basic protocol implementations to a robust emphasizing speed and reliability; early versions were rewritten for performance gains over initial prototypes, ensuring efficient recursive downloads without dependencies on scripting languages like . Each release has preserved for command-line options, allowing seamless upgrades in scripts and automation workflows. This stability has made Wget instrumental in tools, such as those used by the , by providing reliable mirroring capabilities.

Successor Project

Overview of Wget2

Wget2 is the modern successor to the original GNU Wget, initiated in 2012 by developer Tim Rühsen as a complete rewrite in the C programming language to achieve greater modularity, improved performance, and support for contemporary web technologies. Unlike its predecessor, which had accumulated a complex codebase over decades, Wget2 was designed from scratch to address limitations in scalability and extensibility while maintaining a familiar command-line interface for backward compatibility. The project emphasizes a library-centric architecture, with the core functionality encapsulated in the reusable libwget library, enabling integration into other applications beyond standalone command-line use. Key goals of Wget2 include enabling support for advanced protocols such as via (planned but not yet implemented as of November 2025), asynchronous input/output operations for efficient handling of concurrent downloads, and version 4 for enhanced file integrity and multi-source retrieval. These features aim to deliver significantly faster download speeds—often much quicker than the original Wget due to multi-threading, multiplexing, compression handling (including and Zstandard), and parallel connections—while bolstering security through modern TLS configurations like Perfect Forward Secrecy (PFS), (HSTS), and . The command-line syntax remains largely compatible with Wget 1.x, but the underlying internals leverage libraries like for non-blocking operations, reducing in recursive website mirroring and large-scale file transfers. The latest stable release is version 2.2.0, released in November 2024, with ongoing active development hosted on , where contributors collaborate on features and bug fixes. Despite its maturity, Wget2 is not yet the default wget implementation in most distributions, remaining an alternative package in many repositories due to its relatively recent stabilization. Adoption has progressed in select environments, notably integrated into as the primary wget starting with version 40 in April 2024; however, in May 2025, the original Wget was reintroduced alongside Wget2 as a separate package due to compatibility issues, such as missing full FTP support and differences in command-line options. Wget2 continues to be available as an enhanced alternative, though ongoing refinements address protocol support and compatibility edge cases.

Key Differences from Original Wget

Wget2 represents a complete rewrite of the original Wget, shifting from a to a centered around the libwget library, which enables easier integration and maintenance while providing a reusable for developers. Unlike the original Wget's single-threaded approach, Wget2 employs multi-threading for concurrent downloads, supporting up to five threads by default (configurable via --max-threads), which enhances performance over unstable networks by allowing parallel handling of multiple connections. This event-driven concurrency model in libwget facilitates efficient resource management, contrasting with the original's sequential processing that could bottleneck large or recursive downloads. Among its new features, Wget2 introduces native support for , enabling multiplexed streams and server push for faster retrievals compared to the original's HTTP/1.1 limitation. It also includes compression decompression (via Accept-Encoding: br), alongside other formats like and , reducing usage and accelerating transfers where supported by servers. Enhanced progress bars provide real-time visual feedback on download status, customizable with options like --progress=bar:force, improving over the original's text-based output. Additionally, Wget2 improves support, allowing specification of multiple mirror URLs in a single file for resilient, P2P-like downloads that automatically select optimal sources. In terms of compatibility, Wget2 retains a significant portion of the original Wget's , including core options like --recursive, --mirror, and --output-document, but introduces new flags such as --http2 and --max-threads while omitting some legacy features like full FTP support. This design promotes faster parsing of responses through efficiencies and lower memory consumption via optimized threading, often resulting in quicker overall downloads without the original's resource overhead. Wget2 eliminates any reliance on external scripting languages like for core functionality, relying purely on C for a leaner build process. It offers superior native Windows support through direct compilation without requiring , enabling seamless operation on Windows environments. The security model features stricter defaults, including automatic enforcement and for certificate validation, reducing risks from outdated protocols compared to the original's more permissive settings. As a , Wget2 maintains a smaller, more maintainable focused on modern protocols, prioritizing speed and over exhaustive feature parity with the original. While recursive mirroring is supported with options like --recursive and --page-requisites, it does not yet fully replicate all nuances of the original's web spanning and robot exclusion handling as of version 2.1.0, though ongoing development addresses gaps in versions like 2.2.0.

GUI Frontends

Graphical user interfaces (GUIs) for Wget provide a visual layer over the command-line , enabling non-expert users to initiate downloads without typing commands. These frontends typically invoke the Wget binary in the , offering features like and basic configuration through dialogs or lists, while relying on Wget's core functionality for file retrieval. They are particularly useful for beginners seeking simplicity in tasks such as single-file downloads or basic mirroring, though they rarely extend Wget's advanced recursive capabilities with native graphical controls. One prominent example is GWget, a GTK-based frontend designed for environments on and systems. It wraps Wget calls to support management, downloads, and progress bars, allowing users to monitor multiple transfers visually. GWget also includes clipboard to automatically detect and queue URLs, as well as options for setting download limits and resuming interrupted sessions via GConf storage. Ideal for novices, it facilitates drag-and-drop URL addition and displays detailed logs in a graphical window. However, its development has been inactive since around , with the last release on marking limited ongoing maintenance. Other frontends include WebGet, a cross-platform originally implemented in a scripting-friendly manner for HTTP and FTP downloads, though it predates modern Java-based implementations and is discontinued without active updates. For Windows users, WgetGUI offers a simple dialog-based interface tailored to the platform, enabling easy option selection for basic downloads like specifying output directories or user agents by invoking the Wget . These tools emphasize straightforward usage but remain limited to invoking the underlying Wget , focusing on single or queued basic downloads without built-in graphical support for complex or site mirroring. Overall, Wget GUIs cater to users avoiding the command line, such as in educational or casual scenarios, but most are outdated relative to contemporary download managers, lacking active development and integration with newer protocols or features.

Clones and Alternatives

HTTrack is a free and open-source offline browser utility designed primarily for mirroring entire websites, allowing users to download a World Wide Web site from the internet to a local directory while building a recursively linked structure for offline browsing. Unlike Wget, which is command-line only, HTTrack includes a graphical user interface (GUI) that simplifies configuration for complex mirroring tasks, such as filtering content types or setting depth limits, making it particularly suitable for users focused on website archiving. Aria2 serves as a direct clone in functionality but extends Wget's capabilities as a , multi-protocol command-line that supports HTTP/, FTP, , , and protocols. It enables multi-source downloads to maximize bandwidth utilization, often resulting in faster performance for large files compared to Wget's single-connection approach, and includes features like asynchronous operations that appeal to power users for concurrent tasks. However, aria2 requires additional configuration for advanced features, such as magnet link support via , which Wget lacks natively. Among broader alternatives, provides versatile data transfer capabilities across numerous protocols, including HTTP, FTP, and more, making it ideal for interactions and scripted transfers but without Wget's built-in recursive downloading for sites. In contrast, is an FTP-centric client that excels in directories over FTP and other protocols like HTTP, supporting transfers and options to efficiently update local copies without re-downloading unchanged files. Cliget, a extension, leverages Wget as a backend to generate command-line download instructions for grabbing links, including those from login-protected pages, by emulating browser requests with and headers. For modern downloads, tools like yt-dlp address Wget's limitations in handling video streaming sites by supporting thousands of platforms with features for audio/video extraction and format selection.
ToolKey Strength Over WgetLimitation Compared to Wget
Versatile for APIs and bidirectional transfersNo built-in for
Parallel FTP and syncingLess emphasis on HTTP
aria2Multi-protocol (incl. ) and async speedMore complex configuration

References

  1. [1]
    Wget - GNU Project - Free Software Foundation
    GNU Wget is a free software package for retrieving files using HTTP, HTTPS, FTP and FTPS, the most widely used Internet protocols.Of /gnu/wget · Document · What is Free Software?
  2. [2]
    GNU Wget 1.25.0 Manual
    GNU Wget is a free utility for non-interactive download of files from the Web. It supports HTTP, HTTPS, and FTP protocols, as well as retrieval through HTTP ...
  3. [3]
    Index of /gnu/wget - ftp://ftp.gnu.org
    Index of /gnu/wget ; [ ], wget-1.19.3.tar.gz, 2018-01-19 13:59, 4.1M.
  4. [4]
    Wget - GitLab
    Apr 22, 2017 · Wget was originally written and mainained by Hrvoje Niksic. Please ... Copyright (C) 1995-2024 Free Software Foundation, Inc. This ...
  5. [5]
    Timeline of digital preservation
    Oct 13, 2025 · The initial version of the command-line downloading program Wget, then known as Geturl, is released. 1996, Web archiving, The Internet Archive ...Trends · Full Timeline · Numerical And Visual Data
  6. [6]
    Recursive Download (GNU Wget 1.25.0 Manual)
    Wget's recursive download follows links and directory structures, retrieving files via HTML/CSS (breadth-first) or FTP (depth-first) up to a specified depth.Missing: 1998 | Show results with:1998
  7. [7]
    Changelog - Debian -- Packages
    * New maintainer. -- J. Ramos Goncalves <ramos@debian.org> Thu, 13 Feb 1997 23:15:18 +0000 wget (1.4.0-1) unstable; urgency=low * Initial Release.
  8. [8]
    Contributors (GNU Wget 1.25.0 Manual)
    GNU Wget was written by Hrvoje Nikšić hniksic@xemacs.org,. However, the development of Wget could never have gone as far as it has, were it not for the help ...Missing: ChangeLog | Show results with:ChangeLog
  9. [9]
    Monthly Archives: June 2007 - Micah Cowan
    Jun 27, 2007 · This morning I was officially appointed as the maintainer of GNU Wget (one of the tasks on my to-do list is to update that page to the ...
  10. [10]
    [Bug-wget] Stepping down as maintainer
    Jun 17, 2011 · -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Well, folks, I think it's time for me to step down as Wget's maintainer.[Bug-wget] Possible Bug Discovered w/ https proxy - GNU mailing listsRE: [Bug-wget] Solution for wget, IIS, and NTLM "500 error" and a ...More results from lists.gnu.org
  11. [11]
    Wget: ChangeLog - Fossies
    Nov 10, 2024 · As a special service "Fossies" has tried to format the requested text file into HTML format (style: standard) with prefixed line numbers.
  12. [12]
  13. [13]
    FTP Options (GNU Wget 1.25.0 Manual)
    2.10 FTPS Options​​ This option tells Wget to use FTPS implicitly. Implicit FTPS consists of initializing SSL/TLS from the very beginning of the control ...
  14. [14]
    GNU wget 1.14 released
    Aug 6, 2012 · Hello, I am pleased to announce the new version of GNU wget. It is available for download here: ftp://ftp.gnu.org/gnu/wget/wget-1.14.tar.gz ...[Bug-wget] Unexpected wget -N behaviour for 1.17 onwards?GNU Wget 1.19 releasedMore results from lists.gnu.orgMissing: metalink | Show results with:metalink
  15. [15]
    HTTP Options (GNU Wget 1.25.0 Manual)
    The HTTP protocol allows the clients to identify themselves using a User-Agent header field. This enables distinguishing the WWW software, usually for ...
  16. [16]
    CVE-2024-10524 Detail - NVD
    Nov 19, 2024 · Applications that use Wget to access a remote resource using shorthand URLs and pass arbitrary user credentials in the URL are vulnerable.
  17. [17]
    oss-security - Fwd: wget-1.25.0 released [fixes CVE-2024-10524]
    Nov 18, 2024 · ... since 1.24.5. See the NEWS below for a brief summary. Thanks to everyone ... Tim Rühsen (31) Darshit [on behalf of the wget maintainers] ...
  18. [18]
    Recursive Retrieval Options (GNU Wget 1.25.0 Manual)
    ### Summary of Recursive Download and Mirroring in Wget
  19. [19]
    Recursive Accept/Reject Options (GNU Wget 1.25.0 Manual)
    Specify comma-separated lists of file name suffixes or patterns to accept or reject (see Types of Files). Note that if any of the wildcard characters, ' * ', ' ...
  20. [20]
    Directory Options (GNU Wget 1.25.0 Manual)
    Set directory prefix to prefix . The directory prefix is the directory where all other files and subdirectories will be saved to, i.e. the top of the retrieval ...
  21. [21]
  22. [22]
  23. [23]
  24. [24]
  25. [25]
  26. [26]
  27. [27]
    Invoking (GNU Wget 1.25.0 Manual)
    Wget is very simple to invoke. The basic syntax is: wget [ option ]... [ URL ]... Wget will simply download all the URLs specified on the command line.
  28. [28]
    Download Options (GNU Wget 1.25.0 Manual)
    Wget has no way of verifying that the local file is really a valid prefix of the remote file. You need to be especially careful of this when using ' -c ' in ...
  29. [29]
    Logging and Input File Options (GNU Wget 1.25.0 Manual)
    Turn off verbose without being completely quiet (use ' -q ' for that), which means that error messages and basic information still get printed. ' --report-speed ...
  30. [30]
    Basic Startup Options (GNU Wget 1.25.0 Manual)
    2.3 Basic Startup Options​​ Display the version of Wget. Print a help message describing all of Wget's command-line options. Go to background immediately after ...
  31. [31]
    Exit Status (GNU Wget 1.25.0 Manual)
    Wget may return one of several error codes if it encounters problems. With the exceptions of 0 and 1, the lower-numbered exit codes take precedence over higher ...
  32. [32]
    Portability (GNU Wget 1.25.0 Manual)
    Various Wget versions have been compiled and tested under many kinds of Unix systems, including GNU/Linux, Solaris, SunOS 4. x, Mac OS X, OSF (aka Digital Unix ...Missing: historical standards
  33. [33]
    wget - MSYS2 Packages
    Nov 11, 2024 · Base Package: wget. Description: A network utility to retrieve files from the Web; Group(s):: -; Repo: msys ...Missing: Windows | Show results with:Windows
  34. [34]
    GNU Wget 1.21.4 for Windows - eternallybored.org
    Windows binaries of GNU Wget. A command-line utility for retrieving files using HTTP, HTTPS and FTP protocols.
  35. [35]
  36. [36]
    HTTPS (SSL/TLS) Options (GNU Wget 1.25.0 Manual)
    As of Wget 1.10, the default is to verify the server's certificate against the recognized certificate authorities, breaking the SSL handshake and aborting the ...
  37. [37]
    GNU Wget - Git Repositories [Savannah]
    You can browse the Git repository of this group with your web browser. This gives you a good picture of the current status of the source files.
  38. [38]
  39. [39]
    GNU Wget - Summary [Savannah]
    Nov 5, 2004 · GNU wget is a free software package for retrieving files using HTTP, HTTPS and FTP, the most widely-used Internet protocols. It is a non- ...
  40. [40]
  41. [41]
    wget-1.21 released [stable] - GNU mailing lists
    Dec 31, 2020 · We are pleased to announce the release of GNU Wget 1.21. GNU Wget is a free utility for non-interactive download of files from the Web.<|control11|><|separator|>
  42. [42]
    wget-1.25.0 released [stable] - GNU mailing lists
    Nov 11, 2024 · GNU wget is a free software package for retrieving files using HTTP ... NEWS * Noteworthy changes in release 1.25.0 (2024-11-10) ...
  43. [43]
    rockdaboot/wget2: The successor of GNU Wget ... - GitHub
    Features. A non-exhaustive list of features. Support for HTTP/1.1 and HTTP ... Release v2.1.0 Latest. on Aug 31, 2023 · + 2 releases · Packages 0. No packages ...<|control11|><|separator|>
  44. [44]
    Wget / wget2 - GitLab
    Apr 22, 2017 · A copy of the GNU General Public License can be found in the file LICENSE in the top directory of the official source distribution. The license ...
  45. [45]
    Implement HTTP/3 support using QUIC (#553) · Issue · gnuwget/wget2
    May 17, 2021 · I am very interested in the QUIC protocol and was looking into how curl has implemented support for QUIC into itself (in a beta version) using ngtcp2.Missing: goals metalink
  46. [46]
    File: ChangeLog - Debian Sources
    # of parallel HTTP/2 streams * docs/wget2.md: Docs for --http2-request ... metalink V3 + V4 code in _metalink_parse(). 2016-04-02 Tim Rühsen <tim ...
  47. [47]
  48. [48]
    wget2 - Fedora Packages
    GNU Wget2 is the successor of GNU Wget, a file and recursive website downloader. Designed and written from scratch it wraps around libwget, that provides ...
  49. [49]
    Changes in Fedora 40 For System Administrators
    GNU Wget2 is the successor to GNU Wget providing a modern implementation of wget backed by a new library: libwget2 . The intent to switch from wget 1.x to wget2 ...
  50. [50]
    GNU Wget2 2.0.1 released
    May 27, 2022 · Hi all, we are happy to announce the release 2.0.1 of GNU Wget2. Wget2 is the successor of GNU Wget, a file and recursive website downloader.
  51. [51]
    wget2: Implementation of multi-threading basic functionality - GitLab
    This is a wrapper around Gnulib's glthread functionality. It currently supports Posix threads (pthreads), GNU Pth threads, Solaris threads and Windows threads.Missing: concurrency | Show results with:concurrency
  52. [52]
    GNU Wget2 2.0 Released With HTTP2 & SSL Improvements
    Sep 26, 2021 · Over the original GNU Wget, Wget2 is faster, supports more protocols especially around HTTP/2 and compression, supports multi-threading ...
  53. [53]
    wget2 — Debian unstable
    Mar 4, 2025 · GNU Wget2 is a free utility for non-interactive download of files from the Web. It supports HTTP and HTTPS protocols, as well as retrieval ...
  54. [54]
    Home · Wiki · Wget / wget2 · GitLab
    ### Key Differences Between Wget and Wget2
  55. [55]
    www/wget2: File and recursive website downloader - FreshPorts
    Nov 18, 2021 · Wget2 works multi-threaded and uses many features to allow fast operation. In many cases Wget2 downloads much faster than Wget1.x due to HTTP2, ...Missing: benchmarks | Show results with:benchmarks
  56. [56]
    Gwget download | SourceForge.net
    Mar 22, 2013 · Download Gwget for free. Download Manager for Gnome2. It uses wget as a backend.
  57. [57]
    Gwget2 - Free Software Directory
    Gwget2 is a Gnome2 front-end to wget. Downloads are stored in GConf, so now gwget2 remembers the previous session's downloads. Other fetures include a ...
  58. [58]
    WinWGet - download manager based on wget for Windows
    WinWGet is a GUI (Graphical User Interface) for Wget. It is FREE. It will keep track of your downloads - add, clone, edit, delete jobs.
  59. [59]
    WebGet -- Internet File Retriever - Eric Phelps
    WebGet automates downloading text or binary files from websites using HTTP and FTP protocols, and can be run from DOS or Windows Scripting Host.Missing: frontend | Show results with:frontend
  60. [60]
    -- wGetGUI -- the Graphical User Interface (GUI) for wGet
    wGetGUI is an easy to use Graphical User Interface (GUI) for the powerful WebGrabber wGet.
  61. [61]
    HTTrack Website Copier - Free Software Offline Browser (GNU GPL)
    HTTrack is a free (GPL, libre/free software) and easy-to-use offline browser utility. It allows you to download a World Wide Web site from the Internet to a ...Download HTTrack · WinHTTrack · FAQ · Documentation
  62. [62]
    Aria2 - A Multi-Protocol Command-Line Download Tool for Linux
    Apr 29, 2019 · Aria2 is an open source and free lightweight multi-protocol & multi-server command-line download utility for Windows, Linux and Mac OSX.
  63. [63]
    aria2c(1) — aria2 1.37.0 documentation
    aria2 can download a file from multiple sources/protocols and tries to utilize your maximum download bandwidth. It supports downloading a file from HTTP(S)/FTP ...
  64. [64]
    Aria2 Vs Wget - Choose your Download Manager - Unixmen
    Wget is still lightweight as compared to this, wget consumes 20% less resources than aria2. Aria2 has not yet been tested on the huge level that wget is being ...
  65. [65]
    curl vs Wget - Daniel Stenberg
    Recursive!: Wget's major strong side compared to curl is its ability to download recursively, or even just download everything that is referred to from a remote ...
  66. [66]
    How to use the LFTP client to download files - TechTarget
    Mar 14, 2024 · Use the mirror command to download or upload directories. Many variations and ways are available to make such copies more efficient. Another ...
  67. [67]
    cliget – Get this Extension for Firefox (en-US)
    Rating 4.7 (91) · FreeJan 11, 2021 · Download cliget for Firefox. Download login-protected files from the command line using curl, wget or aria2.
  68. [68]
    yt-dlp/yt-dlp: A feature-rich command-line audio/video downloader
    yt-dlp is a feature-rich command-line audio/video downloader with support for thousands of sites. The project is a fork of youtube-dl based on the now inactive ...Yt-dlp · Installation · Releases · Issues 1.7k