What is the RPA file format?
The .rpa file is a Ren'Py Archive - a binary container format used by the Ren'Py visual-novel engine to bundle a game's compiled scripts and assets into a single distributable package. Built Ren'Py games typically ship with one or more .rpa files (commonly named archive.rpa, images.rpa, or scripts.rpa) inside the game/ folder.
The format opens with an ASCII header line declaring the version - either RPA-2.0 or the current RPA-3.0 - followed by a hex offset to the file index and, in RPA-3.0, a hex XOR-obfuscation key. The index is stored as a zlib-compressed, pickled Python dictionary that maps internal paths to offset/length pairs within the archive. RPA-3.0 lightly obfuscates those offsets with the key from the header, but this is not real encryption and is trivially reversible.
Contained files - compiled .rpyc scripts, images, audio, and video - are stored raw without re-compression, since each asset type is typically already compressed. The archive replaces the human-readable .rpy source scripts, which are not included in release builds.
.rpa files are not standard ZIP or RAR archives and cannot be opened by general-purpose tools such as 7-Zip or WinRAR. Extraction requires a Ren'Py-aware utility such as rpatool or UnRen.
Security & safety
RISK: MEDIUMThe archive container itself is inert data, but a Ren'Py game packed in a .rpa contains compiled scripts (.rpyc) that are executable logic for the Ren'Py engine and can include full Python - so RUNNING an untrusted Ren'Py game (or installing a mod whose .rpa you didn't inspect) can execute arbitrary code on your machine. Get games and mods from reputable sources, and if you extract a .rpa to mod it, review any decompiled scripts before running. The "obfuscation" in RPA-3.0 is not encryption and offers no security; never rely on it to protect secrets. Extracting an archive is safe; running its code is the part to be careful with.
Format details
in a nutshell- RIB iTWO Project Archive - Construction/BIM software RIB iTWO saves project archives as .rpa - opened only with RIB iTWO; a small minority of .rpa files (~9%) versus the dominant Ren'Py meaning.
- RoboHelp / generic 'project archive' - A few legacy tools have used .rpa for unrelated packaged-project data; rare today.
Programs that open RPA files
Technical details
deep spec| File signature (magic bytes) | ASCII header starting with `RPA-3.0 ` (hex `52 50 41 2D 33 2E 30 20`) at offset 0; `RPA-2.0 ` for the legacy variant |
| Header structure | Single ASCII text line containing: version tag, hex offset to the index, and (RPA-3.0 only) a hex XOR obfuscation key, terminated by a newline character |
| Index encoding | zlib-compressed Python `pickle` dictionary mapping internal file paths to (offset, length, prefix) tuples |
| Index obfuscation | RPA-3.0 XOR-obfuscates each entry's stored offset and length with the key declared in the header line; trivially reversible, not true encryption |
| Contained file storage | Files are concatenated raw after the header with no additional compression applied; assets (PNG, OGG, WEBM, RPYC) are already compressed at the source |
| Supported asset types | Compiled scripts (`.rpyc`, `.rpymc`), images (PNG, JPEG, WEBP), audio (OGG, MP3), video (WEBM), and arbitrary game data files |
| Index entry limit | No fixed limit; the index is a pickled Python `dict` whose size is bounded only by available memory |
| Integrity checking | No per-file checksum is stored; format relies on the inherent integrity of the contained asset files |
| Version declaration | Format version is self-declared in the plaintext header line (`RPA-2.0` or `RPA-3.0`); tools detect the variant at parse time without a separate manifest |
| Typical archive size | A few MB to several GB depending on the volume of images, audio, and video bundled in the game |
| Target platforms | Windows, macOS, Linux, Android, iOS - all platforms officially supported by the Ren'Py engine |
| Typical filenames | `archive.rpa`, `images.rpa`, `scripts.rpa` - found inside the `game/` directory of a built Ren'Py title |
| Container compatibility | Not a ZIP, TAR, or RAR variant; general-purpose archivers (7-Zip, WinRAR) cannot open `.rpa` files |
| Developer / maintainer | Tom Rothamel and the Ren'Py open-source project; format evolved with the engine (first released 2004) |
| Released | Ren'Py engine archive format; RPA-3.0 is the long-standing version used by modern Ren'Py |
| Latest version | RPA-3.0 (current); legacy RPA-2.0 exists; format header line declares the version |
| Open standard | Yes · royalty-free |
| Specification | www.renpy.org |
RPA conversions
Community Q&A
asked by usersNo questions yet - be the first to ask about RPA files.