Download
depot / docs / cli-reference

The flag reference

Every flag DepotDownloader accepts, verified against the 3.4 source — not against decade-old forum posts. Defaults, hidden aliases, the conflicts the program will yell at you about, and recipes for the combinations that matter.

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 440 works; a wrong-case branch password won't.
  • -depot and -manifest take lists. -depot 101 102 -manifest A B downloads 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/-pass for the long forms, and the old -beta/-betapassword still 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

FlagArgumentWhat it does
-appAppIDRequired for every operation. The product to download — find IDs in the store URL or on SteamDB.
-depotone or more DepotIDsWhich 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".
-manifestone or more ManifestIDsThe time-travel flag: a specific historical snapshot per depot. Requires -depot, lists must pair up. Subject to Steam's old-manifest restrictions.
-pubfilePublishedFileIdA workshop item, by the number from its steamcommunity.com URL. Needs -app. Full walkthrough: workshop guide.
-ugcUGCIDRaw 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.

FlagArgumentWhat it does
-usernameaccount nameSteam account to log in with. Omit entirely for anonymous mode (free apps, most dedicated servers). Alias: -user.
-passwordpasswordIf 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.
-qrSkip 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-passwordCaches 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-mobilePrefer typing a Steam Guard code over waiting for a confirmation tap in the mobile app. For when your phone is in another room.
-loginidnumberA 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.

FlagArgumentWhat it does
-oswindows · macos · linuxPull depots for a different OS than the one you're on. Default: current. Conflicts with -all-platforms.
-osarch32 · 64Target architecture. Default: host arch. Conflicts with -all-archs.
-all-platformsEverything for every OS in one go — preservation mode.
-all-archsBoth architectures where games still ship 32-bit.
-languagelanguageWhich language depots to include. Default: english. Voice-pack hunters start here.
-all-languagesEvery language depot. Multiplies download size fast.
-lowviolenceInclude the censored low-violence depot variants some regions get.
-filelistpath to txtDownload 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

FlagArgumentWhat it does
-branchbranch nameDownload a beta branch instead of default public. The most reliable downgrade path in 2026 — see the branches reference. Legacy alias: -beta.
-branchpasswordpasswordFor password-protected branches. Only valid together with -branch. Legacy alias: -betapassword.

06Behaviour & output

FlagArgumentWhat it does
-dirpathWhere 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.
-validateRe-hash existing files and re-download anything that fails. Cheap integrity check for an old download. Aliases: -verify-all, -verify_all.
-manifest-onlyWrite a human-readable file list without downloading content. My favourite underrated flag — diff two of these to see exactly what a patch changed.
-max-downloadsnumberConcurrent chunk downloads. Default: 8. Raising it helps on fat pipes; lowering it is polite on shared connections.
-cellidnumberOverride which regional content-server cell serves you. Default: auto. Mostly useful when your nearest CDN node is misbehaving.
-use-lancacheDetects a Lancache on your network and routes downloads through it — LAN-party and homelab fuel, and it bumps concurrency automatically when found.

07Diagnostics

FlagArgumentWhat it does
-debugVerbose SteamKit2 protocol logging. Attach this output when filing issues — it's the first thing maintainers ask for.
-V / --versionPrint 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:

COMMAND CONSTRUCTORfill in what you know — the command updates live

The classic anonymous test — TF2 dedicated server, no account:

$ ./DepotDownloader -app 232250

Multi-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-build

One 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.txt

The macOS build, from a Windows machine (or any cross-platform pull):

> .\DepotDownloader.exe -app 440 -os macos -username you

Workshop item on a headless box:

$ ./DepotDownloader -app 730 -pubfile 3070284539

What 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_*.txt

Need 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.