Guides

    Translate SRT subtitles without breaking timing

    Keep every timestamp, then fix what translation breaks: line length, reading speed and tags. Plus when a machine-translated SRT needs a human pass.

    Versely Team8 min read

    Translating an SRT file looks like a text job. It is really a timing job. The timestamps can stay exactly where they are and the file can still be broken, because the new words do not fit the time they were given. This guide covers what to keep fixed, what to check after, and when a machine translation is not enough.

    What an SRT is, and what must not move

    An SRT is a list of cues. Each cue has a number, a start and end time, and one or two lines of text.

    14
    00:01:12,400 --> 00:01:15,100
    I told you we'd be late.
    <i>Again.</i>
    

    The rule for translation is simple. The timestamps do not move. They were set against the speech and the shot changes. If you retime while translating, you are doing two jobs at once and you will get both wrong. Translate the text, keep the times, then check whether the new text fits.

    Things that can quietly break the file:

    • Pasting the whole file into a chatbot. It may merge cues, drop numbers, "fix" timestamps or change the arrow. Some players reject the result, and some show it out of sync.
    • Translating tags. <i> becomes something else, or the closing tag disappears and the rest of the file turns italic.
    • Moving line breaks. A two-line cue comes back as one long line, or three.

    Translate with the timings locked

    The free subtitle translator is built around that rule. You drop or paste an SRT or VTT, up to 20 MB and 2,000 cues. It translates only the cue text, in your browser, with Helsinki-NLP's OPUS-MT models. Start and end times stay on each cue. The file is not uploaded; the model for your language pair downloads once, about 99 to 136 MB, and is cached.

    The language pairs it covers:

    • English into Spanish, French, German, Italian, Portuguese, Hindi, Japanese, Chinese, Arabic, Russian, Dutch or Indonesian.
    • Into English from Spanish, French, German, Portuguese, Hindi, Japanese, Chinese or Russian.

    There is no direct pair between two non-English languages. Spanish to French means running Spanish to English, then English to French, and errors from the first pass carry into the second. For that pair, a human check is not optional. Korean and Turkish are not in the list.

    A few details from how it works, because they change how you should prepare the file:

    • Each line is translated separately. Line breaks inside a cue stay line breaks. That keeps your layout. It also means a sentence split across two lines reaches the model as two halves.
    • Each cue is translated on its own. A sentence that runs across two cues is translated as two pieces.
    • Tags are held back. <i> and <b> stay around the words they wrapped, and styling codes like {\an8} are not sent to the model. A dialogue dash at the start of a line is taken off and put back.

    Original and translation sit side by side, and every line is editable. You can download the same format or the other one. The SRT download keeps <i> and <b> and drops WebVTT voice tags and ASS overrides. The VTT download keeps the tags.

    Prepare the source before you translate

    Five minutes on the source file saves an hour on the output.

    Fix the source first. Every typo and misheard word in the original becomes a wrong translation. If the SRT came from speech recognition, proofread it before you translate it.

    Rejoin split sentences where the grammar matters. German and Japanese put verbs in different places from English. If "I told you we'd" is on one line and "be late" is on the next, each half is translated without the other. For short, clean dialogue this rarely matters. For long sentences, put the sentence on one line before translating, then re-break it in the output.

    Remove italics from the middle of sentences. Emphasis on one word splits the line at the tag. The model then sees the emphasised word by itself. Put emphasis back by hand afterwards. Whole-line italics, for songs or off-screen voices, are fine.

    Spell out on-screen context. Subtitles for a sign or a text message on screen often read like fragments. Fragments translate badly. Make them a clear phrase first.

    Line length: the text will not fit the same way

    Translated text rarely has the same length as the original. Spanish, French and German often run longer than English. Chinese and Japanese are much shorter in characters, but those characters are denser to read.

    The common line limit for Latin scripts comes from streaming style guides. Netflix's English timed text style guide sets 42 characters per line and at most two lines. The subtitle translator flags translated lines over 42 characters, and over 16 for Japanese and Chinese, the same presets as the caption line length checker. The file still downloads. The flag is a to-do list.

    Be aware that 16 is a loose limit for Japanese. Netflix's Japanese style guide sets 13 full-width characters per line for regular horizontal subtitles. If you deliver to a platform with a Japanese spec, check against it.

    When you re-break a long line, break it where a reader would pause. The Netflix English guide says to break after punctuation and before conjunctions or prepositions. It also says not to split an article from its noun or a first name from a last name. Those rules work in most European languages too.

    Reading speed: the check people skip

    This is where timing breaks without anything moving. A cue that shows for 2 seconds holds the same 2 seconds after translation. If the translation is 30 percent longer, the viewer has 30 percent more to read in the same time.

    Reading speed is counted in characters per second. Netflix's English guide allows up to 20 for adult programmes and 17 for children's. The Japanese guide allows up to 4 characters per second for regular subtitles. That is the density point again.

    After translating, run the file through the subtitle reading speed checker. It has 17, 20 and 25 CPS presets, or your own limit, and lists the fastest cues first. Fix a flagged cue in this order:

    1. Shorten the text. Subtitles are not transcripts. Cut filler, repetition and words the picture already shows.
    2. Extend the cue into a gap, if there is silence after it and the next cue does not start straight away. Stop before a shot change if you can.
    3. Merge two short cues when the same person is speaking.

    Do not shift the whole file to buy time. If the source drifted from the audio, fix that separately with the subtitle timing shifter. Our longer guide on reading speed as characters per second covers why a cue that flashes is a timing error, not a style choice.

    When machine translation needs a human pass

    OPUS-MT is a small model running in your browser, one pass at a time. On clear, short dialogue it is usable. It is weakest on:

    • Names and brand terms. It may translate a surname or a product name as a word.
    • Slang, jokes and wordplay. A pun rarely survives. A good human translator replaces it rather than translating it.
    • Formal and informal "you". French, German, Spanish and others choose between forms. The tool has no setting for this, and it can switch between forms from line to line.
    • Gender and agreement. A line on its own often does not say who is speaking. The model guesses, and the guess can change between cues.
    • Mixed languages in one cue. Results get unpredictable.

    Our rule of thumb:

    • Internal review, rough drafts, your own understanding: machine output with a skim is fine.
    • Social clips in a second language: machine output plus a full read by someone fluent. Fix names, tone and anything that sounds like a textbook.
    • Paid, legal, medical, or a film: a human translator, with the machine draft as a starting point at most.

    Getting the translation onto the video

    If you do not have a subtitle file yet, make one first with the subtitle generator. It transcribes up to 10 minutes of speech in your browser and exports SRT or VTT. After translating, upload the SRT as a sidecar file on platforms that accept one. For feeds that autoplay on mute, burn it into the picture with burn captions, which takes SRT or VTT and handles clips up to 2 minutes.

    Subtitles are one way to reach another language. A dub is the other. If you are choosing between them, dub first, then caption the new language explains the order, and 6 apps for captions in another language compares the editors that do it inside one app. Versely's main product is AI video and image generation, on the web and in the mobile app. The translator is one of the free tools that sit around it.

    The checklist

    • Keep every timestamp. Translate text only.
    • Proofread the source. Rejoin split sentences, remove mid-sentence italics.
    • Translate with the timings locked.
    • Fix lines over the length limit. Re-break at natural pauses.
    • Run a reading speed check. Shorten before you retime.
    • Get a fluent human to read anything you publish.