Web Analytics Made Easy - Statcounter

Tools / Palworld

Palworld Save Converter rebind any player's character

Move a co-op world to a dedicated server, a server world back to co-op, or move any single player to a new account - without losing the character. Pick who is moving (the host, or the friend who just bought the game on Steam after playing on Game Pass) and where they're going; the converter rebinds their character, pals, palbox, guild, built structures, chest locks and door-lock whitelists, entirely in your browser. It reads Palworld 1.0's Oodle format and computes the new UID from a SteamID64 - no "join the server first and make a throwaway character" step.

Xbox / Game Pass right now: you can point it at a wgs folder and it is worth a try, but our own error logs say most Game Pass folders currently fail to extract. That is a bug on our side, not a problem with your save, and it is being worked on. The two routes that do work today are here.

Your save never leaves your browser. Reading, decompressing, patching and re-zipping all happen in this tab (File API + WebAssembly) - there is no upload endpoint on this page. Verify with the network tab open. Your original files are never modified; you download a converted copy.

Your save never leaves your browser In-place patch - never re-serialized Only cells equal to the old UID change

1. Point it at the save

Close Palworld and stop the dedicated server first, then pick the folder marked below. Steam co-op saves live in %LocalAppData%\Pal\Saved\SaveGames\<your-steam-id>\<world-id>\, server worlds in Pal/Saved/SaveGames/0/<world-id>/, and Game Pass saves under %LocalAppData%\Packages\PocketpairInc.Palworld_...\SystemAppData\wgs\. Any parent folder works too - the converter searches inside. The one thing that does not work is picking a folder below the world, which is the single most common way this goes wrong.

What travels with the character

A character's progress does not live in the world file alone: it is split between Players/<uid>.sav (the person) and Level.sav (everything they own or built), joined only by that 32-hex UID. That is why the hand-rolled version of this move goes wrong: people copy the world, get a new UID, and the map and tech tree "reset" - the data is still in the old player file, just no longer linked to them. Rebinding the UID everywhere is what keeps all of this attached:

  • Level, stats and EXP
  • Technology points + unlocked technologies and recipes
  • Map unlocks and fast-travel points
  • Paldeck entries and capture counts
  • Lifmunk effigies / relics and notes
  • Quests, in-progress and completed
  • Inventory, equipment and skins
  • Party pals + palbox, including the <uid>_dps.sav sidecar
  • Guild membership, admin rights and character handles
  • Their built structures, chest / booth locks and door-lock whitelists

Everything in that list is a field we read out of a real Palworld 1.0 save (RecordData in the player file carries the map flags, fast-travel flags, Paldeck, relics, notes and quest arrays; the world file carries ownership, guild and build data). The first eight travel inside the renamed player file, which is why the file itself has to come with you - the last two are rebound in Level.sav.

Each item is preserved when its save structure is recognized and successfully patched - it is not an unconditional guarantee. If a guild or data block can't be parsed (a newer game revision, an unusual save), the converter tells you exactly what it couldn't touch and, by default, stops rather than hand you a half-rebound save. You can choose to convert partially anyway, and the report says precisely what was and wasn't changed.

Why the host loses their character - and what actually gets rewritten

Local co-op always stores the host under the fixed UID 00000000000000000000000000000001. A dedicated server instead derives every player's UID from their SteamID64, so after copying the world over, the server cannot match the host to that slot and offers them a fresh spawn. The character isn't gone - roughly two hundred references across the save just point at the wrong ID.

This converter rebinds all of them: the character record in CharacterSaveParameterMap, the player file itself (renamed to the new UID), pal ownership (current owner, ownership history, nickname authorship), palbox container slots, the guild (member list, admin, character handles, name authorship), the dimensional pal storage sidecar (_dps.sav), every built structure's builder ID, chest / cooler / booth privacy locks, signboards, dropped-death-bag ownership, and door-lock password whitelists. Each 16-byte cell is located structurally and only patched when it exactly equals the old UID - the save is never re-serialized, so everything else is untouched by construction.

The layouts come from the open-source Palworld save-tools ecosystem: cheahjs/palworld-save-tools, xNul/palworld-host-save-fix and PalworldSaveTools (all MIT), with Oodle decompression by ooz-wasm (GPL-3.0, source at that link). Thank you - this tool exists because that research is public.

No "join the server first" step

The classic host-save fix requires starting the server, joining once to generate a throwaway character, and reading the new UID off that file. But the server's UID derivation is deterministic: CityHash64 of the SteamID64 rendered as UTF-16, folded to 32 bits (low32 + high32 × 23), padded with zeros. Your SteamID64 is literally the folder name your co-op save sits in (SaveGames\<SteamID64>\<world>), so the converter fills it in automatically and computes the exact UID the server will assign - verified against live Palworld 1.0 dedicated servers. If your server runs without Steam authentication (-nosteam), tick the NoSteam box and the alternate derivation is used.

