A free, open-source desktop app for Windows, macOS, and Linux
Features • Installation • Quick Start • Configuration • Contributing
EncodeForge is a free, open-source FFmpeg GUI that brings professional video encoding, AI subtitle generation, and smart media file renaming together in a single, clean desktop application — no command-line experience required (though a scriptable CLI is there if you want it).
Encoding is GPU-accelerated wherever your hardware allows it, and AI subtitle transcription runs entirely on your own machine via faster-whisper — no cloud service involved.
- Batch Processing — Convert entire video libraries while you sleep
- Hardware Accelerated — Leverage your GPU for fast encoding via NVENC, AMF, Quick Sync, or VideoToolbox
- AI Subtitles — Local transcription via faster-whisper with GPU acceleration; no cloud required
- Smart Renaming — Pull metadata from 8 sources and rename your library in seconds
- Modern UI — A custom dark glassmorphism interface built natively in PySide6
- Scriptable — Batch-rename from the command line with
cli.py rename, sharing the same engine as the GUI - Cross-Platform — Windows, macOS, and Linux
- PySide6 — Qt 6 for Python
- QtAwesome — Icon set for the UI
- FFmpeg — Industry-standard multimedia processing
- faster-whisper — Fast local AI subtitle generation
- Nuitka — Python compiler for standalone distribution
- Hardware Acceleration — NVIDIA NVENC, AMD AMF, Intel Quick Sync, Apple VideoToolbox
- Smart Codec Detection — Automatically picks the best encoder available on your system
- 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
- Local AI Transcription — faster-whisper with GPU acceleration; runs completely offline
- 90+ Languages — Full multilingual transcription support
- 8 Download Providers — OpenSubtitles, Addic7ed, SubDL, Subf2m, YIFY, Podnapisi, SubDivX, Jimaku
- Anime Support — Jimaku provider for English/Japanese anime subtitles
- Format Support — SRT, ASS, SSA, VTT, and more
- 8 Metadata Providers — TMDB, TVDB, OMDB, Trakt, AniDB, Kitsu, Jikan/MAL, TVmaze
- Auto-Detection — Recognizes movies, TV shows, and anime automatically
- Custom Patterns — Define your own naming conventions with template variables
- Preview Mode — Review all changes before applying them
- Bulk Operations — Rename entire libraries in seconds, from the GUI or the CLI
- Glassmorphism Design — Clean, modern tabbed layout with translucent panels
- Dark Theme — Tuned for long sessions (light/auto themes are in progress — see Roadmap)
- Real-Time Progress — Detailed per-file and overall progress tracking
- Queue Management — Add, reorder, and remove jobs at any time
- Comprehensive Logging — Exportable logs for troubleshooting
Download links and version history live on the EncodeForge website, so they stay accurate without editing this README for every release.
- Downloads — every version, newest first, pulled live from GitHub Releases. The current release, 0.5.0, ships as a Windows .exe, a macOS (Apple Silicon) .dmg, and Linux .deb/.rpm/AppImage packages. Older 0.4.x builds are listed too; anything not yet uploaded shows as "coming soon."
- Changelog — web version of
CHANGELOG.md. Add a hash to jump to a version section when it exists, e.g.changelog.html#release-0-5-0-alpha-2,#release-0-4-1.
FFmpeg is required but not bundled. EncodeForge will prompt you to set it up on first launch.
Requirements: Python 3.10+, pip, Git
git clone https://github.com/SirStig/EncodeForge.git
cd EncodeForge
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
python main.pypip install -r requirements.txt
python build_nuitka.py- Launch EncodeForge (
python main.pyor run the downloaded binary) - On first launch, the app will help you locate or download FFmpeg
- Pick a tab — Encoder, Subtitles, or Renamer
- Add files via drag-and-drop or the file browser
- Configure your settings and click Start
That's it. Most options have sensible defaults, so you can dive straight in.
cli.py rename shares the same renaming engine as the GUI, so you can batch-rename a library without opening a window:
python cli.py rename /path/to/library --dry-run # preview only
python cli.py rename /path/to/library -y # rename in place
python cli.py rename /path/to/library -d /path/to/sorted --action moveRun python cli.py rename --help for the full option list. encode and subtitle CLI subcommands are not implemented yet — use the GUI for those (see Roadmap).
EncodeForge works out of the box without any API keys. Adding them just unlocks a few extra 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 needed: 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 |
| 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+ |
The Python row only applies if you're running from source (see From Source). The pre-built binaries bundle their own interpreter.
- ✅ Modern glassmorphism desktop UI
- ✅ GPU-accelerated faster-whisper for local AI subtitles
- ✅ Shared core backend (GUI & CLI)
- ✅ Nuitka compilation for all platforms
- ✅ Scriptable CLI renaming (
cli.py rename) - ⏳ CLI support for
encodeandsubtitlecommands - ⏳ Light & Auto theme options (selector exists in Settings; not yet wired up)
- ⏳ Enhanced concurrent task processing
- ⏳ Plugin system architecture
- ⏳ Jellyfin & Plex direct integration
- ⏳ Advanced subtitle synchronization
- ⏳ Metadata artwork grabber
- ⏳ Subtitle preview window
Contributions are welcome! Whether it's a bug fix, a new feature, or improved docs — all help is 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.
- QtAwesome — Icon set for the UI
- FFmpeg — Multimedia processing framework
- faster-whisper — Fast local Whisper inference
- OpenAI Whisper — Model architecture and weights
- Nuitka — Python compiler
- 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 saves you time, consider giving it a ⭐ on GitHub — it really helps.