A cross-platform desktop application built with Python & PySide6
Features • Installation • Quick Start • Configuration • Contributing
EncodeForge is a free, open-source FFmpeg GUI built with Python and PySide6. It brings professional video encoding, AI subtitle generation, and media file management into a single, clean desktop application — no command-line experience required.
v0.5.0-alpha-1 is the in-development PySide6 rewrite: modern Fluent-style UI, improved performance, and a unified settings layer for the desktop app. It is not on GitHub Releases yet. v0.4.1 remains the latest published binary (JavaFX; deprecated). Command-line and web interfaces are planned for a later release.
AI subtitles in v0.5.0 use faster-whisper (Whisper models via CTranslate2) instead of the OpenAI Whisper + PyTorch path from the JavaFX era. Expect much faster transcription, lower RAM use, and the same GPU backends (CUDA, ROCm, Apple Silicon, CPU) — a clear upgrade over v0.4.x.
- Batch Processing — Convert entire video libraries while you sleep
- Hardware Accelerated — Leverage your GPU for lightning-fast encoding via NVENC, AMF, Quick Sync, or VideoToolbox
- AI-Powered — v0.5.0: faster-whisper (CTranslate2) for local subtitles in 90+ languages — far faster than the v0.4.x Whisper stack
- Modern UI — Clean PySide6 interface with Fluent Design and dark/light theme support
- Cross-Platform — Windows, macOS, and Linux
- Self-Contained builds — Nuitka targets bundled Python dependencies; FFmpeg is still required (Whisper models download in-app)
- CLI — Not implemented in v0.5.0-alpha-1; use
python main.pyorpython cli.py gui
- PySide6 — Qt 6 for Python
- PyQt-Fluent-Widgets — Modern Fluent Design UI components
- FFmpeg — Industry-standard multimedia processing
- faster-whisper — Fast Whisper inference (CTranslate2); used for AI subtitles in v0.5.0+
- OpenAI Whisper — Model architecture and weights (recognition quality)
- Nuitka — Python compiler for standalone distribution
- Hardware Acceleration — NVIDIA NVENC, AMD AMF, Intel Quick Sync, Apple VideoToolbox
- Smart Codec Detection — Automatic best-codec selection based on available hardware
- Batch Processing — Queue multiple files with real-time progress tracking
- Stream Preservation — Copy streams without re-encoding when possible
- Audio Normalization — Consistent volume levels across all output files
- AI-Powered (v0.5.0+) — faster-whisper with GPU acceleration; substantially faster and lighter than the OpenAI Whisper + PyTorch pipeline in v0.4.x
- 90+ Languages — Full multilingual transcription support
- 8 Download Providers — OpenSubtitles.com (API), Addic7ed, SubDL (API), Subf2m, YIFY, Podnapisi, SubDivX (Spanish), Jimaku (anime)
- Anime Providers — Jimaku for anime subtitles (English/Japanese)
- Format Support — SRT, ASS, SSA, VTT, and more
- 10+ Metadata Providers — TMDB, TVDB, OMDB, Trakt, Fanart.tv, AniDB, Kitsu, Jikan/MAL, TVmaze
- Auto-Detection — Intelligent movie, TV show, and anime recognition
- Custom Patterns — Define naming conventions with powerful template variables
- Preview Mode — Review all changes before applying
- Bulk Operations — Rename entire libraries in seconds
- PySide6 + Fluent Design — Clean, modern tabbed interface
- Dark & Light Themes — Easy on the eyes during long sessions
- Real-Time Progress — Detailed per-file and overall progress tracking
- Queue Management — Add, reorder, and remove jobs easily
- Comprehensive Logging — Exportable logs for debugging
Download the latest release from the Releases page:
| Platform | Format |
|---|---|
| Windows | .exe installer |
| Linux | .deb (Debian/Ubuntu) or .AppImage |
| macOS | Build from source (see below) |
Requirements: Python 3.10+, pip, Git
# Clone
git clone https://github.com/SirStig/EncodeForge.git
cd EncodeForge
# Create virtual environment
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Launch GUI
python main.pypip install -r requirements.txt
python build_nuitka.py- Launch EncodeForge (
python main.pyor run the installer) - On first launch, the app will prompt to locate or download FFmpeg
- Select a tab — Encoder, Subtitles, or Renamer
- Add files via drag-and-drop or the file browser
- Configure settings and click Start
Only the GUI launcher is supported:
python cli.py guiCommands encode, subtitle, and rename print a notice and exit until a future release. Use the desktop app for all workflows.
EncodeForge works without API keys, but adding them unlocks additional metadata providers:
| Service | Purpose | Free Tier |
|---|---|---|
| TMDB | Movies & TV metadata | Yes |
| TVDB | TV show metadata | Yes |
| OMDB | Alternative movie data | Yes (1,000/day) |
| Trakt | Tracking & metadata | Yes |
| OpenSubtitles | Subtitle downloads | Yes (5/day) |
Always free, no key required: AniDB, Kitsu, Jikan/MAL, TVmaze
EncodeForge auto-detects available GPU encoders on startup:
| GPU | Encoder | Minimum |
|---|---|---|
| NVIDIA | NVENC | GTX 600 series+ |
| AMD | AMF | Recent Radeon (Windows) |
| Intel | Quick Sync | 6th gen Core+ |
| Apple | VideoToolbox | All modern Macs |
| Platform | Minimum | Recommended |
|---|---|---|
| Windows | Windows 10 | Windows 11 |
| macOS | macOS 11.0 | macOS 13.0+ |
| Linux | Ubuntu 20.04 | Ubuntu 22.04+ |
| RAM | 4 GB | 8 GB (16 GB for AI subtitles) |
| Storage | 500 MB | 2 GB |
| Python | 3.10+ | 3.11+ |
- ✅ Complete PySide6 migration (was JavaFX)
- ✅ Modern Fluent Design UI
- ✅ Shared
EncodeForgeCorebackend for the GUI (CLI planned later) - ✅ Nuitka compilation for all platforms
- ✅ GPU-accelerated faster-whisper (v0.5.0+; much faster than v0.4.x)
- ⏳ Enhanced concurrent task processing
- ⏳ Plugin system architecture
- ⏳ Jellyfin & Plex direct integration
- ⏳ Advanced subtitle synchronization
- ⏳ Metadata artwork grabber
- ⏳ Subtitle preview window
Contributions are welcome and greatly appreciated.
- Fork the repository
- Create a feature branch:
git checkout -b feature/my-feature - Commit your changes:
git commit -m 'Add my feature' - Push:
git push origin feature/my-feature - Open a Pull Request
pip install -r requirements-dev.txt
pytest # Run tests
black . # Format code
flake8 . # Lint
mypy . # Type check
isort . # Sort importsDistributed under the MIT License. See LICENSE for details.
- PyQt-Fluent-Widgets — Fluent Design widget library
- FFmpeg — Multimedia processing framework
- faster-whisper — Fast Whisper inference (v0.5.0+)
- OpenAI Whisper — Model architecture and weights
- Nuitka — Python compiler
- curl-cffi — HTTP client with browser fingerprinting
- desktop-notifier — Cross-platform desktop notifications
| Channel | Link |
|---|---|
| Bug Reports | GitHub Issues |
| Feature Requests | GitHub Issues |
| Discussions | GitHub Discussions |
Built by Joshua Kac
If EncodeForge is useful to you, consider giving it a ⭐ on GitHub.