Skip to main content
SubtitleMatrix

Split Bilingual Subtitles Into Two Files

Text and stylingSplit a bilingual file into two tracks
Or paste subtitle text

Options

A bilingual file normally holds two writing systems — Latin above Chinese, Japanese above Korean — and that is what the default reads: each line's letters decide which file it belongs in, and the language that appears first in the file becomes the first file. It is not a guess about meaning, only about script, so it never mixes up which side is which once it has seen the first line. What it cannot do is tell two languages that share an alphabet apart. An English file against a Spanish one, or a Russian one against a Ukrainian one, reads as one writing system — and so does an ordinary monolingual file whose long lines are wrapped onto a second row, which is the common case and the reason this reading is deliberately cautious. When every line of every cue reads as the same writing system, nothing comes out: the file goes through unchanged and the run is reported as having changed nothing. That is the signal to pick line position instead. Choosing line position makes that the rule everywhere: the first line of each cue goes to the first file and the rest to the second. That fits a file whose two languages are always on the same lines, and it is the only way to split a pair that shares an alphabet — but on a file where the order varies it will divide the wrong lines, and unlike the default it says nothing about having done so.

Which frame rate the timings are counted in. On the format pages this is what MicroDVD needs, because it stores timing as frame numbers. On the frame rate pages it is the rate the file was timed against — the version the subtitles were made for — and the page's second box takes the rate of the video you are going to use them with. 23.976, 24, 25, 29.97, 30, 50, 59.94 and 60 are the common ones. Getting it wrong shifts the whole timeline, and on the frame rate pages it shifts it by a ratio rather than by a fixed amount.

This page takes one subtitle file that holds two languages and gives you back two files, one language in each. That is the file most bilingual releases ship as: the original on the first line of each cue, the translation on the second. Splitting it is what you need before handing the two languages to different people — the translator who has to revise their own text without touching yours, the caption house delivering each language as its own track, the platform that takes one subtitle file per language and will not accept a file with two.

The two files come out of the run together, packaged in a zip. That is not decoration: the browser only lets one download start from a single click, so two separate save buttons would mean the second file silently never arrives. The two are equals — neither is the original — and they carry the same name as your file with the language added before the extension, so film.srt is handed back as film.srt and film.cjk.srt inside film.zip. Do one file at a time, or drop a whole season in and every file is split on its own.

Which line belongs to which language is decided from the writing system the line is written in, not from its position in the cue. An English line above a Chinese one, a Japanese line above a Korean one, a Greek line above an Arabic one — the letters themselves say which file each line goes to, and the language that appears first in the file becomes the first file. Line order is not used because translators do not respect it: a file where the translation is sometimes above and sometimes below would be cut in the wrong places by a rule that counted rows, while the writing system keeps working all the way down.

What the writing system cannot do is tell apart two languages that share an alphabet. English above Spanish, Russian above Ukrainian — at the level of letters those are one writing system, and so, unavoidably, is an ordinary monolingual file whose long lines are wrapped onto a second row. A tool that guessed there would take the single most common subtitle file in existence and hand back two files each holding half a sentence. So this page does not guess: when every line of the file reads as the same writing system, nothing comes out and the run is reported as having changed nothing, which is the plain truth and a signal to switch the option to line position — the first line of each cue to the first file, the rest to the second. That is the only rule that can split a same-alphabet pair, and the page says so instead of quietly dividing your file the wrong way.

Ten formats go in: SRT, WebVTT, ASS, SSA, SBV, SAMI, TTML, JSON and CSV, plus MicroDVD, whose frame numbers are read and written at the frame rate you set. LRC is left out because it stores no end time, so there is no cue to split, and plain text is left out because it has no timings at all. Both files keep the times they came in with, and both keep the number each cue had in the source file — which is why the first file may run 1, 3, 4 where the second runs 1, 2, 3, 4. A missing number is not a mistake; it is how the first file says that cue belongs to the other language. Nothing is uploaded, nothing is registered, and the splitting happens in this browser tab.

Examples

English above Chinese, split into two files

Input

1
00:00:01,000 --> 00:00:03,000
Good morning.
早上好。

2
00:00:05,000 --> 00:00:07,000
How are you?
你好吗?

Output

First file (film.srt):
1
00:00:01,000 --> 00:00:03,000
Good morning.

2
00:00:05,000 --> 00:00:07,000
How are you?


Second file (film.cjk.srt):
1
00:00:01,000 --> 00:00:03,000
早上好。

2
00:00:05,000 --> 00:00:07,000
你好吗?

