TL;DR: first check whether the MP4 actually contains a subtitle track — most don't. One free ffprobe command tells you in seconds. If a track is there, one ffmpeg command converts it to an SRT file. But in the majority of MP4s — social media videos, CapCut and Premiere exports, downloaded clips — the subtitles are burned into the picture, and the only way to extract them is OCR, which reads the text from the frames. This guide covers both paths, plus the case where the video has no subtitles at all.
How do I check if an MP4 has a subtitle track?
With ffmpeg installed (brew install ffmpeg on a Mac), run:
ffprobe -v error -select_streams s \
-show_entries stream=index,codec_name:stream_tags=language \
-of default=noprint_wrappers=1 input.mp4
Two possible outcomes:
| Output | What it means | How to extract |
|---|---|---|
codec_name=mov_text | The MP4 has an embedded text subtitle track (toggleable in players) | One ffmpeg command |
| No output at all | No subtitle track — any subtitles you see are burned into the picture | OCR |
If ffprobe prints nothing but you can see subtitles when the video plays, the subtitles are part of the video image — no extractor or converter can pull them out, and OCR is the only method that works.
How do I extract the subtitle track from an MP4 to SRT?
MP4 stores text subtitles in the mov_text format. ffmpeg converts it to a standard SRT file in one command:
# Extract the first subtitle track as SRT
ffmpeg -i input.mp4 -map 0:s:0 subtitles.srt
# If there are several tracks, 0:s:1 is the second, and so on
ffmpeg -i input.mp4 -map 0:s:1 subtitles.srt
The output is a plain SRT file that opens in any subtitle editor and uploads to any platform. This is the entire happy path — if it worked, you are done. If ffmpeg reports Stream map '0:s:0' matches no streams, the MP4 has no subtitle track, which is by far the more common case.
Why do most MP4 videos have no subtitle track?
MP4's subtitle support has always been an afterthought. Social platforms either strip subtitle tracks on upload or ignore them on playback, and many players never show a subtitles menu for MP4 files — so creators stopped relying on them.
Because platforms and players handle MP4 subtitle tracks so inconsistently, most creators burn subtitles directly into the picture instead — which is why the subtitles in a typical MP4 cannot be extracted with ffmpeg or any converter. Every caption you see on a CapCut export, a downloaded reel, or a re-uploaded clip is almost always pixels, not a track. The full breakdown of the two subtitle types is here: Embedded vs Burned-In Subtitles.
How do I extract burned-in subtitles from an MP4?
With OCR — software that reads the subtitle text from the video frames and rebuilds it as a timed subtitle file:
- Import the MP4 into GeekLink on your Mac.
- Run OCR extraction. It detects the subtitle region, reads each frame's text, and merges duplicate frames into clean, correctly timed subtitle lines.
- Export as SRT — or translate first and export a bilingual file.
OCR runs locally on your Mac — the video is never uploaded — and a whole folder of videos can be processed in one batch. The step-by-step walkthrough is here: How to Extract Hardcoded (Burned-In) Subtitles Using OCR; if the video also has a watermark or channel logo you want excluded, see Extract Subtitles Without the Watermark.
What if the MP4 has no subtitles at all?
If there is no track and nothing burned in, there is nothing to extract — you generate subtitles instead. Import the video into GeekLink and run Whisper speech recognition locally on your Mac: you get timed subtitles you can edit, translate, and export as SRT. See Whisper for Video Transcription: Complete Guide.
How do you translate the subtitles you extracted?
An SRT file extracted from an MP4 can be imported straight into GeekLink and translated with AI into 40+ languages, keeping the original timing. Export a translated SRT, a bilingual SRT, or burn the translation back into the video for platforms that ignore subtitle tracks. Full workflow: How to Translate Hardcoded Subtitles.
FAQ
How do I extract subtitles from an MP4 file?
Check for a subtitle track first: ffprobe -v error -select_streams s -show_entries stream=codec_name input.mp4. If it prints mov_text, run ffmpeg -i input.mp4 -map 0:s:0 subtitles.srt and you have your SRT. If it prints nothing, the subtitles are burned into the picture and need OCR.
Why does ffmpeg say "matches no streams" when I try to extract subtitles?
Because the MP4 has no subtitle track. The subtitles you see during playback are burned into the video image — they are pixels, not data — so there is no stream for ffmpeg to map. OCR software like GeekLink reads them from the frames instead.
Can an online tool extract subtitles from my MP4?
Only if the MP4 has an embedded track, which most don't — and uploading a large video to a website is slow. For burned-in subtitles, OCR that runs locally on your Mac is faster and keeps the video private.
Can I extract subtitles from a CapCut or Premiere export?
Exports from editors are almost always burned-in: the captions were rendered into the picture during export, so there is no track inside the file. OCR is the way — GeekLink detects the caption region, reads the text frame by frame, and exports a timed SRT.
What is the difference between extracting subtitles from MP4 and MKV?
MKV commonly carries embedded subtitle tracks (SRT, ASS, or Blu-ray PGS), so extraction usually succeeds with ffmpeg or mkvextract. MP4 rarely carries a track at all, so extraction usually means OCR on burned-in subtitles. See the companion guide: How to Extract Subtitles from an MKV File.