Files
goget/docs/cli-reference.md

12 KiB
Raw Permalink Blame History

CLI Reference

Complete reference for all goget command-line flags, organized by category.

goget --url <URL> [OPTIONS]

Target

Flag Argument Description
--url <URL> URL to download (repeatable for multiple URLs)

Output

Flag Argument Description
--output <FILE> Output filename or directory (default: auto-derived from URL)
--restart Delete existing file and restart download from scratch
--overwrite Overwrite existing file without atomic rename
--content-disposition Use filename from server's Content-Disposition header
--create-dirs Create missing parent directories of --output (default: true). Use --create-dirs=false to disable (curl --create-dirs / wget behavior). Ignored for stdout output
--keep-timestamps Set file modification time to server's Last-Modified value
--show-metadata <PATH> Display .goget.meta sidecar contents for debugging interrupted or resumed downloads. <PATH> is either the downloaded output file (sidecar is located next to it) or the sidecar file itself. Renders a human-readable summary; combine with --json for raw JSON. Credentials embedded in the stored URL are masked

Progress

Flag Argument Description
--verbose Verbose output with Unicode progress bar (default enabled)
--no-progress Hide progress bar, keep other output
--progress dot Dot progress bar style
--quiet Suppress all output except errors
--json Output progress as JSON lines for scripting (format: {"type":"progress","current":X,"total":X,"speed":X})
--debug Enable debug output with detailed connection info

Network

Flag Argument Description
--timeout <DURATION> Connection timeout (0 = smart auto-calculation based on file size)
--connect-timeout <DURATION> TCP connection establishment timeout
--max-time <DURATION> Maximum total transfer time (abort if exceeded)
--max-retries <N> Maximum retry attempts on failure
--max-filesize <SIZE> Abort if file exceeds size limit (e.g. 100MB, 1GB)
--proxy <URL> Proxy server URL — http:// for HTTP CONNECT, socks5:// (local DNS) or socks5h:// (remote DNS) for SOCKS5, with optional user:pass@ authentication
--no-ipv4 Disable IPv4 fallback (IPv6 only)
--no-redirect Disable following HTTP redirects (3xx)
--dns-servers <IPs> Custom DNS servers, comma-separated (e.g. 1.1.1.1,8.8.8.8)
--bind-interface <IFACE> Bind outgoing connections to a specific network interface (Linux only)
--allow-private Allow connections to private/internal IPs (disabled by default for SSRF protection)
--pinned-cert <SHA256> Certificate pinning (TLS protocols: HTTPS, FTPS, Gemini, WebDAVS) — abort if leaf cert SHA-256 doesn't match
--pinned-host-key <FINGERPRINT> SSH host-key pinning (SFTP) — accepts SHA256:<base64> (ssh-keygen -lf) or raw hex SHA-256

HTTP / Network Flags

Flag Argument Description
--header "K: V" Custom HTTP header (repeatable)
--insecure Skip TLS certificate verification
--cert <FILE> Client certificate in PEM format (mTLS)
--key <FILE> Client private key in PEM format (mTLS)
--data "key=value" Send POST data (implies POST)
--form "field=value" Multipart form field (repeatable; --form "file=@./path" for file upload)
--spider Check URL existence via HEAD request — no body downloaded
--write-out <FORMAT> Print metadata after transfer (format: %{http_code}, %{size_download}, %{time_total}, %{speed_download})
--trace-time Add HTTP timing breakdown to output (DNS, TCP, TLS, TTFB, Total)
--fail Exit non-zero on HTTP 4xx/5xx response
--compressed Accept-Encoding header for compressed transfer
--range <N>-<M> Download a byte range (e.g. --range 0-999)
--post-file <FILE> POST file contents as request body
--referer <URL> Set Referer header

Recursive / Spider Flags

Flag Argument Description
--accept "*.pdf" Accept patterns — filename glob or MIME type (comma-separated)
--no-parent Do not ascend to parent directories during recursive download
--adjust-extension Append .html extension to text/html files missing one. Applies across HTTP, Gopher, and WebDAV
--wait <DURATION> Delay between requests in recursive mode
--random-wait Randomize wait time (0.5x1.5x of --wait value)
--page-requisites Download CSS, JS, and images required to render HTML pages
--span-hosts Follow links to external domains in recursive mode
--convert-links Rewrite links in downloaded HTML for local offline viewing
--warc-file <FILE> Write WARC (Web ARChive) output for archival
--dry-run List all URLs that would be downloaded in recursive/mirror mode without saving files to disk
--progress dot Dot progress bar style
--no-clobber Skip download if file already exists

Recursive / Mirror

