# Palworld Pal Editor rewrites a game save from a web UI or a desktop app

> Palworld Pal Editor is a Python tool for editing Palworld save files, and the interesting part is how many ways it offers to run: a desktop GUI, a WebUI, a CLI and a Docker container. It reads the Level.sav file from the Steam save folder and can edit Pals, containers, base camps, technology, inventories and player data, with cheat mode unlocking options the game normally withholds.

**KrisCris/Palworld-Pal-Editor** — Palworld Pal Editor, the tool for Adding, Deleting, and Modifying Pals (and unlocking Viewing Cage for multiplayer) for Palworld Game Save, supports running on Docker, GUI, WebUI, and Cli. NexusMods: https://www.nexusmods.com/palworld/mods/995

- Repository: https://github.com/KrisCris/Palworld-Pal-Editor
- Website: https://kriscris.github.io/Palworld-Pal-Editor/
- Stars: 581 · Forks: 55
- Language: Python
- License: GPL-3.0
- Published: 2026-10-22 · Updated: 2026-10-22 · Language: en
- Canonical page: https://hysenlabs.com/projects/kriscris-palworld-pal-editor

## It reads Level.sav, and that determines everything

The overview explains the scope and the file it works on.

Palworld Pal Editor is a feature-rich save editor that supports player, Pal, Pal storage, base-camp research, Technology, inventory and other save modifications, and you can run it as a desktop GUI, WebUI, CLI or Docker container.

The file paths are given precisely. The Steam save root is `%LOCALAPPDATA%\Pal\Saved\SaveGames`, the save folder is `%LOCALAPPDATA%\Pal\Saved\SaveGames\<Steam ID>\<Save ID>`, and you select the folder that contains `Level.sav`.

So the tool operates on the save folder as a unit, which is why the quick start tells you to back up the save folder you want to edit rather than a single file. The editor creates backups itself, but the caution notice asks you to keep your own copy as well, and the general guidance is to always back up your saves first.

The format limitation is stated in the same note. The editor currently supports Steam-format saves, and you are told to use PalworldSaveTools to convert between Xbox Game Pass and Steam saves, with the warning that conversion compatibility may lag behind game updates.

That lag is the interesting constraint. A save format that changes with game updates, and a converter that may not keep up, means the tool has a maintenance dependency on the game rather than only on its own code.

The localisation is extensive, with full support for Deutsch, English, Español, Español (México), Français, Bahasa Indonesia, Italiano, 日本語, 한국어, Polski, Português (Brasil), Русский, ไทย, Türkçe, Tiếng Việt, 简体中文 and 繁體中文. That is eighteen languages, which is a large amount of work for a game tool and says something about the audience.

The project is Python, GPL-3.0 licensed, with the default branch develop, the last push on 2026-09-16 and releases v1.0.1 from 2026-08-04, v1.0.0 from 2026-08-02 and 0.14.1 from 2025-12-23.

## Four ways to run it, and they are not equivalent

The download and installation sections describe a tool that has been packaged four different ways, and the reasons behind each are different.

For most users, the pre-built desktop application is recommended, and the reason given is that it does not require a separate Python installation. That is the whole selling point of the desktop build, and it is why the repository carries an appimage.spec, a build_appimage.sh, a cx_freeze_build.py and a build_executable.ps1.

The cx_freeze route is interesting. Freezing a Python application into a single executable is what lets a Python project ship something that does not need a Python runtime on the target machine, and the presence of both a Linux AppImage spec and Windows and shell build scripts shows they did it for more than one platform.

The Docker route is a shell script, build_and_run_docker.sh, and there is a docker/ directory at the repository root. A Docker image for a save editor makes sense in one specific situation, which is running it against a save that lives on a mounted volume or a network share, or on a headless machine.

