Free tool
Dual subtitle maker: merge two subtitle files into one
Two languages in one .srt, .vtt or .ass file, made in your browser
Choose a subtitle file in the language you are learning and one in a language you already know. The tool pairs every line by its timing, lets you shift a file that runs early or late, and saves one .srt, .vtt, .ass or Anki file. Your files never leave this browser tab.
How the two files are paired
Most subtitle mergers join cue 1 to cue 1 and cue 2 to cue 2. That breaks the moment two releases split a sentence differently — one file shows a two-line cue where the other has two short cues — and from there every pair is wrong until the end of the film.
This one pairs by time. Each translation line joins the line of your learning file it overlaps the most. A line that overlaps nothing joins the nearest line within one second; beyond that it is left out and counted in the result, so a timing problem shows up before you press play rather than halfway through the film. The file in the language you are learning sets the timing, because it is the one you are reading.
A translation that is early or late by a constant amount needs a shift. One that starts in sync and drifts further out was timed for a different frame rate, and the frame-rate correction rescales it. Watch the pairing count in the result as you adjust either: it rises when the two files come into line.
Which file to download
- .srt
- For VLC, mpv, Plex, Kodi and most players that accept an external subtitle file. Each cue shows the language you are learning with the translation on the line beneath it.
- .vtt
- For HTML5 video players and course platforms that ask for WebVTT. The same two lines per cue.
- .ass
- For players that render styled subtitles, such as VLC and mpv. The language you are learning stays at the bottom and the translation moves to the top of the picture in a different colour, so the two never cover each other.
- Anki cards (.txt)
- A tab-separated file with one note per paired line: the sentence, its translation and the timestamp. Lines without a translation are left out, because a card with nothing on the back teaches nothing.
When the letters come out wrong
Older subtitle files — Serbian, Croatian, Bosnian, Polish, Russian, Greek, Turkish and Arabic ones especially — are often saved in a Windows code page rather than UTF-8. Read as the wrong encoding, Serbian č turns into è and Cyrillic turns into a run of accented Latin letters.
The tool recognises UTF-8 and UTF-16 by itself. For anything else it guesses between the Central European, Cyrillic and Western European code pages from the bytes, and says so when it guessed. If the preview still looks wrong, choose the encoding by hand. Every download is saved as UTF-8, so the merged file displays correctly from then on.
When you do not need a file at all
On YouTube and Netflix, NoaLingua shows both languages over the player in desktop Chrome with no subtitle file to find. Every word in the line is clickable, a sentence can be saved with its context, and on YouTube the translation is fetched ahead so it is ready when the line appears. See dual subtitles on YouTube and dual subtitles on Netflix.
A merged file is the better route wherever an extension cannot run: a smart TV, a tablet, a media server or a film on your own disk. Why that limit exists is explained in do dual subtitles work on the Netflix app.
Have only one subtitle file and want to read it rather than watch it? NoaLingua’s reader imports .srt and .vtt and turns it into two columns of prose with clickable words. For flashcards, the YouTube subtitles to Anki guide covers the whole sentence-mining route.
Add to Chrome — Free Add to Chrome Opens the Chrome Web Store listing NoaLingua — beyond dual subs: video, web, PDF — free, no account, Chrome 138 or newer.
Questions about merging subtitle files
Are my subtitle files uploaded anywhere?
No. The page reads both files with your browser’s own file API and builds the result in memory. The site is static files with no endpoint that could receive an upload, and its security policy blocks requests to other servers. Closing the tab discards everything.
Why do my two subtitle files not line up?
They almost always come from different releases of the video. If the translation is early or late by the same amount throughout, enter that gap as a shift. If it starts in sync and drifts further out as the film goes on, the two releases run at different frame rates, most often 25 and 23.976 frames per second, and the frame-rate correction fixes it.
Which subtitle files can it read?
SubRip (.srt) and WebVTT (.vtt), in UTF-8, UTF-16 or one of the older Windows, Japanese, Chinese and Korean encodings. It does not read .ass, .sub or subtitles embedded inside a video file; extract those to .srt with your video software first.
Can it translate a subtitle file for me?
No. It pairs two files that already exist and never invents a translation. If you only have one language, NoaLingua translates YouTube captions sentence by sentence while you watch, and its reader turns an imported .srt into two columns of text with clickable words.
How do I load the merged file in VLC?
Give the .srt the same name as the video and keep it in the same folder, or drag the file onto the playing video. Both lines of every cue appear together. The .ass file keeps the two languages apart, with the translation at the top of the picture.
On YouTube and Netflix, see both languages without making a file
Free, with every feature. No account, nothing to cancel, and your deck stays on your machine.
Add to Chrome — Free Add to Chrome Opens the Chrome Web Store listing NoaLingua — beyond dual subs: video, web, PDF — free, no account, Chrome 138 or newer.- Free, and not a trial Every feature on the free plan — both PDF modes, shadowing, all 30 practice formats.
- No account, no email Nothing to sign up for and nothing to cancel. There is no login screen at all.
- Two dropdowns to set up Pick what you are learning and what you want translations in. That is the whole setup.
- Your words stay yours Export to Anki, CSV, a spreadsheet or a full JSON profile — free on every plan.