Subtitle guide
How to extract subtitles from MKV and MP4 files
7 min read Updated July 6, 2026
A video file like an MKV or MP4 is a container, a wrapper that can hold a video stream, several audio tracks and, quite often, one or more subtitle tracks all in the same file. If a video plays with selectable subtitles even though there is no .srt file sitting next to it, the subtitles are embedded inside the container. And you can get them out.
Why would you want to? The usual reasons apply. You need the subtitles as a separate file for a device or player that cannot read embedded tracks, you want to edit or re-time them, you want to translate them, or you want to keep just the text and delete the enormous video. Whatever the goal, extraction is a five-minute job with free tools, as long as you know which kind of subtitle track you are dealing with.
First, check what kind of track it is
This is the step that saves you the most frustration. Embedded subtitles come in two fundamentally different flavours.
- Text-based tracks store the subtitles as actual text with timestamps. This covers SubRip (SRT), ASS/SSA and MP4’s own
mov_textformat. These extract cleanly into an editable file. - Bitmap tracks store the subtitles as pictures of text. PGS (common on Blu-ray rips,
.sup) and VobSub (from DVDs,.sub/.idx) work this way. There is no text inside, only images, so no tool can simply “convert” them to SRT. The images have to be read by OCR (optical character recognition) first.
The fastest way to check is with FFmpeg (see below). Run it against the file with no output and read the stream list it prints. A line like Stream #0:2(eng): Subtitle: subrip is text, which is great news. hdmv_pgs_subtitle or dvd_subtitle means bitmaps, and you should skip ahead to the OCR section.
Extracting with FFmpeg (MKV and MP4)
FFmpeg is a free command-line tool and the Swiss army knife of media work. It handles both MKV and MP4, and it can convert the track to SRT during extraction.
First, list the streams in the file.
ffmpeg -i movie.mkv
Look through the output for Subtitle streams and note the language tags. Then extract the first subtitle track as an SRT.
ffmpeg -i movie.mkv -map 0:s:0 subtitles.srt
0:s:0 means “from the first input, the first subtitle stream”. For the second subtitle track use 0:s:1, and so on. The same command works on MP4 files, where FFmpeg converts the mov_text track to SRT automatically.
ffmpeg -i movie.mp4 -map 0:s:0 subtitles.srt
If the embedded track is ASS/SSA and you want to keep its styling, extract to .ass instead of .srt. You can always convert it to SRT later if a player needs it.
Extracting with MKVToolNix (MKV, with a GUI)
If you would rather click than type, MKVToolNix is the standard free toolkit for MKV files, and its gMKVExtractGUI companion (or the built-in extraction in many builds) makes this point-and-click. Open the MKV, tick the subtitle track, extract. The command-line version is one line,
mkvextract tracks movie.mkv 2:subtitles.srt
where 2 is the track number shown by mkvinfo or MKVToolNix’s track list. Note that mkvextract exports the track in its native format. If the track is ASS, you get an .ass file. If it is PGS, you get a .sup file of images, which brings us to the next section.
When the track is bitmaps, you need OCR
If extraction hands you a .sup or .sub/.idx file, the subtitles are images and need OCR to become text. The best free tool for this is Subtitle Edit (Windows, works on Mac and Linux via Mono). Open the file and it walks through the images, recognises the text, and lets you correct anything it misreads before saving as SRT.
Two honest warnings from experience.
- OCR is not perfect. Expect to fix a handful of misread characters. The usual suspects are
l/Iconfusion, italics, and accented letters. Budget ten minutes of proofreading, not zero. - Burned-in subtitles cannot be extracted at all. If the subtitles are part of the picture itself (they appear even with every subtitle track disabled), they were rendered into the video frames during encoding. No demuxing tool can recover them. The only route is specialised video-OCR software, and results are rough. This is one reason to prefer soft subtitles when you create videos.
After extraction, give the file a cleanup pass
Extracted tracks are often not quite ready to use.
- Wrong format for the target player. Smart TVs and older devices mostly want SRT. If you extracted ASS or VTT, convert it in a few seconds.
- Timing made for a different cut. A subtitle track ripped from one release may not match your copy of the video. If every line is off by the same few seconds, shift the timing. If it drifts further out as the video plays, it is a frame-rate mismatch, explained in our frame rate guide.
- Stray styling tags. Tracks converted from ASS sometimes carry
{\an8}positioning codes or font tags that some players display as literal text. A quick pass through a cleanup tool strips these.
In short
Embedded subtitles are just another stream in the container, and getting them out is routine. FFmpeg (-map 0:s:0) handles anything, while MKVToolNix gives MKV files a friendlier workflow. The one real complication is track type. Text tracks extract straight to an editable SRT, while bitmap tracks (PGS and VobSub) need an OCR pass in Subtitle Edit first, and burned-in subtitles cannot be extracted at all. Once the track is out, give it thirty seconds of attention on format, timing and stray tags, and it will behave like any other subtitle file.