Flag Argument Description
--recursive Enable recursive downloading — follow links from HTML pages
--mirror Mirror entire website (infinite depth, convert links) — shorthand for --recursive --convert-links --page-requisites
--max-depth <N> Maximum recursion depth
--follow-external Follow links to domains other than the starting domain
--exclude-pattern <P> Exclude URL patterns (glob, comma-separated)
--no-convert-links Don't convert links in HTML during mirror (faster, but not offline-ready)
--no-mirror-assets Don't download CSS, JS, and images during mirror
--no-robots Don't respect robots.txt during mirroring
--rate-limit <RATE> Maximum download speed (e.g. 1MB/s, 500KB/s, 0 = unlimited)
--domains <LIST> Restrict recursion to listed domains (comma-separated)
--reject <PATTERN> Reject URL patterns (glob)
--cut-dirs <N> Ignore N directory components when creating local filenames
--proto-dirs Create protocol-prefixed directories (http/, ftp/ etc.)
--adjust-extension Append .html to text/html files missing an extension. Applies across HTTP, Gopher, and WebDAV
--timestamping Only download files newer than the local copy
--backup-converted Back up original .orig files before link conversion. Applies to HTTP and WebDAV mirrors
--recursive-parallel <N> Number of concurrent file downloads in recursive mode across all protocols (HTTP, WebDAV, FTP, SFTP). 0 = sequential (default)
--continue Continue getting partially-downloaded file

Download Management

Flag Argument Description
--queue Add URL to the download queue (see --queue-file)
--queue-list List all items in the queue
--queue-process Process (download) all pending items in the queue
--queue-clear Remove completed items from the queue
--queue-file <PATH> Custom queue file path (default: ~/.config/goget/queue.json)
--queue-priority <N> Priority for queued item (110, higher = processed first)
--batch-file <FILE> Read URLs from a file, one URL per line
--input-file <FILE> Read URLs from a file (alias for --batch-file)
--schedule <TIME> Schedule download — absolute ("2026-06-01 02:00") or cron ("0 2 * * *")
--on-complete <CMD> Run shell command after successful download (env: GOGET_OUTPUT, GOGET_SIZE, GOGET_URL)

Authentication

Flag Argument Description
--username <USER> Username for HTTP Basic/Digest authentication
--password <PASS> Password (prefer --password-file for security)
--password-file <FILE> Read password from file
--auth-type <TYPE> Authentication type: basic, digest, or auto
--cookie-jar <FILE> Load and save cookies in Netscape format
--cookie "n=v" Set cookie from CLI (repeatable)
--oauth-client-id <ID> OAuth 2.0 Client ID
--oauth-client-secret <S> OAuth 2.0 Client Secret
--oauth-token-url <URL> OAuth 2.0 Token endpoint URL
--oauth-auth-url <URL> OAuth 2.0 Authorization endpoint URL
--oauth-redirect-uri <URI> OAuth 2.0 Redirect URI
--oauth-scopes <S> OAuth 2.0 scopes (comma-separated)
--oauth-grant-type <TYPE> OAuth 2.0 grant type: client_credentials, authorization_code, password, refresh_token
--oauth-access-token <T> OAuth 2.0 access token
--oauth-refresh-token <T> OAuth 2.0 refresh token

Upload

Flag Argument Description
--upload Upload file instead of downloading
--upload-method <M> HTTP method: PUT or POST (default: PUT)
--upload-file <FILE> Path to file to upload
--form-data "k=v" Form data for multipart upload (comma-separated)
--file-field <NAME> Form field name for file upload (default: file)

Verification

Flag Argument Description
--checksum <HASH> Expected checksum (hex string)
--checksum-algo <ALG> Algorithm: sha256, sha512, blake2b, sha3-256, sha3-512, md5 (default: sha256)
--checksum-file <FILE> Read expected checksum from SHA256SUMS-format file

PGP / GPG

Flag Argument Description
--pgp-decrypt Decrypt PGP-encrypted file after download
--pgp-verify Verify PGP detached or inline signature
--pgp-sig <FILE> Path to detached signature file (.asc, .sig)
--pgp-key <FILE> Path to PGP key file
--pgp-passphrase <PASS> Passphrase for private key
--pgp-passphrase-file <F> Read passphrase from file
Flag Argument Description
--metalink Treat URL as a Metalink file (multi-source download)
--metalink-file <PATH> Path to local Metalink file (.meta4, .metalink)

SSL / TLS

Flag Argument Description
--ssl-key-log <FILE> Log TLS master secrets to file (SSLKEYLOGFILE for Wireshark)
--known-hosts <FILE> Custom SSH known_hosts file path for SFTP
--ssh-insecure Skip SSH host key verification for SFTP (accept any key)
--cacert <FILE> Custom CA certificate bundle

Configuration

Flag Argument Description
--config <FILE> Path to configuration file
--init-config Generate default config file at ~/.config/goget/config.toml
--config-get <KEY> Get value (e.g. timeout, parallel)
--config-set <K> <V> Set value (e.g. --config-set timeout 5m)
--config-list List all config keys and values
--config-unset <KEY> Remove config key

Information

Flag Argument Description
--info <URL> Show file metadata without downloading (size, type, server info)
--benchmark <URL> Benchmark download speed (downloads first 10 MB)
--generate-man-page Generate man page in troff format and exit
--completion <SHELL> Generate shell completion for bash, zsh, or fish
--help Show help text and exit
--version Show version and exit

Additional Flags

Flag Argument Description
--parallel <N> Number of parallel chunk connections (0 = auto, 1 = sequential)
--max-speed <RATE> Maximum download speed in bytes/sec or human format
--no-private Disable netrc and auth file reading
--glob <PATTERN> URL glob pattern expansion (e.g. --glob "https://example.com/file[1-3].zip")
--retry-all-errors Retry on any HTTP 4xx/5xx response
--retry-delay <DURATION> Custom delay before retry
--hsts-file <FILE> Custom HSTS cache file path