BookTranslator
BookTranslator

How to Translate YouTube Subtitles: Download, Translate, and Re-Upload Without Breaking Timing

A YouTube Studio workflow for creators: fix the source captions, download the file, translate it with timestamps intact, check cue timing, and upload each language with timing.

BookTranslator

BookTranslator Team

10 min read

Quick Answer: Translate the File, Not the Video

If you own the channel, the reliable way to add translated subtitles is a file round trip through YouTube Studio:

  1. Correct the original-language captions first.
  2. Download that track from Subtitles in YouTube Studio.
  3. Translate the timed file so every cue keeps its original start and end time.
  4. Check the translated file against the source before you upload it.
  5. Add the target language in Studio and upload the file With timing.

Most guides treat step 3 as the whole job. In practice, the two steps around it decide whether viewers in the new language get usable subtitles: a messy source track is copied into every language, and an unchecked translation can drift out of sync after one merged cue.

This guide covers only videos on a channel you manage. It does not cover downloading subtitles or video from other people's channels.

What YouTube Accepts, and What That Means for Translation

YouTube's supported file formats page lists basic formats such as SubRip (.srt) and SubViewer (.sbv/.sub), advanced formats such as WebVTT (.vtt) and TTML, and several broadcast formats. The details that matter for a translated track are:

FormatWhat YouTube says it keepsUse it when
SRT (.srt)"No style info (markup) is recognized." The file must be plain UTF-8.You want the most portable file for translation tools and subtitle editors.
SBV (.sbv)Same as SRT: no styling, plain UTF-8 required.You already have one from Studio. Convert it to SRT before using tools that do not read SBV.
WebVTT (.vtt)Positioning is supported; styling is limited to bold, italic, and underline tags.Your source track uses positioning, such as moving captions away from on-screen text.
TTML / DFXPStyling and positioning are supported.You have a professional caption file with styling that must survive.

The practical rule: translate in the same format you will upload, unless a tool forces a conversion. If your captions have no positioning or styling, SRT is the safest choice. If they do, keep VTT so that positioning stays attached to each cue.

Step 1: Fix the Source Track Before Anyone Translates It

YouTube can create automatic captions with speech recognition, but only in the video's default language. Automatic captions are a draft. Names, product terms, numbers, and homophones are the usual errors, and each one is copied into every translation made from that track.

Fix those errors once, in the source language, before translation:

  • In Studio, open the automatic track and choose Duplicate and edit. YouTube's editing guide explains that editing automatic captions creates a new caption track that includes your revisions.
  • Correct proper nouns, technical terms, and numbers. These are the words a translator cannot reliably infer from context.
  • Split cues that carry two separate ideas. A cue that ends in the middle of a clause is harder to translate in some languages, because the verb or negation may belong at the other end of the sentence.
  • Publish the corrected track, then download that version.

If you plan three target languages, one correction pass in the source saves three separate fixes in the translations.

Step 2: Download the Caption File from YouTube Studio

From YouTube Studio, open Subtitles, select the video, and find the corrected language track. YouTube's editing guide says to click Options and select Download subtitles.

The help page does not list which formats the download offers, and Studio's menu can change. Use whichever format your translation tool accepts. If you only get .sbv, convert it to SRT before translating. The two formats store the same timing and text in different layouts:

SBV
0:00:07.600,0:00:11.800
If the glue is old, a little heat
softens it in about thirty seconds.

SRT
3
00:00:07,600 --> 00:00:11,800
If the glue is old, a little heat
softens it in about thirty seconds.

SBV has no cue numbers and separates the start and end time with a comma. SRT numbers each cue, uses -->, and writes milliseconds after a comma. A converter only needs to rewrite those parts, so the text and timing should come out unchanged.

Step 3: Translate Without Touching the Timestamps

The translated file must keep the same number of cues and the same start and end time for each cue. YouTube places each line of text by its timestamp. If a cue is removed or merged, the cues after it no longer match what the speaker is saying.

Two things push translators to change timing, and both should be handled carefully:

  • Text expansion. A Spanish, German, or French line is often longer than the English line it replaces, but its time window is the same. Shorten the wording before you widen the cue.
  • Word order. If one sentence is split across two cues, a translator may be tempted to merge them so the grammar reads naturally. Rephrase so each cue still makes sense on its own.

BookTranslator's Subtitle Translator accepts SRT, VTT, ASS, and SSA files and keeps each cue's timestamps attached to the translated text, so you do not need to copy lines in and out of a chat window. It does not read SBV, so convert first. Create one translation task per target language. For a general look at what AI subtitle translation gets wrong, see the AI subtitle translation workflow.

Whatever tool you use, keep the source file next to the translation. You need both for the next step.

Step 4: Check the Translation Against the Source

Before uploading, compare the translated file with the source file, cue by cue. We wrote a small script for this: check_youtube_subtitles.py. It uses only the Python standard library, reads SRT, VTT, and SBV, and does two jobs:

