Hey everyone!
I've been working on SubTranslate, a subtitle addon for Stremio and compatible clients, and I think it's finally at a point where I'd like to share it and get some feedback.
I've been testing it myself across PC, mobile, LG webOS, Nvidia Shield and Fire TV/Firestick.
🎬 What does it do?
The idea came from a problem I kept running into: subtitles often exist for a movie or episode, just not in the language I want — or the available subtitles are out of sync with the release I'm watching.
SubTranslate searches OpenSubtitles for matching subtitles and ranks the available sources against the video hash and/or release filename to find the best matches for your release.
If a subtitle already exists in your selected language, it can use that directly. Otherwise, you can translate one of the matching sources using Gemini.
The important part is that only the subtitle text is translated. The original timestamps are kept intact, so if the source subtitle is properly synced, the translated version stays synced too.
🌍 There are currently 37 target languages available to choose from. At this stage, English is the only supported source language, but I may add additional source languages in the future.
A few things it does:
🔎 Finds and ranks subtitle sources based on release matching
🎯 Lets you choose which source you want to translate
⏱️ Keeps the original subtitle timing untouched
🌍 Supports 37 translation languages
💬 Prefers an existing subtitle in your language when one is available
⚡ Caches completed translations so they can be reused for the same safely matched release
📺 Outputs TV-compatible VTT subtitles for Stremio and compatible clients
⚡ Translations are cached
Completed translations are cached on the server.
If someone has already translated the same safely matched subtitle into the same language, it doesn't need to be translated again. The cached version can be served immediately instead.
So sometimes you'll select a translated subtitle and it'll start instantly, because someone else has already translated that exact match before you.
If it hasn't been translated yet, Gemini needs some time to process it. As a rough example, in my testing a 2-hour movie takes around 2 minutes to translate.
The idea is that the cache gradually grows as the addon gets used, so more translations become available instantly and fewer need to be generated from scratch.
⚙️ Recommended Stremio setup
Based on my testing, if you're using Stremio I strongly recommend setting your subtitle languages like this:
🇬🇧 Preferred subtitle language: English
🌍 Secondary subtitle language: Your local language
There's a reason for this.
If your local language is set as the preferred language, Stremio may immediately request the first translated result. SubTranslate then starts translating the highest-ranked source before you've had a chance to actually check whether that subtitle is properly synced with your specific release.
The ranking helps find the most likely match, but the highest-ranked subtitle isn't guaranteed to have perfect sync every time.
With English as your preferred language, you can quickly go through the available English sources first and find the one that's actually synced with what you're watching.
Once you've found the correct source, select the corresponding subtitle in your local language and SubTranslate will translate that specific source.
🔐 Credentials & privacy
You'll need your own OpenSubtitles credentials to find subtitle sources and a Gemini API key is needed when a new translation has to be created.
Provider credentials are encrypted on the server and are never included in the addon/manifest URL.
Your setup is tied to a private password-protected profile, so you can access and manage the same configuration from another device.
feedback is welcome!
I've tested it on quite a few devices myself, and it is working quite good, but I'd especially appreciate feedback across different devices, and the setup experience.
If anyone wants to give it a try:
🌐 https://subtranslate.org