CapsAI

Formats

How to merge SRT files: join two parts or combine two languages

Merge SRT files two ways: join CD1 and CD2 with part 2 shifted by part 1's length, or stack two languages in one file. Browser, Subtitle Edit and FFmpeg steps.

Published 21 Oct 2026

To merge SRT files, first decide which merge you need, because there are two different jobs. Joining puts part 2 after part 1, as with a film split into CD1 and CD2 or a recording that stopped and restarted: every timestamp in part 2 must move later by the length of part 1, and the cue numbers must continue. Combining two languages lays one file over the other so each cue shows both languages, one above the other: no timings move, and lines that play at the same time are stacked.

Both jobs take a minute in the free SRT merger, which runs in your browser, or in Subtitle Edit on the desktop. People also search "merge SRT with MP4", which is a third job: putting the subtitles into the video file. That is covered at the end. Steps below were checked on 21 October 2026.

Which merge do you need?

Your situationWhat has to happenGood tools
Movie in two parts, CD1 and CD2Shift part 2 by part 1's length, then renumberSRT merger, Subtitle Edit Join
Recording split into two filesSame as aboveSRT merger, Subtitle Edit Join
A forced track plus a full track for the same videoKeep all timings, sort by start timeSubtitle Edit Join with Keep time codes
English file plus a Spanish file for the same videoPair overlapping lines, stack them in one cueSRT merger, Subtitle Edit Merge two subtitles
SRT plus an MP4Not a text merge: add a track or burn it inFFmpeg, HandBrake

Joining part 1 and part 2

Each SRT counts time from the start of its own video. The first line of part 2 might say 00:00:04,200, but in the joined file it has to appear 4.2 seconds after part 1 ends. So the offset is the length of part 1's video, not the end time of part 1's last subtitle. A subtitle file doesn't record how long its video runs, and there is usually silence or credits after the last line.

Here is the arithmetic for a part 1 that runs 52 minutes 10.480 seconds and ends with cue 712:

Cue in part 2Original timingAfter a +52:10.480 shiftNew number
100:00:04,200 to 00:00:06,80000:52:14,680 to 00:52:17,280713
200:00:07,900 to 00:00:10,05000:52:18,380 to 00:52:20,530714

Read the length from the video file's properties or your player, to the millisecond if it shows them. If you round to the nearest second, every line in part 2 can be up to half a second early or late.

In the browser: the SRT merger

  1. Open the SRT merger and add part 1 and part 2 in that order.
  2. Enter part 1's video length as the offset for part 2.
  3. Download the joined file, open it and check that the first line of part 2 now starts just after part 1's length.

The files are read in your browser and are not uploaded, which matters if the subtitles belong to an unreleased project.

On the desktop: Subtitle Edit's Join tool

Subtitle Edit is a free, open-source subtitle editor for Windows, macOS and Linux; version 5.3.0, released 14 October 2026, is the latest stable build on its GitHub releases page. Its Join subtitles documentation describes the tool:

  1. Open Tools > Join subtitles...
  2. Click New to add each file, or drag them onto the list, and put them in order: part 1 first.
  3. Choose Append time codes. Subtitle Edit shifts each file so it starts after the previous one, and Add ms after each file adds extra time at each join.
  4. Click Join, then save the result as SubRip.

The docs don't say whether "after the previous one" is measured from the previous file's last line or from something else, so check the join point. Play the first few lines of part 2 against the video. If they are early by a fixed amount, select them and use Synchronization > Adjust all times..., which can shift selected lines only. Tools > Renumber... rewrites the numbers if they need to start somewhere else.

The other option, Keep time codes, leaves every timing alone and sorts all lines by start time. It is for files that already share one timeline, such as a forced-subtitle track and a full track that is missing those lines. Using it on part 1 and part 2 would interleave the two halves.

With FFmpeg's concat demuxer, and its catch

FFmpeg can join files with its concat demuxer. Its formats documentation says the timestamps are adjusted so each file starts where the previous one finishes, and that the duration of each file is used to place the next one. For a subtitle file, that duration comes from the subtitles, not from the video, so part 2 lands too early unless you set the duration yourself with the duration directive. A list file for the example above, saved as list.txt:

ffconcat version 1.0

file part1.srt

duration 3130.48

file part2.srt

Then run ffmpeg -f concat -i list.txt -c copy joined.srt and play the result across the join. Three caveats from the same documentation: all files must have the same streams, so join SRT with SRT only; by default the demuxer rejects unsafe file paths, so keep simple file names in the same folder; and the concat section never mentions subtitles, so treat this as a route for people who already use FFmpeg and check the output.

By hand, for short files

Open both files in a plain-text editor. Paste part 2 into the subtitle time shift tool, shift it by part 1's length in seconds (3130.48 in the example), copy the result and paste it under part 1 with one blank line between the last cue and the first. The shifted part restarts its numbering at 1, so renumber it by hand or in Subtitle Edit. This is fine for a 20-line file and painful for a 700-line one.

Combining two languages into one bilingual SRT

