Tools / Palworld
Palworld Save Migration Doctor
Moving a local co-op world to a dedicated server? Point this page at the save folder
(or a zip of it) and it checks the exact things that break that migration: the
host-character GUID trap, wrong folder nesting, Xbox / Game Pass
container format, the WorldOption.sav settings override, and empty or
truncated .sav files.
If the diagnosis is the host-character trap, the
Palworld Save Converter fixes it in one
click - this page tells you which problem you have, that one repairs it.
Your save never leaves your browser. The folder picker reads only file names and sizes; a zip is inspected by reading its central directory - the tiny index at the end of the archive - so nothing is decompressed and nothing is uploaded. Verify with the network tab open. And on purpose, this tool never parses or edits save bytes: every finding is deterministic from structure alone, and anything deeper points you at PalworldSaveTools (MIT).
Check your save
Co-op saves on Windows live in
%LocalAppData%\Pal\Saved\SaveGames\<your-id>\<world-id>\.
Pick that world folder - or any parent, the doctor finds the world inside.
Close Palworld fully before copying or checking.
Reads names & sizes only.
Only the zip's index is read - never decompressed.
All checks run locally in this tab. Your save is never uploaded.
Want this on a real server? Supercraft hosts Palworld →
Why local co-op → dedicated server migration fails
Copying the world folder is the easy part. Three structural traps catch almost everyone:
1. The host-character trap. Local co-op always saves the host as the fixed GUID
00000000000000000000000000000001 - literally
Players/00000000000000000000000000000001.sav in every co-op world
(documented by both
PalworldSaveTools and
palworld-host-save-fix).
A dedicated server assigns every player a real GUID, so the migrated world has no owner for
that slot: the host joins their own server and is told to create a new character. The old character
isn't gone - it needs a GUID rebind, which those open-source tools perform. This page detects the
trap by filename; the byte surgery stays with the tools built for it.
2. Wrong nesting. The server expects Level.sav directly inside
Pal/Saved/SaveGames/0/<server-world-id>/. Uploading the whole
SaveGames/<your-id>/<world-id>/ tree (or zipping the folder inside another
folder, or zipping a zip) puts the world one or two levels too deep, and the server quietly starts a
brand-new world instead. The doctor tells you exactly which folder's contents to copy.
3. The WorldOption.sav override. Co-op worlds carry their creation-time
settings in WorldOption.sav. On a dedicated server that file wins over
PalWorldSettings.ini - the number-one reason "my ini changes don't apply" after a
migration. Delete it from the server copy if you want ini control, and build the ini with the
Settings Generator or upgrade an old one with the
1.0 Config Migration Doctor.
What a migration-ready world folder looks like
<world-id>/
├─ Level.sav ← the world itself (required)
├─ LevelMeta.sav ← world metadata (should be present)
├─ WorldOption.sav ← co-op world settings (overrides the server ini!)
├─ LocalData.sav ← client-local data (server ignores it)
└─ Players/
├─ 00000000000000000000000000000001.sav ← co-op HOST slot (needs rebind)
└─ <32-hex-guid>.sav ← each other player
| Check | What it catches |
|---|---|
| Required files | Level.sav missing (nothing to migrate), LevelMeta.sav missing, empty Players/ (characters won't transfer). |
| Nesting depth | The classic SaveGames/<id>/<world>/-uploaded-whole and zip-inside-zip mistakes. |
| Host slot | Players/00000000000000000000000000000001.sav - the co-op host character that needs a GUID rebind on a dedicated server. |
| Empty / truncated files | Any .sav of 0 bytes or under 24 bytes - a copy taken while the game was running, or a failed download. |
| Save provenance | Xbox / Game Pass containers.index + container.* (wgs format) that must be converted before a server can read it. |
| GUID sanity | Player files not named as 32-character hex GUIDs; WorldOption.sav present (ini override); stray backup folders. |
Everything above is a filename, structure, or size check - deterministic, no guessing.
What this tool deliberately does not do: parse GVAS, decompress save data, or
edit bytes. For character transfer, host rebind, or Game Pass conversion, use
PalworldSaveTools.
If a .sav here is truncated or your world won't load, the
Corrupted Save Checker reads every rolling
backup and rebuilds the most recent intact one into a server-ready zip.
Manual migration checklist (no JavaScript needed)
- Close Palworld completely, then copy
%LocalAppData%\Pal\Saved\SaveGames\<your-id>\<world-id>\. - Confirm the copy contains
Level.sav,LevelMeta.savand a non-emptyPlayers/folder, and that no.savfile is 0 bytes. - If you see
containers.index/container.*files instead, it's a Game Pass save - convert it with PalworldSaveTools first. - Stop the dedicated server. Put the folder's contents (Level.sav at the top) into
Pal/Saved/SaveGames/0/<server-world-id>/- the world-id folder the server already created (if you rename it,DedicatedServerNameinGameUserSettings.inimust match). - Decide who wins on settings: delete
WorldOption.savfrom the server copy ifPalWorldSettings.inishould be in charge. - If
Players/00000000000000000000000000000001.savexists: start the server, join once as the host to generate a real GUID, stop the server, then rebind with PalworldSaveTools' "Fix Host Save" or xNul's palworld-host-save-fix. - Keep the original save untouched until everyone has logged in and found their character.
FAQ
Is my save really not uploaded?
Really. There is no upload endpoint on this page at all - the check is pure client-side JavaScript over file names and sizes. A zip is read via the File API by slicing only its central directory (the index at the end of the file); no entry is ever decompressed. The network tab will show zero requests carrying your save.
The doctor says my host character needs a rebind. Did I lose it?
No. The character data is still in the save - co-op just filed it under the fixed host GUID
00000000000000000000000000000001, which no player on a dedicated server will ever
be assigned. Generate your real GUID by joining the server once, then rebind with
PalworldSaveTools ("Fix Host Save") or palworld-host-save-fix. Back up first.
Why won't this tool just fix the save for me?
By design, the doctor stays read-only - a deterministic pre-flight check that can't hurt anything. When you want the fix done for you, use our Save Converter: it locates every UID cell structurally and patches 16 bytes in place only when they exactly equal the old UID - the save is never re-serialized, and it still never leaves your browser. Half-parsed GVAS writes are how saves die; guarded in-place patches are not.
Does the world folder name have to match on the server?
The server loads the world-id folder under SaveGames/0/ that matches
DedicatedServerName in GameUserSettings.ini (not
PalWorldSettings.ini). Easiest path:
let the server create its world once, then replace that folder's contents with your save,
keeping the server's folder name.
My zip is over 4 GB and the zip check refuses it.
ZIP64 archives are deliberately not parsed (the reader would have to guess). Extract the zip and use the folder picker instead - it handles any size, since it only reads names and sizes.
Does this cover the server config side of the migration?
No - this page is about the save. For the config side (old OptionSettings lines,
renamed keys, new 1.0 defaults) use the
1.0 Config Migration Doctor, and build a
clean PalWorldSettings.ini with the
Settings Generator.