Auto-Cloud or the Cloud API?
| Steam Auto-Cloud | Cloud API | |
|---|---|---|
| Code needed | None. Configured in Steamworks. | Yes, through ISteamRemoteStorage. |
| How it syncs | Steam syncs matching files when the game starts and after it exits. | Your game reads and writes cloud files directly. |
| Best for | Most games with normal save files. | Letting players choose which saves go to the cloud, or other fine control. |
The rest of this guide covers Auto-Cloud.
1. Set the quota
In App Admin, open Steam Cloud and set the byte quota per user and number of files per user. These are per player, per game. Pick generous but realistic values, Save, and publish. The Auto-Cloud section unlocks once this is set.
2. Add root paths
Each root path describes one group of files to sync, in five parts:
| Part | Meaning | Example |
|---|---|---|
| Root | A known base folder | WinAppDataLocalLow |
| Subdirectory | The path under the root (. for none) | MyStudio/MyGame/saves |
| Pattern | Which files, with * as a wildcard | *.sav |
| OS | Only if the files are OS-specific | All OSes |
| Recursive | Include subfolders | On, if saves live in per-user subfolders |
Common roots include WinAppDataLocal, WinAppDataLocalLow, WinAppDataRoaming, WinSavedGames, WinMyDocuments, MacAppSupport, LinuxXdgDataHome and SteamCloudDocuments. Steam resolves each one correctly even if the player has moved their Windows folders.
{64BitSteamID} or {Steam3AccountID}, for example saves/{64BitSteamID}, so their saves never mix.3. Cross-platform saves: use Root Overrides
This is the classic mistake. If you add a separate root path for each OS, every OS gets its own save pool, and a player's Windows save won't show up on their Steam Deck.
For cross-platform saves, define one root path (usually the Windows one), set its OS to All OSes, then add a Root Override for each other OS that maps the original root to that OS's folder. Files then sync across every platform.
Unity example
Unity's Application.persistentDataPath differs per OS. Set the root path to the Windows location (WinAppDataLocalLow + CompanyName/ProductName). Then add overrides for macOS and Linux that point to their own persistent data folders, using Add/Replace Path with Replace Path enabled.
4. Test it
While signed in with an account that owns the game, open steam://open/console in a browser.
Run testappcloudpaths <AppId> and then set_spew_level 4 4.
Launch from Steam, save, exit, and watch the console for the upload. Then repeat on a second PC or a Deck to check the download.
Run testappcloudpaths 0 and set_spew_level 0 0. If you used developer-only mode, turn it off and publish.
Demo saves that carry over
In the full game's Cloud settings, set the demo's App ID as the Shared cloud APP ID so both use the same cloud storage. Players who progress in your demo keep that progress when they buy. Sharing with an unreleased base game doesn't sync, so set this up around launch.
Good habits
| Do | Why |
|---|---|
| Keep saves small, and split rarely-changed data into separate files | Every changed file is uploaded after each session. Big saves slow down quitting and launching. |
| Don't sync graphics or video settings | A Deck and a desktop PC need different settings. |
| Stay well under 100 MB per file | That's the per-write limit through the API, and large files sync slowly. |
| Consider Dynamic Cloud Sync | Lets a suspended Steam Deck session pick up progress made on another device. It needs extra handling in your game, so test before enabling it for everyone. |