I keep this page open in a pinned tab; you probably will too. Use the filter to jump straight to a flag:
01How flags work here
Three things the help text doesn't spell out, learned from the argument parser itself:
- Flag names are case-insensitive, values are not.
-APP 440works; a wrong-case branch password won't. -depotand-manifesttake lists.-depot 101 102 -manifest A Bdownloads two depots in one run — the manifest list must pair up one-for-one with the depot list, or you'll get "-manifest requires one id for every -depot specified".- Several flags have quiet aliases kept for backwards compatibility:
-user/-passfor the long forms, and the old-beta/-betapasswordstill work as synonyms of-branch/-branchpassword. I'll note them in the tables — useful for reading old forum guides without confusion.
02Target selection — what to download
| Flag | Argument | What it does |
|---|---|---|
-app | AppID | Required for every operation. The product to download — find IDs in the store URL or on SteamDB. |
-depot | one or more DepotIDs | Which depot(s) to pull. Omit it and you get every depot your platform/language config needs — usually what you want for "just give me the game". |
-manifest | one or more ManifestIDs | The time-travel flag: a specific historical snapshot per depot. Requires -depot, lists must pair up. Subject to Steam's old-manifest restrictions. |
-pubfile | PublishedFileId | A workshop item, by the number from its steamcommunity.com URL. Needs -app. Full walkthrough: workshop guide. |
-ugc | UGCID | Raw user-generated-content ID — the lower-level cousin of -pubfile for when you have a UGC handle instead of a workshop URL. |
03Authentication — who's asking
The flags below are the short version; the full story — Steam Guard variants, what account.config holds, revoking sessions — lives in the authentication docs.
| Flag | Argument | What it does |
|---|---|---|
-username | account name | Steam account to log in with. Omit entirely for anonymous mode (free apps, most dedicated servers). Alias: -user. |
-password | password | If omitted with -username, you get a hidden prompt — which is better than leaving your password in shell history. Steam caps passwords at 64 ASCII characters; the tool warns if yours breaks that. Alias: -pass. |
-qr | — | Skip passwords entirely: scan a QR code with the Steam mobile app. Mutually exclusive with -username. My default on machines I don't fully trust — see safety. |
-remember-password | — | Caches a revocable login token (never the password) so future runs skip Steam Guard. Requires -username or -qr. Details on what's stored: safety §04. |
-no-mobile | — | Prefer typing a Steam Guard code over waiting for a confirmation tap in the mobile app. For when your phone is in another room. |
-loginid | number | A unique 32-bit ID per instance, letting several DepotDownloaders run concurrently on one network without kicking each other's sessions. |
04Content filters — which files, which flavour
The OS/arch/language trio gets a hands-on guide of its own: depots in other flavours.
| Flag | Argument | What it does |
|---|---|---|
-os | windows · macos · linux | Pull depots for a different OS than the one you're on. Default: current. Conflicts with -all-platforms. |
-osarch | 32 · 64 | Target architecture. Default: host arch. Conflicts with -all-archs. |
-all-platforms | — | Everything for every OS in one go — preservation mode. |
-all-archs | — | Both architectures where games still ship 32-bit. |
-language | language | Which language depots to include. Default: english. Voice-pack hunters start here. |
-all-languages | — | Every language depot. Multiplies download size fast. |
-lowviolence | — | Include the censored low-violence depot variants some regions get. |
-filelist | path to txt | Download only listed files — one path per line, or patterns with the regex: prefix. The way to pull one 40 MB file out of a 60 GB depot. Full syntax & recipes: filelists docs. |
05Branches
| Flag | Argument | What it does |
|---|---|---|
-branch | branch name | Download a beta branch instead of default public. The most reliable downgrade path in 2026 — see the branches reference. Legacy alias: -beta. |
-branchpassword | password | For password-protected branches. Only valid together with -branch. Legacy alias: -betapassword. |
06Behaviour & output
| Flag | Argument | What it does |
|---|---|---|
-dir | path | Where files land. Default: a depots/ folder next to the binary. For multi-depot downloads into one game tree, point every run at the same dir. |
-validate | — | Re-hash existing files and re-download anything that fails. Cheap integrity check for an old download. Aliases: -verify-all, -verify_all. |
-manifest-only | — | Write a human-readable file list without downloading content. My favourite underrated flag — diff two of these to see exactly what a patch changed. |
-max-downloads | number | Concurrent chunk downloads. Default: 8. Raising it helps on fat pipes; lowering it is polite on shared connections. |
-cellid | number | Override which regional content-server cell serves you. Default: auto. Mostly useful when your nearest CDN node is misbehaving. |
-use-lancache | — | Detects a Lancache on your network and routes downloads through it — LAN-party and homelab fuel, and it bumps concurrency automatically when found. |
07Diagnostics
| Flag | Argument | What it does |
|---|---|---|
-debug | — | Verbose SteamKit2 protocol logging. Attach this output when filing issues — it's the first thing maintainers ask for. |
-V / --version | — | Print version and runtime info, exit. |
08Recipes I keep reaching for
First, the build-your-own option — fill in the fields and the command assembles itself:
The classic anonymous test — TF2 dedicated server, no account:
$ ./DepotDownloader -app 232250Multi-depot downgrade in one command — content + binaries, manifests paired in order:
$ ./DepotDownloader -app 218620 -depot 218621 218622 \
-manifest 8295275944386105794 4046205718830127779 \
-username you -remember-password -dir ./old-buildOne file out of a giant depot — filelist with a regex line:
$ echo 'regex:tf/maps/.*\.bsp' > files.txt
$ ./DepotDownloader -app 440 -depot 441 -filelist files.txtThe macOS build, from a Windows machine (or any cross-platform pull):
> .\DepotDownloader.exe -app 440 -os macos -username youWorkshop item on a headless box:
$ ./DepotDownloader -app 730 -pubfile 3070284539What did the patch change? — two manifest listings, one diff:
$ ./DepotDownloader -app 440 -depot 441 -manifest OLD_ID -manifest-only -dir ./before
$ ./DepotDownloader -app 440 -depot 441 -manifest-only -dir ./after
$ diff -u before/manifest_*.txt after/manifest_*.txtNeed the why behind these flags rather than the what? The downgrade guide walks the manifest workflow end to end, and installation gets the binary onto whatever you're running. Server admins reaching for -manifest because SteamCMD can't pin an old version will find the division of labour between the two tools spelled out there. If a flag behaves differently than documented here, that's a bug on my side — the source of truth is Program.cs, and I'd appreciate the heads-up.