The WebUI route uses Flask. The dependency list has Flask at 3.1.2 with waitress as the production WSGI server, plus Flask-JWT-Extended at 4.7.1 for authentication, and pywebview at 4.4.1 for a native window around a web view. The pywebview dependency is the bridge between the two: the same Flask application can be served in a browser or wrapped in a desktop window.

The CLI is the fourth option, and the repository has a section for command-line options and a scripts/ directory.

So the choice is about deployment rather than capability. The same editor underneath, with a different packaging, and the WebUI adds one thing the others do not, which is a network surface, which is why the JWT dependency is there.

The distribution channels are three as well. GitHub Releases for official releases and changelogs, Nexus Mods, and a nightly release tagged as automatically updated development builds.

## The Pal editing list shows the depth of the model

The features section is organised by area, and the Pals list is the longest one, so it is the best place to see how much of the game's internal state the tool understands.

You can edit Pal species, toggle Alpha Pal and Lucky Pal, edit the nickname, gender, skin and priority, edit level, Trust level, Potential, Awakening, soul upgrades and condensation rank, edit work suitability, edit equipped active skills, learned active skills and passive skills listed separately as Pal, regular and Partner skills, and heal or revive Pals, or heal all of them at once.

Two entries are worth pulling out. The first is the variants list: it supports modifying forms that cannot be obtained normally in the game, naming Tower, Raid, Predator, Oil Rig and Boss Rush variants. Those are the restricted forms a player cannot normally unlock, and the editor can set them directly.

The second is the entry that says it maximises Pal progression within legal limits. The qualifier is doing real work there. Cheat mode also lets you enable normally unavailable options and show skill and Pal internal names, and there is a separate entry to view and toggle the Global Pal Storage import status, which is the DNA import mechanism.

The general section covers the surrounding list features: list players and their Pals, search, sort and filter Pals, and show Pals outside their normal containers, which is how you find one that has ended up somewhere the game would not normally put it.

The level of detail is what separates this from a memory editor with a GUI. The tool knows what a Trust level is and what a condensation rank is and what the difference is between a Pal skill, a regular skill and a Partner skill. That is domain knowledge encoded in the save format, and it is the expensive part of any game save editor.

## Containers and storage are the model of the world

The Pal storage and transfers section is short and it describes a consistent abstraction, which is the sign of a well-designed save editor.

You can browse every container a save has: party, Palbox, base camp, viewing cage, Dimensional Pal Storage and Global Pal Storage. Then you can move a Pal to any container of any player, base camp or storage, and edit and clone Pals that live in Dimensional Pal Storage or Global Pal Storage.

The last two entries in the list are the ones that show the author has actually used the thing. Resolve a Global Pal Storage slot that is already taken, by overwriting it or by jumping to the Pal holding it. And create a Pal directly in a chosen destination.

Both of those are workarounds for a real game mechanic. Global Pal Storage has a slot structure that a Pal occupies, and if you edit something into a slot that is taken the save becomes inconsistent. The editor detects the conflict and offers two ways out rather than corrupting the file, and the second option, jumping to the Pal holding it, is the one that saves you an afternoon.

The same abstraction is applied to base camps and guild research, and there is a separate templates and bulk operations section, which is the feature that turns an editor into a tool for a collection. Editing one Pal is a chore. Editing forty Pals to the same specification is a job, and a template system is what makes it a batch operation.

That structure also explains why the tool has a CLI and a Docker image at all. A player who wants to apply a template to a hundred Pals across a large save is doing a batch job, and a batch job wants a script.

The project description also mentions unlocking the Viewing Cage for multiplayer, which is the container list again, since the viewing cage is one of the containers a save tracks and gating it is a matter of a flag inside it.

## The packaging tells you how the pieces fit

The package metadata is where the architecture is visible, and two entries stand out.

The first is the save library, which is pinned to a specific commit rather than a version range:

```
palworld-save-tools @ git+https://github.com/KrisCris/palworld-save-tools.git@82dc6ad06e6162b29c0ef7d321fed2a73609a4d6
```

