Freedom251 › Reverse Engineering Tools
uncompyle6

What uncompyle6 is
uncompyle6 is a free, GPL-3.0-licensed tool for developers who need to turn compiled Python bytecode into equivalent Python source. It can run on `.pyc` and `.pyo` files from the command line, and it can also deparse fragments or provide source information near a bytecode offset. The project accepts bytecode from Python 1.0 through 3.8, as well as Dropbox Python 2.5 bytecode and some PyPy bytecode. The `--syntax-verify` option checks the result against the matching Python bytecode version. Fragment deparsing is used in trepan debuggers to display source fragments at runtime and can add detail to stack traces beyond a line number. The tool is listed for Linux, macOS, Windows, and self-hosted use, and PyPI classifies it as operating-system independent. The README points Python 3.7 and 3.8 users toward better support in the related decompile3 project. Control-flow handling remains a major decompilation challenge, and some incorrect results may be detected and reported. It does not handle obfuscated code, Cython, or MicroPython, and cannot directly decompile Py2EXE executables. For Python 3.11 and later, install from PyPI; earlier versions use a file from GitHub Releases.
Who it suits
uncompyle6 suits developers who need to inspect Python bytecode or recover equivalent source from compiled `.pyc` or `.pyo` files. Its fragment deparsing can also help debugger users show source context at runtime.
What it does well
- Translates Python bytecode into equivalent source code.
- Handles bytecode fragments and source information near offsets.
- Includes syntax verification for matching bytecode versions.
- Free and GPL-3.0 licensed.
- Listed for Linux, macOS, Windows, and self-hosted use.
What to know first
- Does not handle obfuscated code, Cython, or MicroPython.
- Cannot directly decompile Py2EXE executables.
- Control-flow handling can lead to erroneous decompilations.
- Python 3.7 and 3.8 support is generally better in decompile3.
Limits
The tool accepts bytecode through Python 3.8, with Python 3.7 and 3.8 support generally better in decompile3. It does not handle obfuscated code, Cython, MicroPython, or direct decompilation of Py2EXE executables; control-flow handling is a major challenge.
Plans
| Plan | Billed and limits | Price |
|---|---|---|
| Open-source software | GPL-3.0 licensed Python bytecode decompiler | Free |
As github.com lists them, read 8 Oct 2026. The maker's own page has the final word.
Getting started
- For Python 3.11 and later, install from PyPI with `pip install uncompyle6`.
- For earlier Python versions, install from a file in the GitHub Releases section.
- Run `uncompyle6` on a compiled `.pyc` or `.pyo` file.
- Use `--syntax-verify` with the matching Python bytecode version to check decompiled syntax.
Verdict
Choose uncompyle6 if you need a free command-line option for translating supported Python bytecode or examining fragments in a debugger. Look elsewhere for obfuscated code, Cython, MicroPython, Py2EXE files, or if Python 3.7 and 3.8 support is central to your work.
Questions
How much does uncompyle6 cost?
The open-source plan is free and is GPL-3.0 licensed.
Which bytecode versions does it accept?
The README says it accepts Python 1.0 through 3.8 bytecode, Dropbox Python 2.5 bytecode, and some PyPy bytecode.
Which operating systems can I use it on?
Linux, macOS, Windows, and self-hosted use are listed. PyPI classifies it as operating-system independent.
Can uncompyle6 decompile code fragments?
Yes. It can deparse fragments and provide source information around a bytecode offset.
What inputs does it not handle?
It does not handle obfuscated code, Cython, or MicroPython, and cannot directly decompile Py2EXE executables.
How do I install it?
For Python 3.11 and later, the README instructs users to install from PyPI with `pip install uncompyle6`. For earlier Python versions, it directs users to a file in GitHub Releases.
Facts from uncompyle6's own pages
- Bytecode versions
- The README says it accepts bytecode from Python 1.0 through 3.8, plus Dropbox Python 2.5 bytecode and some PyPy bytecode. · github.com, 8 Oct 2026
- Command line
- The README shows running `uncompyle6` on compiled Python `.pyc` or `.pyo` files. · github.com, 8 Oct 2026
- Debugger use
- The maintainer says fragment deparsing is used in trepan debuggers to show source fragments at runtime. · github.com, 8 Oct 2026
- Debugging use
- The maker says fragment deparsing can help show stack traces with more detail than a line number and is used in the maker’s trepan debuggers. · github.com, 8 Oct 2026
- Fragment decompilation
- It can deparse code fragments and provide source information around a bytecode offset. · github.com, 8 Oct 2026
- Installation
- For Python 3.11 and later, the README instructs users to install from PyPI with `pip install uncompyle6`. · github.com, 8 Oct 2026
- Intended audience
- PyPI lists developers as the intended audience. · pypi.org, 8 Oct 2026
- Known limitation
- The README identifies control-flow handling as a major decompilation problem and says erroneous decompilations may sometimes be detected and reported. · github.com, 8 Oct 2026
- License
- The repository identifies the project as GPL-3.0 licensed. · github.com, 8 Oct 2026
- Older Python installation
- For Python versions before 3.11, the README directs users to install from a file in the GitHub Releases section. · github.com, 8 Oct 2026
- Operating systems
- PyPI classifies the package as operating-system independent. · pypi.org, 8 Oct 2026
- Purpose
- uncompyle6 translates Python bytecode into equivalent Python source code. · github.com, 8 Oct 2026
- Support
- The maintainer says bug reports may take a while to receive attention and that sponsoring or supporting the project can prioritize issues. · github.com, 8 Oct 2026
- Syntax verification
- The `--syntax-verify` option checks decompiled syntax when used with the matching Python bytecode version. · github.com, 8 Oct 2026
- Unsupported inputs
- The README says it does not handle obfuscated code, Cython, or MicroPython, and cannot directly decompile Py2EXE executables. · github.com, 8 Oct 2026
- Version caveat
- The README says Python 3.7 and 3.8 support is generally better in the related decompile3 project. · github.com, 8 Oct 2026
- What it does
- uncompyle6 translates Python bytecode back into equivalent Python source code. · github.com, 8 Oct 2026
Where uncompyle6 stands on Freedom251
- Reverse Engineering Tools#34 of 73
- Decompiler Software#17 of 24