A bilingual file shows, for example, the English line on top and the Spanish line below it in one cue. The tool pairs each English cue with the Spanish cue that plays at the same time and writes both texts into one block:

TimeEnglish fileSpanish fileBilingual cue
00:01:02,100 to 00:01:04,000Where were you?¿Dónde estabas?Where were you? / ¿Dónde estabas? on two lines
00:01:04,300 to 00:01:06,900At the station.En la estación.At the station. / En la estación. on two lines

The timings rarely match to the millisecond, because each file was timed separately. Subtitle Edit's Merge two subtitles documentation handles that by pairing lines by overlap, and its menu is Tools > Merge two subtitles... With SubRip output it stacks subtitle 1's text over subtitle 2's. With Advanced SubStation Alpha (.ass) output, each language keeps its own style, so you can put the original at the top of the frame and the translation at the bottom. The SRT merger also combines two languages into one SRT in the browser.

Two lines per language means four lines on screen, which covers a lot of picture. Where you can, keep each language to one short line. If you only want viewers to choose a language rather than see both at once, don't merge: keep two separate files, or two tracks in the video.

"Merge SRT with MP4": muxing or burning

When people say they want to merge an SRT with an MP4, they mean one of two things.

Add it as a track (soft subtitles). The text sits inside the video file as a track viewers switch on and off, and the picture isn't touched. In FFmpeg, an MKV takes the SRT as it is:

ffmpeg -i video.mp4 -i subs.srt -map 0 -map 1 -c copy video-with-subs.mkv

An MP4 needs the text converted to MP4's own timed-text format, mov_text, so add one option:

ffmpeg -i video.mp4 -i subs.srt -map 0 -map 1 -c copy -c:s mov_text video-with-subs.mp4

Adding -metadata:s:s:0 language=eng before the output name labels the track as English in players that show track languages. In HandBrake, import the SRT on the Subtitles tab and leave Burn In unticked; HandBrake's subtitle documentation says soft subtitles appear as separate selectable tracks, and that WebM files can't carry them.

Burn it in (hard subtitles). The text is drawn into every frame, so it shows on every player and app, including feeds that autoplay on mute. Exact HandBrake, VLC and FFmpeg steps are in burn subtitles with HandBrake, VLC or FFmpeg.

If you don't have an SRT and just want captions on a short video, CapsAI works differently: it cannot take an SRT as input. It transcribes the speech in your MP4 or MOV, up to 10 minutes per video, and burns its own styled captions into a new MP4, as described on burn subtitles into video. If you already have a subtitle file you trust, use the steps above instead.

Check the merged file before you use it

  • Play the join point. Watch the last lines of part 1 and the first lines of part 2 in the joined file, then one line near the very end.
  • Match the encodings. If part 1 is UTF-8 and part 2 was saved in an older Windows encoding, accented letters break in one half only. Check both files first with the subtitle encoding checker.
  • Keep the originals. A merged file is hard to split cleanly by hand, so don't overwrite the source files.

What to do next

For a quick join or a two-language file, open the SRT merger, add both files and download the result. Use Subtitle Edit when you also want to fix timings or styles in the same session, and FFmpeg or HandBrake when the subtitles need to go inside the video file.

Frequently asked questions

How do I combine two SRT files into one?

If they are part 1 and part 2 of one video, shift every timing in part 2 later by the length of part 1's video and continue the numbering, using the SRT merger or Subtitle Edit's Tools > Join subtitles with Append time codes. If they are two languages for the same video, use a bilingual merge, which stacks the lines that play at the same time instead of moving any timings.

How much should I offset the second SRT file?

By the exact length of part 1's video, not the end time of part 1's last subtitle. Read the duration from the video file's properties or your player, to the millisecond if possible. If part 2's lines then appear early or late by a fixed amount, shift them again with a time shift tool.

How do I make a bilingual SRT with two languages at once?

Use a tool that pairs lines by time and stacks them, such as Subtitle Edit's Tools > Merge two subtitles or the SRT merger. Subtitle Edit's documentation says timings don't need to match exactly because lines are paired by overlap. Saving as .ass instead of .srt lets each language have its own style and position.

Can FFmpeg merge SRT files?

Its concat demuxer can join files one after another, but it places each file using that file's own duration, which for a subtitle file comes from the subtitles rather than the video. Set the duration directive for part 1 to its video length in the list file, keep simple file names in one folder, and check the result across the join.

How do I merge an SRT with an MP4?

Either add it as a selectable track or burn it into the picture. For a track, FFmpeg can copy the video and audio and add the SRT, using -c:s mov_text for an MP4 or no conversion for an MKV; HandBrake does the same when Burn In is left unticked. For text that always shows, burn it in with HandBrake, VLC or FFmpeg.

Can CapsAI merge or import SRT files?

No. CapsAI cannot take an SRT as input and does not export one. It transcribes the speech in an MP4 or MOV up to 10 minutes long and burns its own captions into a new MP4. The free SRT merger on capsai.co is a separate browser tool that works on subtitle files you already have.

See Your Subtitles in Action

Try a style and language for your next video.

Vertical video with sample captions
Upload Your Video

Related CapsAI tools