Subtitle Translator
Translate SRT, VTT, ASS, SSA and SUB subtitle files between 15 languages with 100% original timestamp preservation. Free, no signup, file stays in your browser.
About the Subtitle Translator
Video creators, indie filmmakers, e-learning teams and small localization shops constantly need to ship subtitles in 4-8 languages without breaking a single timestamp. Most online translators paste prose into a textarea and destroy SRT structure on round-trip, requiring 30-60 minutes of manual cue re-numbering per file. This tool parses SRT, WebVTT, Advanced SubStation Alpha (ASS), SubStation Alpha (SSA) and MicroDVD (SUB) natively, extracts only the text payload of each cue, translates it via your choice of MyMemory (free, no API key), LibreTranslate (public open-source instance) or a fully offline 5-language dictionary mode, then rebuilds the file with every timestamp, every cue number, every karaoke tag and every styling instruction byte-identical to the source.
A timestamp-integrity check reruns the parser on the output to confirm 100% cue alignment before you download. The translated file drops straight back into Premiere Pro, DaVinci Resolve, FFmpeg, Aegisub, YouTube Studio, Vimeo or any player that loaded the original.
Which subtitle formats are supported and how does the parser detect them?
Five formats: SRT (the de-facto standard, comma-separated milliseconds), WebVTT (HTML5 standard, dot-separated milliseconds, supports cue identifiers and styling), Advanced SubStation Alpha .ass (Aegisub format with karaoke, fade, position tags), SubStation Alpha .ssa (older sibling of ASS), and MicroDVD .sub (frame-numbered, common in older DVDs). The detector looks at the first 300 characters for a 'WEBVTT' header, an '[Script Info]' or 'Dialogue:' line, a {start}{end} frame pattern, or an SRT-style timestamp arrow — in that priority order. You can paste content directly or upload .srt, .vtt, .ass, .ssa, .sub or .txt files.
How does the tool guarantee timestamps are preserved 1:1?
Three layers. First, the parser extracts only the text payload of each cue and leaves header lines (cue numbers in SRT, cue IDs in VTT, format/style fields in ASS, frame markers in SUB) completely untouched as opaque strings. Second, the rebuilder writes the same header strings back in the same order with the translated text spliced in. Third, after rebuild the output is re-parsed and its timestamp list is compared to the original — the 'Timestamps kept' card shows the percentage and turns green at 100%. In normal use it is always 100%; if it ever dips below, the input file likely contained mixed formats or non-standard cue separators.
Which translation engine should I pick and what are the limits?
MyMemory (default) is free, requires no API key, supports 100+ language pairs and uses a community translation memory boosted by neural fallback — quality is comparable to mid-tier commercial engines for common languages. Rate limit: ~5,000 characters per IP per day anonymously, 50,000/day with a free email. LibreTranslate (public Argos endpoint) is fully open source, slightly lower quality but unlimited and self-hostable if you need on-prem; quality varies by language pair. Offline dictionary mode does word-level replacement only, no grammar — useful for technical glossaries or to preview structure with zero network calls. For production-grade quality buy DeepL or OpenAI/Anthropic translation; this tool is designed for fast iteration, not final film delivery.
Does the tool preserve ASS karaoke timing tags (\k, \kf, \K) and styling?
Yes for line-level styling and per-event format fields (Layer, Start, End, Style, Actor, MarginL, MarginR, MarginV, Effect). Inline override tags like {\b1}{\i1}{\fad(200,200)}\N{\k50}lyric are sent through the translator as-is in the Text field. Most engines preserve braces and backslashes literally, but karaoke timing \k tags will appear in the translated lyrics in the same positions — you may need to manually re-time them since translated syllables rarely match source syllable counts. For karaoke-critical work, translate the prose, then re-time \k in Aegisub. For dialog subtitles without karaoke, the round-trip is essentially perfect.

What is the difference between WebVTT and SRT for web players?
SRT is older (1990s, originally for SubRip), uses commas as decimal separator (00:01:23,456) and has no official styling. WebVTT (2010+, HTML5 native) uses dots (00:01:23.456) and supports cue identifiers, positioning, voice spans (<v Speaker>), CSS classes, and chapter markers. YouTube, Vimeo, Netflix-internal and modern HTML5 <video><track> all prefer VTT. If you upload an SRT to YouTube it auto-converts to VTT internally. Convert SRT→VTT by translating into VTT format (paste SRT, pick VTT target — coming in a future release; meanwhile change the comma to dot in your output editor). All five output formats remain byte-identical to their source structurally.
Can I batch-translate a 5,000-cue subtitle file in one go?
Yes, but expect 10-30 minutes for a full feature-length film via MyMemory — each cue is one API call with a 250ms polite-throttle every 5 cues to avoid rate-limit bans. The UI shows a progress counter (cue X / total) so you can leave the tab in the background. For files over 2,000 cues we strongly recommend chunking the SRT (split-text tool on this site can do that) and translating in two or three sessions, or using an API key (sign up at MyMemory for 50k chars/day free). LibreTranslate has no rate limit on the public Argos endpoint but throughput is typically slower per call.
Will the translated subtitle file play in my video editor or player without re-numbering?
Yes. SRT cues stay numbered 1, 2, 3… in original order. VTT cue identifiers (if present) are preserved verbatim. ASS Dialogue lines retain their Layer/Style/Actor fields. MicroDVD frame markers stay byte-identical. Test confirmed in: Premiere Pro 2024 (drag .srt into a sequence), DaVinci Resolve 19 (Subtitles → Add Subtitles from File), FFmpeg (-vf subtitles=file.srt), Aegisub 3.4 (File → Open Subtitles), VLC 3.x, MPC-HC, mpv, YouTube Studio (auto-imports as a track), Vimeo Pro and the native HTML5 <track> element. If your player rejects the file, check the BOM (some editors prepend 0xEF BB BF) and re-save as UTF-8 without BOM.
Are my subtitles confidential when using the cloud engines?
MyMemory and LibreTranslate are public services that may log requests for quality improvement. The TEXT of each cue is sent in plaintext over HTTPS; timestamps, cue numbers and ASS styling never leave the browser. For NDA, pre-release film, medical or legal content use the Offline Dictionary engine (zero network calls) or self-host LibreTranslate behind your firewall (open-source, runs on a single GPU). The Offline Dictionary mode only covers basic vocabulary for English↔Vietnamese/Spanish/Portuguese/French — it is a structure-preservation preview, not a production translation. For confidential production work, the safest path is self-hosted LibreTranslate or a commercial API with a signed Data Processing Agreement.