The ordinary case. Each line is read on its own, so it does not matter that the Chinese line is the second one in every cue — the letters decide. Both files keep the original timings and the original cue numbers, which is what makes it safe to lay the two files side by side afterwards and check them against each other.

A cue that exists in only one of the languages

Input

1
00:00:01,000 --> 00:00:03,000
Good morning.
早上好。

2
00:00:05,000 --> 00:00:07,000
(敲门声)

3
00:00:09,000 --> 00:00:11,000
See you soon.
再见。

Output

First file (film.srt):
1
00:00:01,000 --> 00:00:03,000
Good morning.

3
00:00:09,000 --> 00:00:11,000
See you soon.


Second file (film.cjk.srt):
1
00:00:01,000 --> 00:00:03,000
早上好。

2
00:00:05,000 --> 00:00:07,000
(敲门声)

3
00:00:09,000 --> 00:00:11,000
再见。

The middle cue is a sound effect written only in the translation, so there is nothing in it to divide: the whole cue moves to the second file, and the first file jumps from 1 to 3. That gap is deliberate. It is the one visible sign in the first file that a cue belongs to the other language, and it disappears if the file is renumbered.

English and Spanish, which the default cannot tell apart

Input

1
00:00:01,000 --> 00:00:03,000
Good morning.
Buenos días.

2
00:00:05,000 --> 00:00:07,000
How are you?
¿Cómo estás?

Output

With the split set to line position (film.srt):
1
00:00:01,000 --> 00:00:03,000
Good morning.

2
00:00:05,000 --> 00:00:07,000
How are you?


With the split set to line position (film.latin.srt):
1
00:00:01,000 --> 00:00:03,000
Buenos días.

2
00:00:05,000 --> 00:00:07,000
¿Cómo estás?

Two languages, one alphabet, so no rule based on letters can separate them — which is exactly why the run does nothing until the split is changed to line position. It works here because both languages are always on their own line in the same order. If your file mixes the order up from cue to cue, line position will cut the wrong lines, and unlike the default it will not tell you afterwards.

Frequently asked questions

How does the page work out which line is written in which language?

From the writing system of each line, read letter by letter: Latin, Chinese, Japanese kana, Korean hangul, Cyrillic, Arabic, Hebrew, Greek and Devanagari are all told apart, and Chinese and Japanese count as one side because a Japanese file mixes both. The language that appears first in your file becomes the first of the two files, so an English-over-Chinese file comes back as English plus Chinese. Digits, punctuation, notes and music symbols count as no language at all: they stay with the first file when they sit inside a cue that has both languages, and they never cause a cue to be divided.

I split an English and Spanish file and got the same file back. Why?

Because at the level of letters those two are one writing system, and so is any monolingual file whose long lines are wrapped onto a second row. A tool that guessed would take the most common subtitle file there is and hand back two files each holding half a sentence, so this page refuses to guess and reports that nothing changed. Set the split to line position and run it again: the first line of each cue goes to the first file and the rest to the second. That is the only rule that separates languages sharing an alphabet, and it needs your file to keep the two languages on the same lines throughout.

Do I get one file with both languages, or two files?

Two files, packaged together in a zip named after yours: film.srt is handed back as film.srt and film.cjk.srt inside film.zip, with the language marked before the extension. Two save buttons would not work, because a browser allows one download per click and the second file would quietly never arrive. If you would rather have both languages in a single file — the original above the translation — that is the merge page, which does the opposite of this one.

Which of the two files counts as the original?

Neither. The page has no way to know which language is the source and which is the translation, so it does not pretend to: the file that holds the language appearing first in your input becomes the first file, and the two are equal everywhere else — in the zip, in the results list, and in the names, which differ only by the language tag. If you need the original specifically, look at which file came back with the language you expect on the first line of the first cue.

Does splitting change the timings, or drop anything?

No. Both files keep the starts, ends and cue numbers the source file had, so a cue in the first file is at exactly the moment it was before. The one thing to read is the report after the run: it is empty in the ordinary case, and it names the count of cues that had to be divided by line position because their lines carried no letters at all — music cues and bracketed sounds. Those cues keep their first line in the first file and the rest in the second, so neither file loses the sound, but where the cut fell is a guess and the report says so.

Which formats can be split this way, and are my files uploaded?

SRT, WebVTT, ASS, SSA, SBV, SAMI, TTML, JSON and CSV, plus MicroDVD, whose frame numbers are read and written at the frame rate you set — a bilingual file there is one line with both languages separated by a bar. LRC and plain text are not accepted, because LRC stores no end time and text stores no timings, so neither has a cue to divide. Nothing is uploaded: your file is read, split and written back inside this browser tab, which is the point for anyone whose material is not allowed to leave their machine.

Related tools