RPG Maker Decompiler

RPG Maker Decompiler Online

Ruby source out of XP, VX and VX Ace archives — and MV and MZ assets decrypted.

.rgssad .rgss2a .rgss3a .rpgmvp .rpgmvo .png_ .ogg_ .apk
Drop your RPG Maker archive, asset, project or APK here
Choose file

⚠ Drag-and-drop upload could not load — an ad blocker is most likely blocking it. Please disable your ad blocker and reload the page to upload a file.

How It Works

1

Identify

The file's header decides which generation it is, so a renamed archive or a mislabelled asset still works.

2

Unpack

An archive's obfuscation is undone and its whole tree extracted. A project or APK is searched for its encryption key.

3

Recover

Ruby scripts are uncompressed into one .rb each; MV and MZ media is restored to real .png and .ogg files.

Two Engines, Two Different Jobs

"RPG Maker" covers two generations that have almost nothing in common once you open the files, so this page does two quite different things depending on what you upload.

XP, VX and VX Ace are Ruby, and recovering them is the real prize. The engine keeps everything you typed into its script editor inside Data/Scripts.rxdata, Scripts.rvdata or Scripts.rvdata2, serialised with Ruby's Marshal and compressed with zlib. Nothing was ever compiled, so what comes back is the original file — comments, blank lines, indentation and all. This is source recovery, not decompilation, and the difference is visible the moment you open the result.

MV and MZ are JavaScript, and there is nothing to decompile at all: the engine and every plugin ship as readable .js. What those versions do instead is obfuscate the media, and that is what gets undone here.

What to Upload

The Encryption Key, and Why You Usually Do Not Need It

MV and MZ "encryption" prepends a 16-byte header and XORs only the first 16 bytes of the real file against a key. Everything past that is the untouched original. The key sits in cleartext in the game's own www/data/System.json under encryptionKey, so uploading a project or an APK finds it automatically.

A single asset with no project around it looks like a dead end, and for images it is not. Every PNG begins with the same 16 bytes — the 8-byte signature, then the length and type of the IHDR chunk — and those are precisely the bytes the key was applied to. The key is therefore not guessed, it is read back out of the file. One image from a game is enough to decrypt that game's audio too.

Audio has no fixed prefix of its own, so a lone .rpgmvo with an unknown key falls back to the empty-password default and, failing that, says so rather than writing a corrupt file. A decrypted file is only kept when it really carries the signature its name promises.

What You Get Back

From an XP, VX or VX Ace archive:

From an MV or MZ project or APK:

Limits

Frequently Asked Questions

Why is there no version 2 of the archive format?

There never was one. An RPG Maker VX archive is named Game.rgss2a but declares version 1 in its header and uses XP's obfuscation scheme unchanged. Only VX Ace, at version 3, is genuinely different.

My scripts came back with Japanese names. Is that right?

Yes. The stock VX Ace project ships section headers like ▼ 素材 in its script list, and those names are kept.

Some of the .rb files are empty.

Those are the separator rows in the script editor: a name and no code. A stock project has around fifteen of them, and they are kept so the numbering matches the list you would see in the editor.

Is this the same as a Ren'Py game?

Different engine, similar situation. Ren'Py compiles .rpy scripts to .rpyc and packs assets into .rpa archives; both are handled on the Python and Ren'Py decompiler page.

Do I need the game installed?

No. Nothing from the uploaded file is executed at any point — the archive is read as bytes and the assets are decrypted arithmetically.

What about RPG Maker 2000, 2003 or Unite?

2000 and 2003 predate the RGSSAD format and store their events in .lmu and .ldb files, which are not handled here. Unite is a Unity project — use the Unity decompiler for those.