# How to Fix Player Character Saves When Migrating to a Palworld Dedicated Server (/docs/palworld/character-save-fix)



import { Step, Steps } from 'fumadocs-ui/components/steps';

If you've migrated a co-op (Steam-hosted) Palworld world to a dedicated server, you've probably noticed that your **bases and Pals are there but your character is gone**. This isn't corruption — it's how Palworld links characters to Steam IDs. This page explains why it happens and how to fix it with the community tool `palworld-host-save-fix`.

Why This Happens [#why-this-happens]

In Palworld:

| Save Type            | Player ID                                                       | Result on Migration             |
| -------------------- | --------------------------------------------------------------- | ------------------------------- |
| **Co-op / hosted**   | Player's Steam ID (e.g. `765611...`)                            | Character file: `<SteamID>.sav` |
| **Dedicated server** | Server-generated GUID (e.g. `00000000000000000000000000000001`) | Character file: `<GUID>.sav`    |

When you copy a co-op save into a dedicated server:

* ✅ **World, bases, structures, Pals** transfer fine — they're keyed to the world, not the player.
* ❌ **Player characters** don't load — the dedicated server is looking for `<GUID>.sav` files but yours are still named `<SteamID>.sav`.

To fix it you have to **rename the player save files and rewrite their internal GUID** to match what the dedicated server expects. That's exactly what `palworld-host-save-fix` does.

The Fix Tool [#the-fix-tool]

[**xNul/palworld-host-save-fix**](https://github.com/xNul/palworld-host-save-fix) is a community Python script that:

1. Reads your old `<SteamID>.sav` player file
2. Computes the dedicated server's expected GUID from your Steam ID
3. Rewrites the file's internal references and renames it
4. Patches `Level.sav` so the world recognizes the new player GUID

It's the de-facto standard fix — thousands of players have used it.

Step-by-Step Fix [#step-by-step-fix]

Prerequisites [#prerequisites]

* Python 3.9 or newer installed locally (the tool runs on your computer, not the server)
* Your **Steam ID 64** (find it at [steamid.io](https://steamid.io) by pasting your Steam profile URL)
* A backup of your save folder — see [Backup & Restore](/docs/palworld/backup-restore)

Procedure [#procedure]

<Steps>
  <Step>
    Stop the dedicated server and back up [#stop-the-dedicated-server-and-back-up]

    In the [XGamingServer Panel](https://panel.xgamingserver.com), stop your Palworld server. Create a panel backup so you can roll back if anything goes wrong.
  </Step>

  <Step>
    Download the tool [#download-the-tool]

    Clone or download the script from GitHub:

    ```bash
    git clone https://github.com/xNul/palworld-host-save-fix.git
    cd palworld-host-save-fix
    ```
  </Step>

  <Step>
    Download your save folder [#download-your-save-folder]

    In **Files**, navigate to `Pal/Saved/SaveGames/0/`. Right-click the GUID folder inside (your world) → **Compress** → **Download**. Extract the zip on your local machine.
  </Step>

  <Step>
    Run the fix script [#run-the-fix-script]

    The script signature is:

    ```bash
    python fix.py <save-folder> <old-steam-id> <new-guid>
    ```

    Where:

    * `<save-folder>` is the path to the extracted save folder
    * `<old-steam-id>` is your Steam ID 64 (the file in `Players/` named like `<SteamID>00000000000000000000000000000001.sav`)
    * `<new-guid>` is the dedicated server's expected player GUID — typically `00000000000000000000000000000001` for the first player

    Example:

    ```bash
    python fix.py ./my-save 76561198012345678 00000000000000000000000000000001
    ```

    The script renames your player file and patches `Level.sav` so the dedicated server links your old character to your new GUID.
  </Step>

  <Step>
    Re-upload the patched save [#re-upload-the-patched-save]

    In the panel **Files**, delete the existing `Pal/Saved/SaveGames/0/<GUID>/` contents and upload the patched save folder back into the same location.
  </Step>

  <Step>
    Start the server and join [#start-the-server-and-join]

    Launch the server from **Console**. Connect from Palworld — you should see your old character with all your levels, gear, and base ownership intact.
  </Step>
</Steps>

Common Issues [#common-issues]

| Problem                                      | Fix                                                                                                                                       |
| -------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| **Script errors on `Level.sav`**             | The save format may have changed in a recent Palworld update. Check the GitHub issues for the latest compatibility note.                  |
| **Character loads but bases say "no owner"** | You ran the script with the wrong old Steam ID. Re-extract from backup and try again with the correct ID.                                 |
| **Multiple players need fixing**             | Run the script once per player, each with their own Steam ID and a unique destination GUID (`...0001`, `...0002`, etc.).                  |
| **"File not found"**                         | Double-check the path to your `Players/` folder. The save folder must contain `Level.sav` at the root and player files inside `Players/`. |

Why This Isn't Built Into the Game [#why-this-isnt-built-into-the-game]

Pocket Pair has acknowledged the issue but hasn't shipped a built-in migration tool. The community script is the only working option. If/when an official fix lands, this page will be updated.

Related Guides [#related-guides]

* [Backup & Restore](/docs/palworld/backup-restore)
* [World Saves](/docs/palworld/world-saves)
* [Fix Common Issues](/docs/palworld/fix-common-issues)
* [Server Settings](/docs/palworld/server-settings)
