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.
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.
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>/, matching theDedicatedServerNameworld id the server already uses. - 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?
Because save-editing in a browser page you found five minutes ago is exactly what you shouldn't trust, and half-parsed GVAS writes are how saves die. Structure checks are deterministic and safe; byte surgery belongs to the established open-source tools this page links, run locally by you, with a backup.
Does the world folder name have to match on the server?
The server loads the world id set by DedicatedServerName in
PalWorldSettings.ini (the folder under SaveGames/0/). 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.