Generate video-game-style textbox videos with a typewriter effect — as a transparent video (ProRes 4444 MOV or WebM VP9) ready to drop onto any timeline in DaVinci Resolve, Premiere, After Effects, or OBS.
- 6 built-in styles — Classic RPG, Pokémon, Visual Novel, Undertale, Modern AAA, Final Fantasy
- Typewriter animation with per-style speed, easing box intro, and blinking cursor
- True transparency — ProRes 4444 (
yuva444p12le) drops straight into DaVinci Resolve with a real alpha channel; WebM VP9 for the web - Full GUI with live preview and threaded rendering
- CLI for automation and batch scripts
- Customisable — custom fonts, speaker name tags (Visual Novel), font sizes, resolutions up to 4K, FPS up to 60
- Download
GameTextbox.exefrom the latest release - Make sure FFmpeg is in your
PATH - Double-click — done
git clone https://github.com/Mikshade/GameTextbox.git
cd GameTextbox
pip install -r requirements.txt
# GUI
python gui.py
# CLI
python cli.py "Hello World" --preset classic_rpg -o output/hello.movRequires Python 3.10+ and FFmpeg in PATH.
# Simple
python cli.py "Hallo Welt"
# Pick a style
python cli.py "A wild Pikachu appears!" --preset pokemon -o output/pika.mov
# Multi-line text
python cli.py "Line one\nLine two" --preset classic_rpg
# Visual Novel with speaker name tag
python cli.py "Welcome back." --preset visual_novel --speaker "Mikshade"
# Slow dramatic typewriter
python cli.py "It is done..." --preset final_fantasy --speed 18
# 4K output, 30 fps, WebM
python cli.py "Quest complete" --preset modern_game \
--width 3840 --fps 30 --format webm -o output/quest.webm
# Custom font
python cli.py "Pixel power" --preset undertale --font fonts/PressStart2P.ttfRun python cli.py --help for all flags.
| Style | Look |
|---|---|
classic_rpg |
Dragon Quest — deep blue fill, white double border, yellow cursor |
pokemon |
White box with blue rounded border, navy cursor |
visual_novel |
Dark translucent panel with gold trim and a speaker name tag |
undertale |
Black fill, hard white pixel border, per-character shake |
modern_game |
AAA-style with a thin accent line and subtle shadow |
final_fantasy |
Blue vertical gradient, white double border, yellow cursor |
Each preset is a Python dict in presets.py — copy one and tweak colors, padding, border, fonts, or animation speeds to build your own.
The GUI gives you a live preview (with a checkerboard background so you can see the transparency) and exposes everything from the CLI plus a threaded render loop that won't freeze while it works.
- Text input (multi-line)
- Style picker with instant preview refresh
- Speed slider (8–80 characters per second)
- Speaker name (for Visual Novel)
- Output path with file picker
- Format (ProRes / WebM), width (1280 → 3840), FPS (24/25/30/60)
- Font size override and custom
.ttf/.otffile
| Format | Codec | Pixel format | Container | Use case |
|---|---|---|---|---|
prores |
ProRes 4444 | yuva444p10le |
.mov |
DaVinci Resolve / NLEs — full alpha |
webm |
VP9 | yuva420p |
.webm |
Web / OBS browser source |
pip install pyinstaller customtkinter pillow
build_exe.batThe finished executable lands in dist/GameTextbox.exe (~33 MB, single file).
gametextbox.py # core renderer + FFmpeg encoder
presets.py # 6 built-in styles
cli.py # command-line interface
gui.py # customtkinter GUI
example.py # render all 6 presets at once
build_exe.bat # PyInstaller build script
MIT — see LICENSE. Do whatever you want, just don't blame me if it breaks.
Pull requests welcome. If you build a new preset and want to share it, just drop it in presets.py and send a PR with a preview screenshot.