What a conversion produces

your-world-<player>-server-ready.zip
├─ Level.sav              ← all UID references rebound, recompressed
├─ LevelMeta.sav          ← untouched
├─ Players/
│  ├─ <NEW-UID>.sav       ← the rebound character, renamed + rebound
│  └─ <NEW-UID>_dps.sav   ← their palbox sidecar, renamed with them
│     (everyone else's files pass through unchanged)
└─ MIGRATION-README.txt   ← who was rebound, to what, and the install steps

Upload the zip's contents so Level.sav lands in Pal/Saved/SaveGames/0/<server-world-id>/. Before uploading anything, it's worth running the folder through the Save Migration Doctor - it checks the structural traps (nesting, truncated files, backup folders) that this converter assumes are already right.

Going the other way: dedicated server back to single player or co-op

The conversion is not one-directional. People usually arrive here moving a co-op world onto a dedicated server, but the reverse is the same operation with the target changed: a group winds the server down, and one person wants to keep playing the world solo or re-host it as co-op from their own machine.

What changes is only the destination. Going to a dedicated server you send the character to a Steam-derived ID, because that is the ID the server will look for. Coming back, you send it to the co-op host slot instead, which is the fixed ID 00000000000000000000000000000001. Everything in the section above still travels: level, tech unlocks, palbox, map discovery, base ownership.

Two things worth knowing before you do it. Copy the server's world folder while the server is stopped, not while it is running, or you can catch a half-written save. And keep the untouched server copy until you have loaded the local world once and confirmed the character arrived with the right level and Pals, because that copy is your only way back.

Game Pass and Xbox saves to Steam or a dedicated server

Game Pass stores Palworld saves in a wgs folder rather than the normal SaveGames layout, with opaque names instead of readable world folders. This converter accepts that layout as input, so you can point it at the wgs folder and it will try to reassemble the world.

The honest status, as of August 2026: it usually does not work. Counting the failures this tool reports back to us, most Game Pass folders get as far as finding the world and then fail while decompressing it. The fault is ours, in the way we reassemble Microsoft's container files, and a fix is in progress. It costs you nothing to try, because your original save is never modified and nothing is ever uploaded. But if it fails, that is us, not you or your save.

Two routes that do work today:

  1. Let Palworld convert it. On a PC that also has the Steam copy of the game, load the world in Palworld once. The game writes it out in the normal %LocalAppData%\Pal\Saved\SaveGames\ layout, and this converter handles that reliably.
  2. Unpack the container yourself. The open-source PalworldSaveTools extracts a wgs container into a normal world folder. Bring that folder back here and convert it as usual.

This is the usual path for someone who played on Game Pass, then bought the game on Steam and wants their character rather than a fresh start, or who is moving a Game Pass world onto a dedicated server so the group can keep playing when the host is offline.

One further honest limit, the same one stated in the FAQ below: the converter rebinds the character but never re-serializes the save, so the character's stored platform value is left exactly as it was. We have not confirmed the Game Pass to Steam path end to end on a live server. Keep your original save, and tell us if it does not work for you, because that is the only way this note ever gets to change.

Manual route (no JavaScript, open-source tools)

  1. Copy the world folder with the game closed / server stopped.
  2. Start the dedicated server, join once with the host's account, stop the server - this creates Players/<new-uid>.sav.
  3. Run palworld-host-save-fix (or PalworldSaveTools' "Fix Host Save") with the old UID 00000000000000000000000000000001 and the new UID from step 2.
  4. Replace the server's world with the fixed copy. Keep a backup of everything.

FAQ

How do my friends move their characters? Can you rebind a player who isn't the host?

Yes - step 3 lists every character in the world, not just the host slot. Pick any player whose Players/<uid>.sav is in your selection and send them to a new UID. Their character record, pals, palbox, guild membership and every structure, chest lock and door whitelist they own get rebound; nobody else is touched. (If a character's player file isn't in the folder you picked, we say so and refuse to pick them - the world's references alone are not a character.)

I played on Game Pass and bought Palworld on Steam. Can I keep my character?

Pick your character, choose A dedicated server (Steam), and enter your new SteamID64 - the converter rebinds you to the UID a Steam server derives from it, so level, tech, map, Paldeck, pals and base stay attached. Two honest caveats: you need the world folder (the host's save; a Game Pass wgs folder is accepted as input but usually fails today, so convert it via the Steam copy of the game first), and your player file records a PlayerPlatform enum (e.g. EPalPlayerPlatform::Xbox) that we do not rewrite - it is a variable-length string and this converter never re-serializes a save. We have not verified a Game Pass → Steam move on a live server, so we won't claim it's fine: keep your original save, and tell us via the feedback link if the character doesn't show up.

What exactly is preserved?

Level and stats, tech points and unlocked recipes, map + fast-travel unlocks, the Paldeck, effigies/relics and notes, quests, inventory and skins, party pals and palbox (incl. the _dps sidecar), guild membership, and their built structures / chest locks / door whitelists. The full list is above. Most of it lives inside the player file - copying the world without it (or losing the UID link) is exactly how people end up with a fresh map and an empty tech tree.

The target UID already belongs to someone in the world. What happens?

We tell you before you convert, and the conversion becomes a swap: the two characters trade UIDs, both keeping their pals, levels and bases. Nothing is deleted. If the target UID belongs to a player whose .sav file isn't in your selection, we block the conversion instead of leaving two characters sharing one UID.

Is my save really not uploaded?

Really. Decompression (including 1.0's Oodle format via WebAssembly), the rewrite, and the zip download are all local. There is no conversion endpoint on this page - the network tab shows zero requests carrying your save.

Which save formats are supported?

PlM (Oodle - Palworld 0.6 through 1.0), PlZ single and double zlib (pre-0.6), CNK-wrapped Xbox exports. Game Pass wgs containers are accepted as input, but most of them currently fail to extract - see the Game Pass section above. Output is PlZ, which every Palworld version reads and transparently upgrades on its next save.

My friends played in the co-op world too. Do their characters survive?

Yes, untouched. Co-op guests already have real Steam-derived UIDs - identical to what the server assigns them - so only the host needs rebinding. The converter passes their files through as-is.

Do door locks and chest locks really carry over?

Yes. Password-lock whitelists store each allowed player's UID (player_infos in the lock module), and chests/coolers/booths carry a private_lock_player_uid. Both are rebound - this is the part most converters skip, and it's why doors sometimes "forget" the host after a manual migration.

What about the Dimensional Pal Storage (global palbox)?

The <uid>_dps.sav sidecar is renamed with the character and every ownership reference inside is rebound.

Xbox / Game Pass?

Accepted as input, but honestly: it usually does not work yet. You can pick the wgs folder and the converter will try to reassemble the world from Microsoft's container format locally, and it costs you nothing to try because your original is never touched. On our current error logs most Game Pass folders fail while decompressing, which is our bug and is being fixed. The reliable route today is to load the world once in the Steam copy of Palworld and convert the folder the game writes, or to unpack the container with PalworldSaveTools first - both are spelled out above. (PS5 saves are not accessible at all - Sony provides no way to read them.)

Something acts odd after migrating - a pal stands around confused.

Drop it and pick it back up - that re-registers its container slot. If the report showed a "data block could not be fully parsed" warning, that block was deliberately left untouched rather than risk corruption; the same drop-and-pickup fixes it.

"not a compressed palworld save, found b'plm' instead of b'plz'"

Your save is fine. That message comes from a tool that only understands the older compression. Every Palworld .sav carries a three-byte marker: PlZ for the zlib era, PlM for the Oodle compression used from 0.6 onward including 1.0, and CNK for the Xbox container, which repeats the real header a few bytes further in. A tool written before Oodle existed reads PlM where it expected PlZ and calls the file corrupt or invalid, which it is not.

This converter reads all three, decoding Oodle in the browser, so the file that failed elsewhere opens here with no conversion step. It writes PlZ back out on purpose: the game loads both eras and rewrites its own compression on the next save, so zlib output is the safest thing to hand back. If your save genuinely is damaged rather than just newer, the corrupted save checker will say so without changing a byte.

Python tools failing with "Exception: Unknown type: ByteProperty"?

That exception (often on .SaveParameter.Level) is the signature of a pre-1.0 palworld-save-tools parsing a 1.0 save - usually the pip-installed release, which predates the 1.0 format. Command-line migration scripts built on it hit this until they vendor the updated library from source. This converter parses 1.0 saves natively in your browser - PlM/Oodle compression, the new 1.0 fields - so there's no library to update and no Python environment to fix.

Is this the same as the "palworld host save fix" script?

Same problem, different tool. The classic palworld-host-save-fix scripts rewrite the host's player ID with a local Python install, and most of them ask you to join the new server once so a fresh player file exists to overwrite. This converter derives the server-side UID directly from the Steam ID, so there is no join-first step, nothing to install, and the whole rewrite happens in your browser. It also reads Palworld 1.0's Oodle saves, which those scripts predate - and it can rebind any player, not just the host.

Does this configure the server too?

No - this page is about the save. For settings, build a clean PalWorldSettings.ini with the Settings Generator or upgrade an old one with the 1.0 Config Migration Doctor.

Where can I plan breeding for the character I just moved?

Once your character is on the dedicated server, the Palworld 1.0 breeding calculator works out the parent combos, child IVs and egg-hatch times for the exact Pal you want next - updated for the 1.0 breeding rebalance.

This tool: v1.39 · updated 16 Aug 2026