Skip to main content

renpy-capture

Every line of a Ren'Py game, in its scene, in every branch — without playing it.

Tests License: MIT Python 3.9+ Linux | Windows Ren'Py 7.8 | 8.2 | 8.3 | 8.5

English · Русский · Українська · 简体中文 · 日本語 · 한국어 · Español · Français

Sylvie says “Hi there! How was class?” in the game's own dialogue window The same moment in the Russian translation: “Привет! Как тебе урок?”

One moment of The Question, the sample game that ships with Ren'Py, in English and in the Russian translation that comes with it: two frames drawn by the game's own engine. The artwork is released under the MIT license.

See the live example →

renpy-capture runs a Ren'Py game in its own engine on a hidden screen, answers every menu every way, and keeps the picture the player sees at every line. What comes out is a small website: read it in a browser, search it, send it to anyone.

What you get

The page of a capture: each picture of the game with the lines spoken over it, and a menu with the option taken
  • The book of the game. Every line beside the picture the player sees, with the speaker and the line of the script. Search it; link to any line.
  • The tree of choices. Every menu and every option, down to how each path ends; each option opens its moment in the book.
  • The translation beside the original. For a game that already has a translation (game/tl/<language>): every translated line as the game itself draws it, in its own dialogue window, beside the original. Does the text fit, does the font have the letters. renpy-capture shows translations; it does not make them.
  • Proof that nothing was missed. After the capture the game's scripts are read, and every scene no path reached is named, with its label, file and line.

Who it's for

You are It gives you
Translators Every line with its context: who speaks, what is on screen, what came before.
Editors and proofreaders The whole translation as the game shows it, behind one link: nothing to install, no routes to replay.
Authors and testers Every route in one run: see a line that overflows the window or a missing picture, find the branches no player can reach, compare two builds line by line.
Guide and wiki writers The tree of choices with every ending, and a picture for every step.
Language learners A game you love and its translation as a bilingual book, line by line.
Reviewers and archivists Every scene of every branch without playing: before an age rating, for research, to keep a game readable.

Try it

No terminal? Use the window on Windows: a zip, nothing to install.

pipx install renpy-capture
renpy-capture capture ~/Games/SomeGame work/
xdg-open work/export/index.html

One command does the whole job: it fetches the official Ren'Py SDK of the game's version, plays every branch on a hidden screen, looks for scenes no branch reached, and writes the pages. Run it again to go on after an interruption. The Question takes six seconds; a large commercial game of 22,000 lines, about eight minutes.

A translation the game already has in game/tl/russian: capture the original and the translation, both with the game's dialogue window, and open the translation's book, where the original stands beside every line.

renpy-capture capture ~/Games/SomeGame work/ --text
renpy-capture capture ~/Games/SomeGame work/ --text --language russian
xdg-open work/export-text-russian/index.html

No terminal? Use the window (Windows)

Most translators never open a terminal, and they do not have to: renpy-capture has a window, and on Windows it comes as a zip that needs nothing installed (no Python, no pipx).

  1. Open the latest release and download the file called renpy-capture-…-windows-x64.zip under Assets (not Source code).
  2. Right-click the zip, Extract All, open the folder renpy-capture and double-click renpy-capture-gui.exe.
  3. Choose the folder of the game, and press Capture.
The window of renpy-capture after a capture of The Question: the game folder, the work folder, the translation to capture, the Capture button, and under them what was captured and the buttons to open the page and the folder

