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.

PAL SAVE EDITOR / DIAGNOSTICWorld overview

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.
Open this task Select files inside the App so the local session is preserved.
PlZZlib containerMagic appears after declared-size fields
PlMOodle containerWhat the game has written since 0.6; opened here with a GPL-3.0 decoder
GVASUnreal SaveGameThe decompressed structured layer
01

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.

  1. 01

    Identify the outer wrapper

    Read the file role and declared sizes before interpreting the bytes at the compression marker.

  2. 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.

  3. 03

    Confirm the inner GVAS

    After decompression, verify the GVAS header and that the parser consumes the expected structured layer.

  4. 04

    Inspect Palworld RawData

    Check the version-specific records and unknown regions that generic Unreal tools may not understand.

  5. 05

    Require round-trip evidence

    Only consider a write safe after unchanged and changed parses, non-target preservation, and a game-load test pass.

Format layer and what it does not prove
LayerRoleWhat it does not prove
PlZzlib-compressed outer containerThat all Palworld RawData is writable
PlMOodle-compressed outer containerThat a generic parser can rebuild the save
CNKGame Pass-related outer wrapperThat player identities can be converted
GVASUnreal SaveGame structured layerThat unknown nested properties are preserved
RawDataPalworld-specific recordsThat an export will load without round-trip evidence
02

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.

03

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.

04

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.

SAFE

Task checklist

  1. 01Identify the file role and outer container marker.
  2. 02Verify declared and actual sizes.
  3. 03Use the correct PlZ or PlM decompressor.
  4. 04Confirm the inner GVAS layer is fully consumed.
  5. 05Parse version-specific RawData with limits.
  6. 06Prove unchanged and changed round trips before writing.
FAQ

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.