A .NET version of XGP-save-extractor rebuilt with new features, allows you to extract or replace Xbox Game Pass (PC) save files, enabling easy transfer of game saves between Xbox Game Pass and Steam/Epic versions (on supported games).
This version includes:
- Generic handler (allows extraction of saves from ANY game as long as it does not require any extra encryption)
- Replace mode (helps you to transfer saves from steam/epic into Xbox Game Pass)
- Custom directories
- Better menu navigation
- .NET 6 runtime
- Windows 10/11 (UWP package layout located at
%LOCALAPPDATA%\Packages)
Most games will work using the generic handler.
Obs: If a game is not registered on the
games.json, it's extracted files names will have no extension suffixes.
Some games require unique handlers, those have to be implemented.
Configure supported games via a strongly-typed games.json file:
package: Folder path within%LOCALAPPDATA%\Packageshandler: Built‑in save format handlers (generic,1c1f,1cnf,starfield, etc.)handler_args: Handler-specific configurations such as file extension ({ "suffix": ".sav" })
If a game requires a new format handler, you must implement the ISaveHandler interface.
- Select your game from the available list, or enter a path to your
wgsdirectory. - Select your user container ID.
- Choose Extract Files.
- The tool will display each
OutputNameand generate a ZIP file in the root directory.
- Select Replace Entry.
- Choose the save slot to overwrite.
- Provide the file path to your new save file.
- Keep replacing slots until you're done, then select Finish
- The tool automatically backs up the container before overwriting every selected file.
Caution: Not all listed entries are save slots, some files contain crucial general information and can break the game if replaced.
You can grab the latest pre-built executable release at https://github.com/brodrigz/XgpSaveTools/releases/latest
If you prefer to build yourself, clone the repo and publish with .NET 6:
dotnet publish Xgpst_ConsoleApp/Xgpst_ConsoleApp.csproj \
-c Release \
-r win-x64 \
--self-contained false \
/p:PublishSingleFile=true \
--output bin/Release/net6.0/publish/win-x64- Inspired by Z1ni’s Python XGP-save-extractor.
- @snoozbuster for reverse engineering container format at goatfungus/NMSSaveEditor#306.
- Contributions and pull requests are very welcome. Please submit issues or pull requests with your game’s package name, handler type, and relevant samples.


{ "games": [ { "name": "Atomic Heart", "package": "FocusHomeInteractiveSA.579645D26CFD_4hny5m903y3g0", "handler": "1c1f", "handler_args": { "suffix": ".sav" } }, { "name": "Starfield", "package": "BethesdaSoftworks.Starfield_8wekyb3d8bbwe", "handler": "starfield" } // Add or tweak game entries here... ] }