Skip to main content
Reverse Engineering Module

Python .pyc Decompiler

Decompile a compiled Python .pyc file back to readable source — all versions, powered by pycdc (Decompyle++) running in your browser via WebAssembly. Nothing uploaded.

Why use this tool?

Use the .pyc Decompiler to see exactly how much a compiled Python file gives away. Drop in a .pyc and it reconstructs the original source — names, strings, and logic — using pycdc (Decompyle++) compiled to WebAssembly, so everything runs locally and nothing is uploaded. It's the fastest way to prove to yourself that shipping .pyc is not protection.

Compiled file (.pyc)

Drop a .pyc here, or click to choose

Runs entirely in your browser — nothing is uploaded. Max 8 MB.

Decompiled Source
# Drop a .pyc above — the recovered Python source appears here.

Powered by pycdc (Decompyle++) compiled to WebAssembly — it recovers source for Python 1.x through ~3.12 (best on ≤3.11; very new versions may be partial). Use it to inspect your own compiled Python and see how little a .pyc actually hides — then obfuscate so it can't be read back. See also: why .pyc isn't protection.

About Python .pyc Decompiler

Most Python decompilers are limited: the popular pure-Python tools (uncompyle6, decompyle3) only cover up to Python 3.8–3.9 and won't even run on newer interpreters. This tool instead runs pycdc (Decompyle++), a C++ decompiler that supports Python 1.x through 3.12+, compiled to WebAssembly so it works entirely in your browser.

Drop a .pyc file and you get the recovered .py source back, including variable names and string literals. Where the newest bytecode can't be perfectly rebuilt, pycdc inlines the raw disassembly so nothing is lost. Because .pyc decompiles this easily, the takeaway is simple: to actually protect Python, obfuscate the source first so even the decompiled bytecode is unreadable.

Frequently Asked Questions

It uses pycdc (Decompyle++), which supports Python 1.x through roughly 3.12. Recovery is cleanest on 3.11 and earlier; the very newest bytecode may come back partially, with raw disassembly inlined where full reconstruction isn't possible.