python3 check_youtube_subtitles.py convert captions.sbv captions.srt
python3 check_youtube_subtitles.py check captions.srt captions.es.srt

The check command reports:

  • a changed cue count;
  • any cue whose start or end time differs from the source;
  • empty cues, cues that end before they start, and overlapping cues;
  • lines longer than 42 characters and cues faster than 20 characters per second;
  • files that are not valid UTF-8, which YouTube requires for SRT and SBV.

The line-length and reading-speed defaults come from the adult-program limits in Netflix's English (USA) Timed Text Style Guide. YouTube does not publish equivalent limits, so treat them as a starting point and change them with --max-line and --max-cps for your language. Netflix also publishes style guides for other languages.

A worked example

To show what the checker catches, we built a six-cue English sample about rebinding a paperback, then wrote two Spanish versions by hand. The files are public, so you can run the check yourself:

The clean translation passes with "No problems found." The second version produces this output:

Source cues: 6  Translated cues: 5
Cue count changed: source 6, translation 5
Cue 3: timing changed 00:00:07,600-00:00:11,800 -> 00:00:07,600-00:00:13,400
Cue 4: timing changed 00:00:12,000-00:00:13,400 -> 00:00:13,600-00:00:17,000
Cue 5: timing changed 00:00:13,600-00:00:17,000 -> 00:00:17,200-00:00:20,600
Cue 1: 20.2 characters/second (limit 20)
Cue 1: line has 46 characters (limit 42)
Cue 3: line has 45 characters (limit 42)

Here is what happened in each case:

  1. The merge. The translator joined "If the glue is old..." with the short "Don't rush this part." The merged cue now ends at 13.4 seconds, and every later cue is shifted by one position. Read the first timing error: it points to the merge. The errors after it are consequences of that merge, so fix the first one and run the check again.

  2. The edited end time. This one is hidden in the first run, because after the merge the checker compares the wrong pairs of cues. Split the merged cue back into two and run the check again. The line-length and reading-speed warnings from the first run are still there, and one new timing error appears:

    Source cues: 6  Translated cues: 6
    Cue 6: timing changed 00:00:17,200-00:00:20,000 -> 00:00:17,200-00:00:20,600
    

    The last cue was extended from 20.0 to 20.6 seconds. That is a small change, and you would not notice it in the file, but the subtitle now stays on screen after the speaker stops.

  3. The expansion. "Hoy vamos a reencuadernar un libro de bolsillo" is a faithful translation, but at 46 characters it is too long for one line, and the cue is too fast to read. The clean version uses "Hoy reencuadernamos un libro de bolsillo", which keeps every detail in 40 characters.

The script does not judge translation quality. A track can pass every check and still mistranslate a term. It catches the structural problems that are easy to miss when you only read the text.

Step 5: Upload Each Language With Timing

YouTube's upload guide describes the path: open Subtitles in YouTube Studio, choose the video, add the language, then click Add under Subtitles, choose to upload a file, and pick With timing or Without timing before selecting the file.

Choose With timing for a translated SRT or VTT. The file already has the timestamps you just checked.

Do not use Without timing or Auto-sync for a translation. Auto-sync times a plain transcript against the audio, and YouTube says the transcript "must also be in the same language that's spoken in the video." A Spanish transcript for an English-language video does not meet that requirement. Auto-sync is useful for the source language, not for translated tracks.

Check two more things before you publish:

  • Language label. Add the track under the correct target language. A Spanish file uploaded as Portuguese will appear to viewers who chose Portuguese.
  • Title and description. Translated subtitles do not translate your title or description. YouTube handles those separately as a title and description translation in the same Subtitles section of Studio; see Translate your own video titles & descriptions.

Step 6: Watch the Published Track

Watch the start, a fast-dialogue section, and the last minute of the video with the new language selected in the player. These checks catch problems that a file check cannot:

  • on-screen text or lower-thirds covered by the caption;
  • a cue that is technically on time but splits a punchline or a key term;
  • characters that display as boxes because the source was not saved as UTF-8 (see how to fix subtitle encoding);
  • a target-language line that reads correctly but is too dense to finish at normal speed.

If you need a subtitle editor, review platform, or another translation tool, the subtitle translation software comparison covers when each type of tool is worth the extra setup.

A Pre-Upload Checklist

Use this list for every target language:

  • Source track corrected and published before translation
  • Downloaded file is UTF-8 and in a format your translation tool accepts (convert SBV to SRT if needed)
  • Translated file has the same cue count as the source
  • Every start and end time matches the source
  • No line longer than your limit, and no cue faster than your reading-speed limit
  • Track uploaded With timing under the correct language
  • Title and description translated separately, if needed
  • Track watched in the player at the start, a fast section, and the end

The order is the point. Each step is easier to fix before the next one: a name corrected in the source costs one edit, while the same error found after publishing costs one edit per language.

ተዛማጅ ልጥፎች