Start from the right file
Translate the original-language subtitle file, never a re-export from a video editor, and never an auto-generated transcript that has not been corrected. Whatever is wrong upstream β misheard words, missing punctuation, cues split mid-sentence β you will faithfully propagate into every language.
Before you begin, clean the source. Strip sound-effect cues, speaker labels and markup you do not want to carry across, using Clean subtitles. Confirm the timings are right: if the source is out of sync, translate it first and fix sync afterwards on every language at once, rather than fixing each translation separately.
Three ways to do the work
| Method | Best when | Watch out for |
|---|---|---|
| Subtitle editor (dedicated software) | You are translating and re-timing in one pass | Requires the translator to learn the tool |
| Spreadsheet via CSV | A translator with no subtitle experience is doing the wording | Someone must re-import and re-check timing |
| Machine translation, then human post-edit | Large volume, tight deadline | Raw output ignores line length and reading speed entirely |
For most teams the spreadsheet route is the pragmatic one, because it separates the two jobs: a translator handles wording, a captioner handles timing.
The spreadsheet route, step by step
- Open the source file in the subtitles to CSV converter and download the CSV. You get one row per cue, with start time, end time, duration in milliseconds and text.
- Send the CSV to the translator. Ask them to fill a new column and to keep the row count identical β one cue in, one cue out.
- Paste the translated column back over the text column, preserving row order. Sorting or filtering during translation is the single most common way this workflow breaks.
- Rebuild the subtitle file, then run it through the timing checker before you look at anything else.
The duration column in that CSV is more useful than it looks. Sort by it and the shortest cues are the ones most likely to be unreadable in the target language, because a translation is rarely shorter than the original.
Condense β do not translate literally
English at a comfortable pace is roughly 12β20 characters per second. Many target languages need 25β40% more characters to say the same thing. If you translate each cue literally, a large share of them will exceed what a viewer can read in the time available.
This is why subtitling is condensing. Drop filler, collapse two clauses into one, prefer a shorter synonym, and let a repeated name become a pronoun once context is established. A translation that reads naturally at speed is better than one that is complete but unreadable.
Keep the two conventions that carry meaning: a maximum of two lines per cue, and roughly 40β42 characters per line. Break a line at a natural phrase boundary, never in the middle of a name or a number. See subtitle reading speed for the numbers behind both.
What not to translate
- On-screen text is translated only if it is dialogue; a sign, a headline or a UI label is usually rendered as a caption describing it rather than translated word for word.
- Names stay in their original form unless an established translated form exists.
- Song lyrics are conventionally translated rather than transliterated, and marked with a music note at the start and end of the sung section.
- Sound effects β
[door slams]β are translated, because they are part of the accessibility contract, not the dialogue.
Check before you deliver
Run three checks on the finished file. First, the timing checker at the reading-speed limit your delivery target uses. Second, encoding: save as UTF-8, and if an existing file shows characters like CafΓΒ©, repair it with the encoding repair tool rather than retyping anything. Third, format β convert to what the destination actually accepts, usually WebVTT for the web and SubRip everywhere else.
Then watch two minutes of the video with the translated track on. Automated checks catch numbers; they do not catch a translation that is technically fine and reads badly.
Delivering several languages
One file per language, named consistently β film.en.srt, film.de.srt, film.ja.srt β with language codes matching what the player or platform expects. Do not merge translations into a single file: players handle multiple languages as multiple tracks, and a merged file forces one language on every viewer.