Powerful subtitle extraction, conversion, translation, and transcription for macOS, Windows, and Linux.
![]()
![]()
![]()
![]()
![]()
Subtitle Forge is a desktop application for working with subtitles across the full workflow: extract, insert, convert, OCR, translate, and transcribe. It includes a modern GUI, optional helper installers, and support for both local and remote subtitle-processing tools.
- Extract subtitles from MKV files, including batch workflows
- Insert subtitles back into video containers
- Convert subtitle formats between SRT, ASS, SSA, VTT, TXT, SUB, SUP, and more
- OCR image-based subtitles such as PGS and VobSub
- Translate subtitles with Gemini/GST or LibreTranslate
- Transcribe audio/video with Whisper
- Manage dependencies from the built-in Settings tab
- Work across platforms with macOS, Windows, and Linux release packages
-
Extract Subtitles
- Load subtitle tracks from MKV files
- Batch process multiple files
- Convert OCR-based tracks to text formats when tools are available
-
Insert Subtitles
- Add external subtitles to MKV files
- Works with multiple subtitle formats
-
Convert Subtitles
- Convert between common subtitle formats
- Apply time offsets and text-processing options
- Handle OCR-driven conversions when the required tools are installed
-
AI Translation
- Use Gemini-based workflows through
gst - Supports advanced translation settings and batch jobs
- Use Gemini-based workflows through
-
Whisper Transcription
- Transcribe media into subtitle files
- Supports local
whisper.cppon macOS and remote API workflows
-
LibreTranslate
- Translate subtitle files with a local or remote LibreTranslate server
-
Settings and Logs
- Dependency readiness summary
- Install actions for supported tools
- Logs for troubleshooting
- UI language selection
This repository also contains the original CLI extraction tooling. Most end users should use the packaged GUI releases, but you can still build and run the CLI from source if needed.
If you want the shortest path to a working setup:
-
Basic extraction / insertion / conversion
- Install the app for your platform
- Make sure
ffmpeg,mkvmerge, andmkvextractare available
-
OCR workflows
- Install
tesseract - Install
deno - Install the OCR helper tools shown in Settings
- Install
-
AI translation
- Install the GST/Gemini dependencies
- Provide your API key in the app
-
Whisper transcription
- On macOS, run the included Whisper setup script or use a remote server
-
LibreTranslate
- Set a remote LibreTranslate URL, or install the local macOS helper and start the server
If you are unsure what is missing, open Settings in the app. Subtitle Forge shows a setup summary and dependency status there.
Use this table to understand what each workflow needs.
| Workflow | Required | Optional / Notes |
|---|---|---|
| Extract subtitles | mkvmerge, mkvextract |
ffmpeg is commonly useful |
| Insert subtitles | mkvmerge |
|
| Convert text subtitles | none for basic formats | ffmpeg may be used depending on workflow |
| OCR PGS / SUP | deno, tesseract, tessdata |
PGS-to-SRT helper script |
| OCR VobSub | tesseract, tessdata, vobsub2srt |
|
| AI Translate (GST) | gst plus provider credentials |
Gemini API key required for Gemini-based use |
| Whisper local | whisper-cli and model file |
macOS helper script available |
| Whisper remote | Remote server URL | API key may be required |
| LibreTranslate remote | Server URL | API key optional depending on server |
| LibreTranslate local | Local LibreTranslate install | macOS helper script available |
- Download the latest macOS release from the Releases page.
- Unzip the archive.
- Remove the macOS quarantine flag:
xattr -cr "Subtitle Forge.app"- Move the app to
/Applicationsor another preferred location. - Launch the app.
- Download the latest Windows release.
- Extract the archive.
- If included in your package, run
install_dependencies.ps1orWindowsAIOInstaller.ps1as needed. - Launch the application.
- Download the latest Linux release.
- Choose one of the package types:
- Standard package: includes installation scripts
- Bundle package: includes bundled dependencies where available
- Extract the archive:
tar -xzf subtitle-forge-linux*.tar.gz- For the standard package, install dependencies if needed:
sudo ./install_dependencies.sh- Launch the application.
Subtitle Forge can work with only the tools needed for your chosen workflow. These helper scripts make setup easier.
Run:
bash ./install_dependencies.shThis installer:
- installs common Homebrew packages such as
ffmpeg,mkvtoolnix,deno,tesseract, and Python - creates a dedicated GST virtual environment at
~/.subtitle-forge/gst-venv - installs or updates
gst - downloads tessdata to
~/tessdata_best - adds PATH and
TESSDATA_PREFIXlines to~/.zshrc
After installation:
gst --help
gst translate --helpIf you want to remove the user-scoped items later:
bash ./uninstall_dependencies.shRun:
bash ./Whisper-mac-coreml.sh install
bash ./Whisper-mac-coreml.sh download-model base.enOptional:
bash ./Whisper-mac-coreml.sh generate-coreml base.enThe default install locations used by the app are:
~/.whispercpp-coreml/whisper.cpp/build/bin/whisper-cli~/.whispercpp-coreml/whisper.cpp/models/ggml-base.en.bin
Run:
bash ./Libre-mac.sh install
bash ./Libre-mac.sh startUseful commands:
bash ./Libre-mac.sh start-bg
bash ./Libre-mac.sh statusThe local install is placed under:
~/.libretranslate
After launching Subtitle Forge:
- Open Settings
- Review the dependency summary
- Install only the tools you need for your workflow
- Configure any required API keys or server URLs
- Return to the relevant tab and start working
Some features need external services or credentials.
-
Gemini / GST
- Requires a Gemini API key for Gemini-backed translation workflows
- You can create one from Google AI Studio
-
Whisper remote
- Requires a remote server URL
- Some servers may also require an API key
-
LibreTranslate remote
- Requires a server URL
- Some servers may require an API key
For privacy-sensitive use cases, local Whisper and local LibreTranslate setups are available on macOS.
OCR-based subtitle conversion depends on the quality of the source subtitles and the installed language data.
-
PGS / SUP
- Uses Deno-based tooling with Tesseract
-
VobSub
- Uses
vobsub2srtwith Tesseract
- Uses
Better results generally require:
- correct OCR language selection
- matching tessdata files
- high-quality source subtitles
-
The app says a dependency is missing
- Open Settings and review the setup summary
- Install the missing tool or point the app to the correct path
-
OCR is not working
- Make sure
tesseractis installed - Make sure tessdata is present
- For PGS workflows, make sure
denois installed
- Make sure
-
Whisper local mode does not start
- Verify
whisper-cliexists and is executable - Verify the selected model file exists and is readable
- Verify
-
LibreTranslate local mode is not ready
- Make sure
Libre-mac.sh installcompleted successfully - Start the local server
- Confirm the app is using the expected local or remote URL
- Make sure
-
Update notifications do not appear
- Install the latest release
- Older releases may contain outdated updater logic
-
macOS says the app is damaged or blocked
- Run:
xattr -cr "Subtitle Forge.app"- Go 1.18 or later
- Platform dependencies required by Fyne
- Additional platform build tools as needed
Fyne setup guide:
Typical examples:
-
macOS
brew install gcc
-
Linux
apt install gcc libgl1-mesa-dev xorg-dev
-
Windows
- install MinGW or MSYS2
git clone https://github.com/VenimK/Subtitle-Forge.git
cd Subtitle-Forge/fyne-gui
chmod +x build.sh
./build.shTypical outputs:
- macOS:
./build/subtitle-forge-mac - Linux:
./build/subtitle-forge-linux
- Improved update detection for version comparisons
- Better installer/app path synchronization
- More accurate LibreTranslate readiness checks
- Better Whisper default path detection and persistence
- Cleaner packaging behavior for Linux releases
For the full release history, see:
Bug reports, feature requests, and pull requests are welcome.