SaveEditor
Back to Blog
TutorialMarch 30, 2026 · 10 min read

RPG Maker Save Files Explained: MV, MZ, VX Ace & More

A deep dive into RPG Maker save formats across every engine version — from the LCF binary format of 2000/2003 to the Base64 JSON files of MV and MZ.

RPG Maker has been around since the 1990s, and each major version has used a different save file format. If you've ever tried to edit a save from an RPG Maker game, you know the first challenge is figuring out which engine the game was built with. This guide covers every version from RPG Maker 2000 through MZ, explains how each format works, and shows you how SaveEditor handles them all.

Save Formats by RPG Maker Version

RPG Maker 2000 / 2003

.lsdLCF (Lucifer) Binary Format

The oldest RPG Maker engines use the LCF (Lucifer) binary format. Save files use the .lsd extension (LCF Save Data). The format is compact and uses variable-length integers for most fields. Data is organized into chunks identified by numeric IDs. Editing these files requires understanding the chunk structure — each chunk has a type ID, a length prefix, and the data payload. The liblcf open-source library documents this format extensively.

RPG Maker XP

.rxdataRuby Marshal Format

RPG Maker XP was the first version to use Ruby as its scripting language, and saves are serialized using Ruby's Marshal.dump. The .rxdata format stores Ruby objects — including custom classes like Game_Party, Game_Player, and Game_System— in a binary representation. The challenge with this format is that the class structure depends on the game's scripts, so custom scripts can introduce custom save data.

RPG Maker VX

.rvdataRuby Marshal Format

VX continued using Ruby Marshal but with updated class names. Files use the .rvdata extension. The underlying structure is identical to RXDATA — it's still Marshal.dump output — but the default game classes were reorganized. Save files are named Save1.rvdata, Save2.rvdata, etc.

RPG Maker VX Ace

.rvdata2Ruby Marshal Format (updated)

VX Ace uses .rvdata2 — still Ruby Marshal under the hood. The key difference is VX Ace introduced new default classes and reorganized the data hierarchy. Saves contain serialized instances of Game_System, Game_Switches, Game_Variables, Game_SelfSwitches, Game_Actors, Game_Party, Game_Map, and Game_Player. VX Ace is still the most popular "classic" RPG Maker engine, so many games on sites like itch.io use this format.

RPG Maker MV / MZ

.rpgsaveBase64-encoded JSON

MV and MZ switched from Ruby to JavaScript, and the save format followed suit. A .rpgsave file is simply a JSON object that has been serialized with JSON.stringify(), then LZString-compressed, then Base64-encoded. To read one: Base64 decode → LZString decompress → parse JSON. The resulting JSON contains all game data as nested objects. This is by far the easiest RPG Maker format to edit — once decoded, you can read and modify it as plain JSON.

Where Each Version Stores Saves

Save file locations vary by engine version and platform:

2000 / 2003 / XP / VX / VX Ace

Saves are stored in the game's own directory, alongside the executable. Look for files named Save01.lsd, Save1.rxdata, Save1.rvdata, or Save1.rvdata2 in the same folder as Game.exe.

MV / MZ (Desktop / NW.js)

By default, saves go into the game's save/subfolder. Some developers change this to use the system's local storage directory. Check both the game folder and %LocalAppData% on Windows.

MV / MZ (Browser / Web)

Browser-based RPG Maker games store saves in localStorage. These can't be accessed as files directly — you need to export them from the browser's developer console. SaveEditor supports pasting raw save data for browser games.

How SaveEditor Handles Each Format

SaveEditor auto-detects the RPG Maker version from the file extension and internal magic bytes. Here's what happens for each format:

.rpgsave (MV / MZ)

The file is Base64-decoded, LZString-decompressed, and parsed as JSON. SaveEditor displays the game state as an editable tree. When you save, the process reverses: serialize → compress → encode. This is fully lossless.

.rvdata2 / .rvdata / .rxdata

SaveEditor deserializes the Ruby Marshal data into a structured view. Standard game objects (party, actors, system, switches, variables) are presented with labeled fields. Custom scripted objects are shown in a generic tree view with their Ruby class names.

.lsd (2000/2003)

The LCF binary is parsed using the documented chunk structure. SaveEditor maps known chunk IDs to human-readable field names (gold, party members, items, switches, variables). Unknown chunks are preserved and passed through unmodified.

Common Fields to Edit

Regardless of the RPG Maker version, most games share the same core data structures. Here are the fields players most commonly want to edit:

Gold

Stored in Game_Party (Ruby engines) or $gameParty._gold (MV/MZ). Integer value — set to whatever you need.

Items

Items, weapons, and armor are tracked as ID-to-quantity mappings. In MV/MZ: $gameParty._items, _weapons, _armors.

Actor Stats

HP, MP, ATK, DEF, MAT, MDF, AGI, LUK — plus level and experience. In MV/MZ these live in $gameActors._data[id].

Switches & Variables

Game switches (boolean flags) and variables (numeric values) control events, quests, and story progression. Editing these can unlock or skip content.

Caution with switches and variables

Switches and variables are the backbone of RPG Maker event logic. Changing the wrong switch can break quests, lock you out of areas, or trigger unintended events. Unless you know the game's switch/variable map (sometimes documented by the developer), only edit these if you understand the consequences.

How to Identify Which RPG Maker Version a Game Uses

Not sure which engine a game was built with? Here are reliable ways to tell:

Check the save file extension

.lsd = 2000/2003, .rxdata = XP, .rvdata = VX, .rvdata2 = VX Ace, .rpgsave = MV or MZ.

Look at the game folder

MV/MZ games have a www/ or js/ folder with JavaScript files. VX Ace and earlier have an RGSS3*.dll (Ace), RGSS2*.dll (VX), or RGSS1*.dll (XP) file. 2000/2003 games have RPG_RT.exe.

Check package.json (MV/MZ)

MV and MZ games include a package.json in the root folder. The name field often identifies the engine. MZ games typically use a newer NW.js version and may include a js/rmmz_core.js file.

Use SaveEditor's auto-detection

Just upload the save file. SaveEditor reads the extension and file header to automatically detect the RPG Maker version, then applies the correct parser. No guesswork needed.

Best Practices for RPG Maker Save Editing

Always keep the original save

Copy your save file before editing. RPG Maker games are usually single-player with no anti-cheat, so there's no risk of bans — but a corrupted save means lost progress.

Use in-game saves, not autosaves

Some RPG Maker games have autosave plugins that write to a specific slot. Edit a manual save to avoid conflicts with the autosave system.

Don't add items that don't exist

RPG Maker's database defines which item IDs are valid. Adding an item with an ID beyond the database size can crash the game. If you don't know the valid range, stick to items you've already seen in-game.

Test after every edit

Load the game after each change to make sure it works. RPG Maker games are generally forgiving, but custom scripts and plugins can add validation that rejects unexpected values.

Ready to Edit Your RPG Maker Save?

Upload any RPG Maker save file — SaveEditor auto-detects the format and gives you a clean editing interface. No Ruby or JSON knowledge needed.

Open SaveEditor