Pull the subtitle tracks that are embedded inside an MKV, WebM, MP4 or MOV video and save them as separate SRT, VTT or ASS files. Every track is listed with its language, format and line count, and you can preview, search and shift the timing before downloading.
Last updated:
Reading…
video.mkv
Size
–
Container
–
Length
–
Subtitle tracks
–
Preview
Advertisement
Advertisement
How to use the Subtitle Extractor
Choose your video: drop an MKV, MP4, WebM or MOV file on the box. Only the parts of the file that hold subtitles are read.
Check the track list: each embedded subtitle track shows its language, name, format and number of lines.
Pick the output format (SRT, VTT, ASS or original) and, if needed, shift the timing or turn off formatting tags.
Press Preview to read and search the lines of a track before saving it.
Press Download next to a track, or Download all tracks as a ZIP.
Subtitle formats you will find inside videos
Format
Codec ID
Usual container
Text or image
Extracted as
SubRip (SRT)
S_TEXT/UTF8
MKV
Text
SRT, VTT or ASS
Advanced SubStation (ASS / SSA)
S_TEXT/ASS, S_TEXT/SSA
MKV (anime and fansubs)
Styled text
ASS with all styling, or SRT / VTT
WebVTT
S_TEXT/WEBVTT, D_WEBVTT, wvtt
WebM, MKV, MP4
Text
VTT, SRT or ASS
MPEG-4 timed text (mov_text)
tx3g
MP4, M4V, MOV, phone videos
Text
SRT, VTT or ASS
QuickTime text
text
MOV
Text
SRT, VTT or ASS
TTML / IMSC
stpp
MP4 (broadcast)
Text (XML)
SRT, VTT or ASS
PGS
S_HDMV/PGS
MKV, M2TS (Blu-ray)
Images
Needs OCR, not supported
VobSub
S_VOBSUB
MKV, MP4 (DVD)
Images
Needs OCR, not supported
How the extraction works
MKV and WebM. A Matroska file is a tree of EBML elements. The tool reads the Tracks element to find subtitle tracks (track type 17), then walks every Cluster, looking only at the track number of each block. Blocks that belong to a subtitle track are kept: the block time plus the cluster time gives the start, and the BlockDuration gives the end. Video and audio frames are skipped by their size, so a 10 GB movie is scanned without being loaded into memory. Tracks compressed with zlib or header stripping are unpacked, and ASS tracks keep the script header stored in CodecPrivate so the styles survive.
MP4 and MOV. The tool reads the moov index, finds tracks with a subtitle or text handler, and rebuilds every sample's position and time from the sample tables (stsz, stsc, stco/co64 and stts). Each tx3g sample is a 2-byte length followed by the UTF-8 text; empty samples are gaps between lines and are skipped.
Timestamp formats compared
Format
Example
Precision
SRT
00:01:02,345 --> 00:01:04,800
Milliseconds, comma before the milliseconds
VTT
00:01:02.345 --> 00:01:04.800
Milliseconds, full stop before the milliseconds, file starts with WEBVTT
Tip: name the extracted file like the video with a language code before the extension, for example movie.eng.srt or movie.spa.forced.srt. Players such as VLC, mpv, Plex and Jellyfin then pick it up automatically and show the right language in the subtitle menu. The tool uses this naming scheme for every download.
Frequently asked questions
How do I extract subtitles from an MKV file?
Drop the MKV file on the tool. It reads the Matroska track list and every subtitle block, then shows each track with its language. Press Download next to the track you want and it is saved as an .srt file (or VTT or ASS if you choose). Nothing is re-encoded, so the text and timing are exactly what is stored in the video.
Can it extract subtitles from MP4 files?
Yes. MP4, M4V and MOV files store subtitles as timed text tracks (mov_text / tx3g, the format most converters and phones use), WebVTT tracks or TTML tracks. The tool reads the MP4 sample tables and converts the cues to SRT, VTT or ASS.
Why can't my PGS or VobSub subtitles be saved as SRT?
PGS (from Blu-ray discs) and VobSub (from DVDs) subtitles are images of text, not text. Turning them into SRT needs optical character recognition (OCR), which this tool does not do, so those tracks are listed but marked as image-based.
The video has subtitles but none are found. Why?
The subtitles are probably hardcoded (burned into the picture), in which case they are part of the video frames and cannot be extracted as text. Some downloads also ship subtitles as a separate .srt file next to the video instead of inside it. Streaming captions in fragmented MP4 files can be tried with the Extract with ffmpeg button.
What happens to ASS styling when I save as SRT?
SRT only supports simple formatting, so italic, bold and underline are converted to <i>, <b> and <u> tags (or removed if you untick the option), line breaks are kept, and fonts, colours, positions and animations are dropped. Vector drawings are always left out, and you can also skip positioned signs such as on-screen text translations. Choose ASS or Original format to keep all styling.
How do I fix subtitles that are out of sync?
Enter a value in Shift times before downloading: a positive number such as 1.5 makes every subtitle appear 1.5 seconds later, a negative number makes them appear earlier. Lines that would end before 0:00 are dropped.
Is my video uploaded anywhere?
No. The file is read in small pieces by JavaScript in your browser and only the subtitle data is decoded. The optional ffmpeg fallback downloads the open-source converter once and also runs locally.
Are all the tools on FreeToolCabin tested for quality and accuracy?
Yes! Every tool on our site undergoes automated Q/A testing in real browser environments to ensure high precision, correct output, and zero errors. If you happen to spot a bug or have a suggestion, please contact us at [email protected] and our team will review it right away.