PCK, EXE, APK or a bare .gdc — back to a project you can open, with real GDScript source.
Drop the .pck, the game .exe, the APK or a single .gdc. The format is read from the file itself, not its name.
The pack is unpacked, imported resources are converted back to their source formats, and every script is decompiled.
Read the project in your browser, or download the tree as a ZIP and open it in the Godot editor.
Most of what this site does is lossy. C# and Java decompile well because their bytecode keeps a type system; C++ compiled to native code barely decompiles at all; a Unity IL2CPP build gives you declarations and nothing inside the methods. Godot is the outlier in the other direction.
GDScript is never compiled to machine code. Exporting a project turns each .gd file into a .gdc, which is a token stream: the same script with each keyword, operator and identifier replaced by a number, plus tables of the constants and names it used. Nothing is inlined, nothing is optimised away, nothing is renamed. Reversing it is close to running the tokenizer backwards, and what comes out is source — variable names, type hints, signal declarations, enum members, exported properties and the original control flow, all intact.
The one thing that genuinely does not survive is anything the tokenizer threw away: comments, blank lines and the exact spacing. Everything else you get back is what the developer wrote.
game.pck — the package archive holding the whole game. This is the best thing to upload and the most common file to have.game.exe — works when the developer ticked the option to embed the pack. Otherwise the executable is just the engine; see below..apk — recovered alongside the usual Java and smali output..gdc — one compiled script, decompiled on its own to a .gd.This trips up almost everyone. Godot's Embed PCK export setting is off by default, so the typical shipped game is a folder with game.exe and game.pck side by side. The executable is an unmodified copy of Godot's export template — the same bytes for every game built with that engine version — and contains no part of the game whatsoever.
If you upload one of those, you will get a note saying exactly that. Upload the .pck that sits next to it instead. When the pack is embedded, it is appended to the end of the file with its size and a GDPC marker in the last twelve bytes, which is how it is detected here regardless of what the file is called.
project/ — the recovered project: project.godot, scenes as .tscn, resources as .tres, imported assets converted back to PNG, OGG, TTF and the rest, plugin configuration recreated, and every script as .gd. This is a directory the Godot editor can open.scripts/ — a flat copy of just the decompiled .gd files, keeping their folder structure. A mid-sized game recovers to a couple of thousand files, most of them art; this is the shortcut to the code.gdre.log and project/gdre_export.log — the recovery report: which engine version built the game, what converted cleanly, and anything that did not.godot/ — on an APK, the two folders above live here, next to the sources/, resources/ and smali/ that the APK decompiler produces for the Android wrapper.The recovery report names the editor version to open the project with. Use it: a project recovered from a 3.5 game will not load cleanly in Godot 4.
Decompiling a Godot Android game with a plain APK tool gets you GodotApp, GodotEditText, a handful of plugin shims and whatever ad SDK was linked in. That is the launcher, not the game.
The game is unpacked loose under assets/ — .gdc scripts, .scn scenes and .ctex textures as individual entries in the APK's zip — along with assets/project.binary, the compiled project settings. Android tooling has no reason to look there, so it never does. Upload the APK here and that half is recovered into godot/ while the Java side is decompiled as normal.
Godot 2.x, 3.x and 4.x are all supported, including the pack format introduced in recent 4.x releases that moved the archive's file index to the end of the file.
One quirk is worth knowing. Godot 4.0 through 4.2 shipped GDScript as plain text — the exported pack contains readable .gd files and no bytecode at all. Binary tokenization returned as an export option in 4.3, and games built with 4.3 and later are back to shipping .gdc. Either way you end up with source; in the first case there was never anything to decompile.
.dll to the DLL decompiler.Recovering your own game after losing the project folder — the most common reason by far, and the case Godot's design makes genuinely possible. Beyond that: studying how a mechanic was implemented, auditing what a game does with your data, translation and modding work, and checking whether a shipped build leaks keys in its string constants. Decompiling software you do not own may be restricted by its licence and by local law; that judgement is yours to make before you upload.
Yes. GDScript is tokenized, not compiled to machine code, so names, types, constants and structure all survive. Only comments and blank lines are lost.
Godot's package archive — one file holding the whole game. Every exported game has one, either beside the executable or appended to it.
Embedding the pack is off by default. If there is a .pck next to the .exe, upload that one — the executable is only the engine.
Yes. Upload the APK and the recovered project appears in a godot/ folder next to the normal Java output.
2.x, 3.x and 4.x, current pack formats included. Projects built with Godot 4.0–4.2 ship their scripts as plain text already.
No. The encryption key is chosen at export time and is not stored in the archive.
Yes — download the ZIP and open project/. Use the editor version named in the recovery report; a 3.x project will not load cleanly in Godot 4.
No. The file is read as an archive and parsed. Nothing from it is executed, and the work happens in an isolated, time-limited worker process.