Players get the character creation screen even though their saves exist? That’s a common Palworld issue when moving a server from Linux to Windows (or vice versa): GUIDs change. Let’s cleanly restore saves by remapping GUIDs using a Python script and the uesave tool.
Prerequisites
- Access to your Oxygenserv panel (login and password)
- Palworld server stopped during the whole operation
- A backup of your world (folder
Pal/Saved/SaveGames/0) - A PC (Windows recommended) with Python 3.10+ installed
uesave-rstool (uesave.exeon Windows, or the Linux/macOS binary)- “Palworld Host Save Fix” script (ZIP containing
gui.py) - A way to transfer files (panel file manager or SFTP)
Step-by-step
-
Identify affected players and collect GUIDs
Ask affected players to join the server once and create a new character to generate a “New GUID”. In the Oxygenserv file manager, openhome/container/Pal/Saved/SaveGames/0/Playersand sort by “Date modified”. For each player, note the most recent file (New GUID, e.g.,3F8B...9C.sav) and find their Old GUID in your backup. If unsure, compare timestamps and file sizes and confirm the player’s login time. -
Download the world save
From the panel’s file manager, go tohome/container/Pal/Saved/SaveGames/0. Select everything (Level.sav,WorldOption.sav,Playersfolder, etc.), click “Compress”, then download the archive. You can also SFTP the entire0folder. Keep this ZIP as your safety net. -
Stop the server and isolate the save
In the Console tab, click the green “Stop” button. When logs show “Server stopped”, go back to Files and renameSaveGames/0to0 (Old). This prevents unwanted writes and lets you roll back instantly if needed. -
Download and stage the tools (uesave + script)
Download the “Palworld Host Save Fix” ZIP (“Code” > “Download ZIP”). Grab the properuesave-rsbuild for your OS (uesave.exeon Windows). Create a temp folder likeC:\palworld-fixand extract all ZIPs there. You should see at leastgui.pyand theuesavebinary. -
Launch the GUI script
In that folder, Shift + right-click and choose “Open PowerShell window here”. Runpython --version(orpython3 --version); if Python is missing, install it, then reopen the shell. Start the tool withpython gui.py(orpython3 gui.py). If dependencies are missing, runpip install -r requirements.txtand retry. -
Point the tool to uesave and your world
In the script window, under “uesave”, click “Browse” and selectuesave.exe(or./uesaveon Linux/macOS). Do the same for your world save: pick the folder containingLevel.sav,WorldOption.sav, and thePlayersdirectory (that’s the content fromSaveGames/0). If the tool asks for a single file, chooseLevel.savin that same folder. -
Map GUIDs (New → Old)
For each affected player, paste the New GUID (generated after their test login) and the Old GUID (from the backup) into the matching fields. Tick the “GUID fix” checkbox (if it reads “Guild fix”, that’s just a typo—tick it). Example mapping: New3f8b9a1c0d...→ Olda12c34d56e.... Repeat for every affected player. -
Run the fix and confirm
Click “Run Command”. A shell window appears asking for confirmation: press Enter. The tool usesuesaveto rewrite GUID references in player/world files. Wait for the completion message (typically 1–5 minutes depending on save size). If you get “file not found”, double-check the selected paths and permissions. -
Upload the repaired save
Back on the panel, go tohome/container/Pal/Saved/SaveGamesand create a fresh0folder. Upload the repaired content there (Level.sav,WorldOption.sav,Playersfolder, etc.). Do not mix with0 (Old); ensure the new folder only contains the updated files (recent timestamps). -
Start and verify in-game
Press “Start” on the panel. Watch the console: once you see “Server started”, have affected players rejoin. They should load their original characters, inventory, and progress. If someone still gets character creation, it’s usually an inverted mapping (Old/New) or a missing player.savinPlayers.
Tips & optimization
– Always back up first (full ZIP of SaveGames/0)—2 minutes now saves hours later.
– Avoid changing OS again after migration. If you must, plan a GUID fix right after first boot.
– Track your mappings in a simple CSV: new_guid;old_guid;steamid;discord for clarity.
– On Windows, keep uesave.exe and gui.py in the same folder to prevent path issues.
– For a single broken character, map only that player—fast and safe.
– Set daily automated backups and keep at least 3 restore points (D-1, D-2, D-7) to handle bad updates or crashes.
FAQ
Where exactly are the player files?
Go to home/container/Pal/Saved/SaveGames/0/Players. Each player has a [GUID].sav file. Sort by date to find the “New GUID” created after the test login, and grab the “Old GUID” from your backup (same path in the older copy).
The script won’t start, Python missing
Open PowerShell and run python. If it’s not found, install Python from the Microsoft Store or python.org, check “Add Python to PATH”, reopen the shell, then run python gui.py. If modules are missing, run pip install -r requirements.txt.
I’m on Linux/macOS and there’s no uesave.exe
Download the correct uesave binary for your OS. In the tool, select that file instead of uesave.exe. Launch the script with python3 gui.py and ensure the binary is executable (chmod +x uesave).
A player still sees character creation after the fix
Verify you mapped the correct New→Old GUID pair and that the player’s .sav exists in Players. Remap just that player and rerun the fix. Make sure the server was fully stopped during upload, otherwise files may have been overwritten.
Take it step by step and double-check each GUID—you’ve got this. If you need a hand, our team is here to help keep your Palworld worlds safe and stable.