subtitle · 8 min read

How to make bilingual subtitles

Two files, one screen, and a disagreement about when every line begins. Something has to give, and it is worth choosing what.

Dual subtitles — the source language and a translation, both on screen — are almost never available as a download. Streaming services carry one track at a time, most players display one track at a time, and the two files you have were produced independently by people who never spoke to each other.

So you make them, by combining two tracks into one file where each cue carries both languages as two lines. The mechanics take a minute. Understanding what the merge throws away takes slightly longer, and skipping that is how people end up with a file that is subtly wrong in a way they notice forty minutes in.

Why one track has to give up its timing

Two translations of the same scene do not break their lines in the same places, and there is no version of this where they do.

A sentence that fits one English cue needs two in Arabic, because the same meaning takes more characters. A pause that an English subtitler treated as the end of a line, a German one carried straight through. Both are right. They are two independent readings of the same speech, and their cue boundaries land in different places by a few hundred milliseconds at best and by whole cues at worst.

A single file has one set of cue boundaries. So when the two are combined, one track’s boundaries are used and the other’s are discarded — not averaged, not split, discarded. The second language is fitted into the first language’s cues, appearing and disappearing on its schedule.

Which is why the order matters. Load the better-timed language first. That is usually the language the video is in, because it was timed against the speech rather than against another subtitle file. It is also the language whose sync errors you will notice, since you can hear it.

Doing it

The subtitle merger takes both files, reads them in your browser, and pairs each cue in the first track with anything in the second that is on screen at the same moment. Load the first language, load the second, choose two languages at once, download.

Two things it reports that are worth reading. Paired is the number of cues where both tracks had something to say — if that number is far below the cue count, the two files are not in sync with each other and merging them will produce mismatched pairs. Unpaired is cues in the second track with no partner; they are kept as cues of their own rather than dropped, because a line somebody wrote should not disappear because the other language happened to be silent.

The language loaded first appears on the top line, because players render the lines of a cue in the order they are written. Swap the files to swap the lines.

The four ways this goes wrong

1. The two files are not in sync with each other

This is the one to check before merging, not after. If one track is two seconds behind the other, the pairing is wrong everywhere — line one of English sits above line two of Arabic — and the resulting file is nonsense in a way that is hard to unpick afterwards.

Play each file separately against the video first. If one of them is out, fix it on its own before combining, and check whether it is an offset or drift — because a drifting track paired against a correct one produces a file that starts fine and degenerates.

2. The combined track reads too fast

Two lines is roughly twice the characters in exactly the same seconds. A cue at 15 characters per second in one language is at 30 in two, which is past the point where anybody is reading rather than skimming.

This is not a fault in the merge — it is the arithmetic of putting two things where one was. It is worth knowing about, because it is the reason bilingual tracks feel harder than either language alone even when both are correct. Measure the merged file, and expect the numbers to roughly double.

3. The block is now four lines tall

If both languages ran to two lines, the merged cue has four, and a four-line block covers a substantial part of the frame. Two lines is the normal maximum for a reason.

The line length checker with the limit set to two will list every cue in that state. The fix is editorial — shortening one language so it fits on a single line — and there is no mechanical version of it.

4. Two scripts in one cue, running in different directions

An English line above an Arabic one is left-to-right above right-to-left. Players handle this variously and some handle it badly, putting the punctuation of the Arabic line at the wrong end. It is a rendering problem rather than a file problem, and the only real answer is to test the merged file in the player it will actually be watched in before committing to it.

The other kind of merge

"Merge subtitles" means a second, unrelated thing: a film that arrived in two parts, with two subtitle files, where the second starts its clock again from zero.

That needs the second file shifted by the running time of the first before it is appended — and the running time of the first video file, not the timestamp of its last subtitle, because the last line of dialogue comes some way before the end. Using the final cue puts the whole of part two early by the length of the closing scene, every time.

It is the exact reverse of splitting a track, and the two use the same number: the offset you merge with is the time you would cut at.

Questions

How do I show two subtitle languages at the same time?

Merge the two tracks into one file, so each cue carries both languages as two lines. Most players will only display one subtitle track at a time, so a single combined file is the reliable way to do it.

Which language should go first?

The one whose timing you want to keep, and — separately — the one you want on the top line. Merging fits the second track to the first track’s cue boundaries, so put the better-timed language first.

Why does my second language lose its own timing?

Because two tracks cannot both keep their cut points and still be one track. Where the two translations disagree about when a line starts, one has to win, and it is the one loaded first.

Are bilingual subtitles good for language learning?

They are popular for it, with one caveat worth knowing: two lines of text is roughly twice the reading in the same seconds, so cues that were comfortable in one language often go past too fast in two.

Can I merge subtitle files in different formats?

Yes. Each file is read on its own, so a SubRip file can be merged with a WebVTT, ASS or SBV one. Only the output has to settle on a single format.

Tools from this guide

More subtitles tools — all of them running in your browser, none of them uploading a file.