The window tells in plain words what it is doing (the first time it downloads the engine of the game's version: 150 to 165 MB, once), has a Cancel button that stops everything, and ends with what was captured and two buttons: Open the page (the book of the game, in your browser) and Open the folder. Capture the same game into the same work folder again and it goes on where it stopped. A game with a translation in game/tl offers it in a list, and Show the text box keeps the game's dialogue window in the pictures, to check how the translation fits.

With Python, renpy-capture gui opens the same window on Linux and Windows (Tk is needed: sudo apt install python3-tk on Debian and Ubuntu), and pip install renpy-capture puts a launcher on Windows that opens no console. How the window works, and how the zip is made, are in the guide.

Why you can trust the pictures

  • The game's own engine draws them. The official Ren'Py SDK of the game's version runs the game: its fonts, transitions, layered images, animations and screens. Nothing is rebuilt from the script.
  • Every branch, then a check. Every menu is answered every way; then the scripts are read, and any scene no path reached is named.
  • The same picture, every time. Game time follows frames, not the clock; randomness is seeded; a scene is kept once it has settled. Run it twice and the files are identical, so a difference between two captures is a real one.
  • Your copy stays untouched. The game runs from a separate folder that only links to it; the SDK comes from renpy.org and is checked against its official checksum.

Tested on a large commercial game: 44 branches and 21,945 lines in about eight minutes on four engines, every picture identical, byte for byte, to the run before.

Compared with what you do now

Playing through Translation files and tools renpy-capture
Each line in its scene ✓ — ✓
Every branch, and proof that none was missed by hand, route by route every string, reachable or not ✓
The translation beside the original replay in each language text only ✓ frame beside frame, as the game draws it
Search, a link to any line, one page to share — search ✓
Editing the translation — ✓ —

renpy-capture does not replace your translation tools: it shows what they produce, in the game.

Good to know

  • It answers menus; it does not play mini-games. A map, a quiz or a timed challenge can be guided by the game's config, see the guide.
  • The official SDK has to run the game: a game shipped with a modified engine may not start.
How it works
flowchart LR
    G["Your copy of the game"] --> L["Launch folder<br/>links to the game + capture.rpy"]
    S["Official Ren'Py SDK<br/>from renpy.org, sha256 checked"] --> L
    L -->|every menu, every option| O["Every picture<br/>and a log of every line"]
    O --> E["The book, the tree of choices,<br/>a table of every line"]
    O --> X["Scenes no path reached"]
  • Inside the engine, a small script takes the picture once the scene has settled: animations and transitions are over and nothing asks for a redraw any more. An endless animation is caught at a fixed phase.
  • A job plays the game from a label and answers menus with the options it was given. Every option not taken yet becomes a new job, until none is left; several engines run at once, and a watchdog restarts one that hangs.
  • Mods that draw over the game are left out of the launch folder, so the pictures are the game's own.

More

  • The guide: installing, the hidden screen, translations, every command, what each file holds, games that need help, when something is off.
  • The config and the output, field by field · Changelog

Be kind to the authors

Capture games you own. The pictures and the words are their authors' work: do not publish them without permission.

License

MIT, see LICENSE. Made by Aiken and Claude.

Metadata

Release files for renpy-capture 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for renpy-capture 0.3.0
File Size Uploaded
renpy_capture-0.3.0.tar.gz 167.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for renpy-capture 0.3.0
File Interpreter ABI Platform
renpy_capture-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 277.6 kB

Release files / renpy_capture-0.3.0.tar.gz

Download URL renpy_capture-0.3.0.tar.gz
Size 167.7 kB
Tags Source
SHA-256 checksum
How to use checksums
f540e420a886c782eccb9dfa618e9590268f80aa2ea2ac41791dbf449d50ad24
BLAKE2b-256 checksum
How to use checksums
bd811701554d29f2d538965699bfecacc5929b0d1a2720463ad77392c8dbee2f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.

Transparency log

Release files / renpy_capture-0.3.0-py3-none-any.whl

Download URL renpy_capture-0.3.0-py3-none-any.whl
Size 109.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0c02517a505e16b6a13c84234898e390238ed471335716748fb19c3d15606a9c
BLAKE2b-256 checksum
How to use checksums
ca0a971bd6719f3095bae2409d214d25e6de3804f480e64970a9879eb73d3a70
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 release files

0.2.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page