That is a commit hash, not a tag or a branch. The consequence is that the editor's save parsing is tied to one exact version of the library that understands the save format, and it will not silently pick up a breaking change in the format handling. For a tool that parses a proprietary binary format that changes with game updates, that is the right kind of pinning.

The second entry is the exclusion in the package configuration. The packages.find directive has a where of src and excludes `palworld_pal_editor.assets.tools*`, which means the tools bundled inside the package's assets directory are deliberately kept out of the installed distribution.

The rest of the dependency list is a normal Python application stack. Flask for the web UI, pyinstaller for the executable builds, waitress as the server, requests for network calls, beautifulsoup4, Pillow for images and aiohttp for asynchronous work.

The build tooling is spread across several files at the root rather than being in one Makefile, which fits a project with four packaging targets. There is build_appimage.sh, build_executable.ps1, build_executable.sh, setup_and_run.ps1, setup_and_run.sh, build_and_run_docker.sh, and pypi_publish.sh and pypi_publish.ps1.

There is also an md_convert.py at the root, which is presumably for converting documentation, and a keep_this_project_alive.md file, and a .github/assets directory holding the screenshots used in the documentation.

The frontend/ directory at the root tells you the WebUI has a separate asset pipeline, and the tests/ directory is there. The docs are published at kriscris.github.io/Palworld-Pal-Editor, and the Chinese README is at README.cn.md.

## Conclusion

Adopt Palworld Pal Editor if you want to change your Palworld save without hand-editing bytes, since it reads Level.sav and exposes Pals, containers and research as editable objects. Skip it if you are on Xbox Game Pass rather than Steam, since the editor supports Steam-format saves only and you would need a separate conversion tool, and if you need to play online, since modifying a save is a local operation. Verify first that you have a backup of your save folder, that your save is in the Steam format, and how you want to run the tool, since the desktop build, the Docker container and the WebUI have different deployment requirements.

## FAQ

### How do I install and run Palworld Pal Editor?

For most users the pre-built desktop application is recommended, because it does not require a separate Python installation. You can also download from GitHub Releases or Nexus Mods, use the nightly release for automatically updated development builds, run it as a WebUI or a Docker container with the provided scripts, or use the command-line options. Then back up your save folder, start the application, choose the folder containing `Level.sav` and select Load Save.

### Which save formats does Palworld Pal Editor support?

The editor currently supports Steam-format saves. The Steam save root is `%LOCALAPPDATA%\Pal\Saved\SaveGames` and the save folder is `%LOCALAPPDATA%\Pal\Saved\SaveGames\<Steam ID>\<Save ID>`, and you select the folder containing `Level.sav`. To use an Xbox Game Pass save you need PalworldSaveTools to convert it to Steam format, and the documentation warns that conversion compatibility may lag behind game updates.

### What can I actually change in a Palworld save with this editor?

For Pals you can edit species, nickname, gender, skin, priority, level, Trust level, Potential, Awakening, soul upgrades, condensation rank, work suitability, active and passive skills, heal or revive Pals, and delete them, and you can set the Tower, Raid, Predator, Oil Rig and Boss Rush variants that are normally unavailable. More widely the editor covers players, Pal storage and transfers, base camp and guild research, technology, inventories, templates and bulk operations, and it has a cheat mode that enables normally unavailable options.

## Sources

- [KrisCris/Palworld-Pal-Editor on GitHub](https://github.com/KrisCris/Palworld-Pal-Editor)
- [License: GPL-3.0](https://github.com/KrisCris/Palworld-Pal-Editor/blob/develop/LICENSE)
- [Project website](https://kriscris.github.io/Palworld-Pal-Editor/)
- [README](https://github.com/KrisCris/Palworld-Pal-Editor/blob/develop/README.md)
- [Releases](https://github.com/KrisCris/Palworld-Pal-Editor/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/kriscris-palworld-pal-editor
