01Why pull a different flavour
The recurring cases, from most to least common: provisioning a Linux server from a Windows desktop (the bread and butter of the servers hub); fetching a macOS build on a fast connection for a Mac that doesn't have one; comparing a game's native Linux build against the Windows-via-Proton one; digging out 32-bit binaries a legacy mod tool insists on; grabbing a voice/text language other than the one Steam auto-picked for you; and full-spectrum archiving, where you want every platform and language of a build before it disappears into the manifest fog.
One licensing fact unlocks all of it: a Steam license covers every platform and language of the game. Owning the game once means the macOS depot, the Linux depot and the Japanese audio depot are all yours to request — the flags below only choose which ones arrive.
02The flag set
| Flag | Values | Default | Greedy sibling |
|---|---|---|---|
-os | windows · macos · linux | your current OS | -all-platforms |
-osarch | 32 · 64 | your host arch | -all-archs |
-language | english, german, japanese… | english | -all-languages |
Each flag conflicts with its greedy sibling — pick one or the other. Two defaults worth reading twice: -os defaults to the machine you're on, which surprises people downloading server files at their desk, and -language defaults to english regardless of your Steam settings — if you want another language's files, you must say so. There's also -lowviolence for the censored depot variants some regions get — niche, but it's the only way to deliberately fetch them. Full table with the rest of the filters: CLI reference.
03Cross-OS in practice
$ ./DepotDownloader -app 440 -os macos -username you -dir ./tf2-macThat's TF2's macOS build arriving on whatever machine ran the command. It works because of how games are packaged: typically one big platform-agnostic content depot (textures, models, audio) plus small per-OS binary depots — the split we dissected for CS:GO's 30 GB-vs-300 MB layout. -os simply selects which binary depots come along with the shared content.
Two honest caveats, both of which I learned by tripping over them. First, no depot, no download: a game with no native Linux build has no Linux depot — Proton games ship Windows depots only, and -os linux will get you the configured depots for Linux, which may be none beyond shared content. Check the app's Depots page on SteamDB, which labels each depot's OS. Second, for historical cross-OS pulls remember that each depot has its own manifest history — the Windows manifest ID from the downgrade guide won't resolve in the macOS depot; you need that depot's own ID from its own Manifests tab.
This same mechanism solves a common Linux-server problem from the other direction. When a game's dedicated server is Windows-only — no native Linux server build — a Linux host can still run it: pull the Windows server depot explicitly with -os windows on the Linux box, then launch it under Proton or Wine. It's the workflow SteamCMD handles awkwardly (it wants a forced platform-type flag); here it's just -os windows, and the resulting files run under your compatibility layer like any other Windows server. The Sons of the Forest server is one real case — Windows-only, run on Linux via exactly this.
04The 32-bit time capsule
$ ./DepotDownloader -app 90 -os linux -osarch 32 -dir ./hlds32-osarch matters only where games actually ship architecture-split depots, which in 2026 mostly means the back catalogue: GoldSrc and early Source servers, older engines, mod SDKs that never left 32-bit. When a legacy toolchain demands the 32-bit binaries your modern install no longer includes, this flag is the polite way to get exactly those. -all-archs exists for the archival case — both flavours in one pass, where both still exist.
05Language depots — and one boundary
Localized audio usually lives in separate per-language depots (SteamDB's depot list has a language column). The clean use case: you want a language's files without wrestling the Steam client's coupled language setting —
$ ./DepotDownloader -app … -language japanese -username you -dir ./jp-audio— and then place them per the game's modding conventions. This is how the audio-in-Japanese, text-in-English crowd builds their mixed setups when a game's depot layout allows it: the in-game language coupling is a client/UI limitation, not a depot one. -all-languages pulls every localization at once; watch the disk, voice packs multiply fast.
06Preservation mode
$ ./DepotDownloader -app … -all-platforms -all-archs -all-languages -username you -dir ./archiveThis is the one I reach for when I'm archiving something I care about: every OS, every architecture, every language — the complete artifact as it exists today. It's the right shape for genuine archival, especially combined with manifest pinning to capture a specific build rather than "whatever's current". Expect multiples of the store-page install size, and read the status page first if the build you're preserving is already historical — the archive you can still take is the one worth taking today. For pulling a thin slice instead of everything, the filelists docs cover the opposite extreme.