Subtitle Translator: Batch AI Subtitle Translation for 120+ Languages Without Breaking Timing
In-depth discussion
Technical
0 0 1
This is the README of an open-source, browser-based batch subtitle translation tool supporting .srt, .ass, .vtt, and .lrc formats. It strips timecodes locally so only dialogue is sent to translation engines, supports 8 traditional MT APIs and 27 LLM providers/gateways, 120+ target languages, multi-language single-pass output, bilingual export, context-aware LLM translation, IndexedDB caching, and a headless CLI. Configuration, feature lists, FAQ, and contribution guidelines are included.
main points
unique insights
practical applications
key topics
key insights
learning outcomes
• main points
1
Structural separation: timecodes, cue numbers, and headers are extracted locally so the translation engine cannot disrupt the timeline
2
Broad engine coverage: 8 traditional MT APIs and 27 LLM providers/gateways, plus a headless CLI sharing the same engine, parsers, and cache
3
Practical batch workflow: whole-season batch processing, multi-language single-pass output, resumable CLI runs via caching, and bilingual ASS/SRT export
• unique insights
1
Explicitly separates structural subtitle data from dialogue text so LLMs only see translatable content, a practical approach to preserving timing integrity
2
Context-aware LLM batching (surrounding lines sent as context) with a caveat that models under 70B parameters may misalign output
• practical applications
Highly actionable for anyone translating subtitle files at scale: the README gives concrete engine tradeoffs (free vs. LLM quality), CLI usage examples, format-handling notes, and privacy guarantees for client-side processing.
• key topics
1
Batch subtitle translation across SRT/ASS/VTT/LRC formats
2
Traditional MT APIs vs. LLM-based translation tradeoffs and configuration
3
CLI usage, caching/resumability, and client-side privacy architecture
• key insights
1
Timecodes are physically protected from model rewriting by stripping them locally before translation
2
Single-pass multi-language output and whole-season batch processing with aggregated success/failure reporting
3
Fully client-side operation where API keys and subtitle content never touch a server
• learning outcomes
1
Understand how to batch-translate subtitle files across SRT, ASS, VTT, and LRC formats while preserving timing
2
Choose and configure appropriate translation engines (traditional MT vs. LLM providers) and understand their cost/quality tradeoffs
3
Use the headless CLI with exported settings for scripted, resumable translation workflows
Pasting a subtitle file into a general-purpose translator creates two common problems. First, the model may rewrite or corrupt the timecodes, breaking synchronization with the video. Second, translating files one at a time is slow when you are working with an entire season of episodes. A purpose-built subtitle workflow solves both issues by separating timing data from dialogue before translation begins.
“ What Is Subtitle Translator?
Subtitle Translator is a free, browser-based batch subtitle translation tool designed for .srt, .ass, .vtt, and .lrc files. It extracts timecodes, cue numbers, and format headers locally, sending only the dialogue text to the translation engine. Because the timeline never leaves your device in modified form, it cannot be disturbed by the model. With chunked compression and parallel processing, the tool completes roughly one episode per second, and it can handle hundreds of files in a single run.
“ Key Features for Fast Batch Translation
Batch processing lets you drop an entire season at once. Each file translates and downloads independently under its original filename, and a summary reports successes and failures when the run finishes. Real-time translation keeps throughput high, while IndexedDB caching stores results locally without browser storage limits, so refreshing the page does not lose completed work. Subtitle extraction can strip cues and timing to produce clean text for summaries, scripts, or content repurposing.
“ Supported Subtitle Formats and Encoding
The tool auto-detects SRT, ASS, VTT, and LRC formats. SRT and VTT suit most online video players, ASS suits anime fansubs and Aegisub users, and LRC is designed for music lyrics. WebVTT non-cue blocks such as NOTE, STYLE, and REGION are skipped correctly. Character encoding is detected automatically for UTF-8, UTF-16, GBK, and Shift-JIS, reducing garbled output. Format conversion between SRT, VTT, and ASS is also available during translation.
“ Choosing a Translation Engine: Traditional APIs vs. LLMs
The tool supports eight traditional machine translation services, including DeepL, Google Translate, Azure Translate, DeepLX, Qwen-MT, TranslateGemma, GTX, and Edge. GTX and Edge require no configuration and serve as zero-setup defaults. It also connects to 27 large language model providers and gateways, such as OpenAI, Claude, Gemini, DeepSeek, and OpenRouter. Traditional engines are inexpensive or free but often read flatly, while LLMs cost more per token yet produce more natural dialogue. Glossaries added to the system prompt keep names and terminology consistent across an entire season.
“ Context-Aware Translation for Dialogue Coherence
When using LLM modes, the tool can send surrounding lines as context with each batch. This improves dialogue coherence and maintains consistent character voices. Users can adjust concurrent lines, which defaults to 20, and context lines, which defaults to 50. Higher context values improve coherence but consume more tokens. Models under 70 billion parameters may produce misaligned output, so mainstream online models are recommended for context-aware translation.
“ Bilingual Subtitles and Multi-Language Output
Bilingual output places the translation above or below the original line while keeping alignment intact across formats. For SRT and VTT sources, the tool can export ASS files with separate styles for original and translated text, which can be adjusted in any subtitle editor. Multiple target languages can be translated in a single pass, with each language exported as its own file bearing a language code suffix, such as movie.zh.srt or movie.fr.srt. The interface itself is available in 18 languages, and translation covers more than 120 languages.
“ Privacy: How Your Data Stays Local
Everything runs client-side in the browser. Subtitle parsing, translation requests, and caching all happen on the user's device. API keys are stored only in local browser storage, and LLM requests travel directly from the browser to the configured endpoint. Subtitle content and credentials never pass through a server operated by the tool, which matters for unreleased or sensitive material.
“ Using the Command Line Interface
A command line interface runs the same engine, parsers, and cache headlessly. After configuring the service in the browser and exporting settings as JSON, users can run commands such as translating several episodes into Chinese with the free GTX service, or producing bilingual output with a local model so no data leaves the machine. Runs are resumable because every translated line is cached, so an interruption or rate limit only costs the remaining work. The CLI also handles Markdown and JSON locale files.
“ Frequently Asked Questions
Which formats are supported? SRT, ASS, VTT, and LRC. Is machine translation or an LLM better? Machine translation is cheap and fast, while LLMs yield more natural dialogue at a higher cost per token. How can names be kept consistent? Add a glossary to the system prompt of any LLM engine. Do I need to tell the model to preserve timecodes? No, because timing data is extracted and reinserted locally. Is it private? Yes, all processing happens in the browser with keys stored locally.
“ Getting Started
To try the tool, visit the online version at tools.newzone.top/en/subtitle-translator, where no installation is required. Developers can clone the open-source repository, which requires Node.js 24 or later and Yarn, then run yarn install followed by yarn dev to start a local server at localhost:3000. The project is MIT licensed, and contributions through issues and pull requests are welcome.
We use cookies that are essential for our site to work. To improve our site, we would like to use additional cookies to help us understand how visitors use it, measure traffic to our site from social media platforms and to personalise your experience. Some of the cookies that we use are provided by third parties. To accept all cookies click ‘Accept’. To reject all optional cookies click ‘Reject’.
Comment(0)