Save structure reference
Palworld save format: PlZ, PlM, CNK and GVAS explained.
A `.sav` extension does not describe one format. Palworld save files can contain an outer platform container, a compression layer, Unreal GVAS data, and Palworld-specific RawData with version-dependent structures.
Open a save to see its world summary
We will identify the files, version clues, completeness, and tasks available for this exact input.
Compatible PlZ Beta worlds can expose named players and Pals; unsupported formats receive diagnostic evidence.Read the layers in order
A common Steam or server file begins with declared sizes and a container marker such as PlZ or PlM. After decompression, the data begins with the Unreal `GVAS` signature. Palworld stores additional custom RawData inside that structure.
Each layer answers a different question: the outer marker tells the tool how to find the payload, compression tells it how to decompress, GVAS identifies the Unreal save layer, and RawData determines whether the Palworld-specific records can be parsed and rewritten.
- 01
Identify the outer wrapper
Read the file role and declared sizes before interpreting the bytes at the compression marker.
- 02
Detect the compression path
Treat PlZ as zlib and PlM as Oodle; do not change the marker or rename the file to force a different decoder.
- 03
Confirm the inner GVAS
After decompression, verify the GVAS header and that the parser consumes the expected structured layer.
- 04
Inspect Palworld RawData
Check the version-specific records and unknown regions that generic Unreal tools may not understand.
- 05
Require round-trip evidence
Only consider a write safe after unchanged and changed parses, non-target preservation, and a game-load test pass.
| Layer | Role | What it does not prove |
|---|---|---|
| PlZ | zlib-compressed outer container | That all Palworld RawData is writable |
| PlM | Oodle-compressed outer container | That a generic parser can rebuild the save |
| CNK | Game Pass-related outer wrapper | That player identities can be converted |
| GVAS | Unreal SaveGame structured layer | That unknown nested properties are preserved |
| RawData | Palworld-specific records | That an export will load without round-trip evidence |
PlZ and CNK
PlZ uses zlib compression flags and is the easier container to open with permissive browser libraries. Game Pass can add a CNK-style outer wrapper before the inner Palworld container. Opening those layers still does not solve identity conversion or RawData writing.
PlM and Oodle
PlM uses Oodle compression, and Palworld has written it since 0.6. The only open Kraken decoders are GPL-3.0: usable commercially while their source and copyleft obligations are met, which for a static site that ships the WASM to every visitor means publishing the source of what ships with it. Pal Save Editor does exactly that, so an Oodle save opens here; the edited copy is written back with zlib, which the game also loads.
Why round-trip is the minimum write test
A parser that can display JSON may still fail to serialize nested map types or preserve unknown regions. Before editing, an unchanged parse and rebuild should reproduce the same decompressed bytes or a documented equivalent that the current game loads.
Task checklist
- 01Identify the file role and outer container marker.
- 02Verify declared and actual sizes.
- 03Use the correct PlZ or PlM decompressor.
- 04Confirm the inner GVAS layer is fully consumed.
- 05Parse version-specific RawData with limits.
- 06Prove unchanged and changed round trips before writing.
Questions people ask before touching the save
Is every Level.sav a PlZ file?
No. Saves from 0.6 onwards use PlM/Oodle, which this editor decompresses locally. Game Pass can also add a CNK outer wrapper; this editor can record that format evidence but does not expose CNK writes.
Can I edit GVAS JSON and serialize it back?
Only if the parser understands the Palworld custom data and can prove a stable rebuild. Generic GVAS support alone is not enough.
What does PlM instead of PlZ mean?
The file uses the Oodle compression path used by newer Palworld saves. Renaming the marker does not recompress the payload; use a tool that explicitly supports PlM or keep the input read-only.
Does GVAS mean the entire save is understood?
No. GVAS identifies the Unreal layer. Palworld-specific RawData can still contain versioned records and unknown bytes that a generic GVAS reader cannot safely rewrite.