Steam manifest files explained
What the appmanifest_*.acf file is, what is in it, and why SteamTools needs it.
Last updated: 2026-06-29
Every SteamTools unlock needs two files. This page explains the first one — the appmanifest_<APPID>.acf file — in enough detail that you can read one in a text editor and understand what every line is doing. The Lua file is the easy half (it is just a short script that tells SteamTools which depots to load); the manifest is the part that confuses people.
What the file is
The manifest is a small text file in Valve's "ACF" (Application Configuration File) format. ACF is a key-value format with section headers, similar to INI. Steam writes one of these for every app you have ever installed, in the steamapps directory. The naming convention is appmanifest_<APPID>.acf, where <APPID> is the App ID of the game.
For SteamTools to work, you need a copy of that file (or one that points at the right depots and build) sitting in a folder SteamTools watches, typically <SteamTools>/depotcache/.
What is inside a manifest
A real appmanifest_400.acf (Portal) looks like this:
"AppState"
{
"appid" "400"
"name" "Portal"
"installdir" "Portal"
"StateFlags" "4"
"UpdateLocalTime" "Wed Jan 1 12:34:56 2025"
"buildid" "1234567"
"LastOwner" "12345678901234567"
"BytesToDownload" "0"
"BytesDownloaded" "0"
"AutoUpdateBehavior" "0"
"UserConfig"
{
"language" "english"
}
"MountedDepots"
{
"400" "2345678"
}
}
Most of these fields are self-explanatory once you know what to look for. The two that matter for SteamTools are:
appid— the App ID. Has to match the file name.MountedDepots— the mapping from depot ID to the build ID of that depot. SteamTools uses this to know which build of each depot to download.
What the generator actually gives you
When you request a manifest from this site, you get a small text file with the fields SteamTools needs and nothing else. Specifically:
appidname(resolved fromappdetails)installdirbuildid(the latest public build, or the build for the branch you asked for)MountedDepots, with one entry per depot on the app
We do not include UpdateLocalTime, UserConfig, or LastOwner because SteamTools does not read them, and copying them from someone else's manifest would point at someone else's Steam install, not yours.
The Lua file in 30 seconds
The Lua file (the second of the two files you download) is a tiny script that tells SteamTools which depots to load for this app. A typical 400_public.lua is roughly:
addappid(400, 1, "abcdef0123456789abcdef0123456789")
setmanifest("2345678", "1234567890abcdef1234567890abcdef")
addappid(<appid>, 1, <depot_key>)registers the app and provides the decryption key for its primary depot.setmanifest(<depot_id>, <manifest_id>)points SteamTools at the specific build of that depot.
The generator derives both the depot key and the manifest ID from public Steam data. There is no secret sauce.
Why SteamTools needs both files
- The manifest tells SteamTools which build of the app to load.
- The Lua file tells SteamTools how to load it (which depots, which decryption key).
If you only have the manifest, SteamTools does not know how to decrypt the depot. If you only have the Lua file, SteamTools does not know which build to grab. Both files are required, and they must agree on the App ID.
A note on branches
Some games have a beta or ptb branch in addition to public. The generator exposes a "Branch" field in the UI; if you set it, the returned manifest and Lua target that branch's build instead of the public build. The default is public.
The branch name has to match exactly what Steam shows. Common values are public, beta, beta_1, ptb, and experimental. If you are not sure which branch you want, leave the field blank and you will get the public build.
A note on delisted apps
If a game has been delisted from Steam, the manifest and Lua may still exist in this generator, but they will not work. SteamTools upstream also cannot get a working build for a delisted app, and neither can SteamDB. There is no workaround — the only way to keep using a delisted app is to keep a copy of it installed before it was delisted, and never uninstall it.
Further reading
- The troubleshooting guide covers the four errors the generator can return and how to fix each.
- The SteamTools upstream docs explain what SteamTools does with the manifest and Lua once you have placed them.
- The SteamDB app page is the authoritative source for the
buildidand the list of depots.