TL;DR: Every subtitle is either part of the picture or a separate track. If you can switch it off in a player it is a track you can extract; if it is stuck on screen it is burned in, and only OCR of the video frames can recover it. Text tracks come out instantly with ffmpeg, image tracks (Blu-ray PGS and DVD VobSub) need OCR after you pull the track, and burned-in subtitles need frame OCR.
How do I tell what kind of subtitle I have?
The quickest test needs nothing but a video player: try to switch the subtitle off. If it turns off, it is a separate track and can be extracted. If it stays on the picture no matter what you do, it is burned in. That one action sorts almost every file you will ever open.
For a definitive answer, list the tracks. On a Mac with ffmpeg installed (brew install ffmpeg), run:
ffprobe -v error -select_streams s \
-show_entries stream=index,codec_name:stream_tags=language,title \
-of default=noprint_wrappers=1 input.mkv
If you prefer a GUI, MediaInfo shows the same track list. And when you do extract a track, the file extension you get out is itself a clue: .srt means text, .sup means Blu-ray PGS (an image format), and .idx/.sub means DVD VobSub (also an image format).
The single test that decides everything: if you can toggle the subtitle off in a player, it is an extractable track; if you cannot, it is burned into the picture and needs OCR.
The four kinds of subtitles
Underneath all the file extensions and codec names, there are exactly four kinds of subtitle you will encounter. Two are text, one is a picture stored in a track, and one is baked into the video itself.
- Text tracks (embedded SRT/ASS, MP4 tx3g, WebVTT): the subtitle is already stored as actual text. It is toggleable in a player, and it extracts in seconds with ffmpeg or mkvextract — no OCR needed. This is the easy case, and the one everyone hopes they have.
- Image tracks — PGS and VobSub: PGS (
.sup) is the Blu-ray subtitle format; VobSub (.idx/.sub) is the DVD format. These are separate, toggleable tracks — but each subtitle line is stored as a small picture of the text, not as text. You pull the track (with mkvextract, or with Subler on a Mac) and then OCR the images to get an editable SRT. - Burned-in / hardcoded: the text is baked directly into the video pixels — it is part of the picture and cannot be turned off. There is no track to pull, so no demuxer or converter can help. You OCR the video frames to read the text back out. This is exactly what GeekLink does on a Mac.
- Closed captions (CEA-608/708): embedded in the video signal itself rather than in a subtitle track — common on broadcast TV recordings and some MP4/MOV files. They are toggleable and text-based, so they extract without OCR using ccextractor or ffmpeg.
Three of the four are toggleable tracks; only burned-in subtitles are part of the picture — and that is the dividing line that decides whether you can extract or must OCR.
Which tool for which kind?
Once you know which of the four kinds you are holding, the right tool follows directly. Here is the whole decision on one screen:
| Kind | How to tell | How to extract | Output |
|---|---|---|---|
| Text track (SRT/ASS/tx3g/WebVTT) | Toggleable; ffprobe shows a text codec | ffmpeg or mkvextract | SRT instantly |
| Image track — PGS / VobSub | Toggleable; extracts as .sup or .idx/.sub | Extract the track, then OCR | SRT (after OCR) |
| Burned-in / hardcoded | Cannot be turned off; no subtitle track listed | Frame OCR on the video | SRT (from OCR) |
| Closed captions (CEA-608/708) | Toggleable captions on broadcast/MP4/MOV | ccextractor (or ffmpeg) | SRT |
Only two of the four kinds need OCR — image tracks and burned-in subtitles — and both need it for the same reason: there is no text in the file, only pictures.
Why image tracks and burned-in subtitles both need OCR
It looks like two different problems, but it is really one. A PGS or VobSub track stores each subtitle as a bitmap image of the text; a burned-in subtitle is painted into the video's own pixels. In both cases there is no text anywhere in the file to copy out — just pictures (image tracks) or pixels (burned in).
No format converter can turn a picture into text; only OCR can read it. That is why converting a PGS/VobSub track to SRT, or pulling burned-in subtitles out of a video, is fundamentally an OCR job and not a file-conversion job.
This is also why people get stuck: they try ffmpeg or a subtitle converter, get an encoder error or a .sup file they cannot open in a text editor, and assume something is broken. Nothing is broken — the tool simply cannot invent text that is not there.
Extracting each kind on a Mac
Here is the practical route for each of the four kinds on macOS.
Text tracks — one command does it, and it finishes in seconds:
# Extract the first subtitle track as SRT
ffmpeg -i input.mkv -map 0:s:0 subtitles.srt
Image tracks (PGS / VobSub) — pull the track, then OCR it. On a Mac the simplest path is to render the track onto the video once, then run OCR on the result:
# Render the image-subtitle track onto the video (one-time re-encode)
ffmpeg -i input.mkv -filter_complex "[0:v][0:s:0]overlay[v]" \
-map "[v]" -map 0:a? -c:a copy rendered.mp4
Then import rendered.mp4 into GeekLink and run OCR extraction to get a clean, timed SRT.
Burned-in subtitles — there is no track to pull, so you go straight to OCR. Import the video into GeekLink on your Mac and run OCR extraction: it reads the subtitle text straight from the frames and exports a correctly timed SRT, entirely locally and offline, with nothing uploaded.
Closed captions — extract with ccextractor (ccextractor input.mp4 -o captions.srt) or ffmpeg; no OCR needed.
For the two OCR cases — burned-in video and rendered image tracks — GeekLink is the local Mac option: OCR extraction that runs offline and exports a timed SRT, with speech recognition (Whisper), AI translation into 40+ languages (Claude, GPT-4o, DeepSeek), a built-in editor, and batch processing when you have a whole season to get through. The full OCR walkthrough is here: How to Extract Hardcoded (Burned-In) Subtitles Using OCR.
FAQ
How do I know if a subtitle is burned in?
Try to turn it off in a player. If it will not turn off — it stays on screen no matter which subtitle track you select or disable — it is burned into the picture. If it disappears, it is a toggleable track you can extract.
Can you extract burned-in subtitles?
Not as a track — there is no track to pull, because the text is part of the video's pixels. You OCR the video frames to read the text into an SRT. On a Mac, GeekLink does this locally and exports a timed SRT.
What is a .sup file?
A Blu-ray PGS subtitle track. It is image-based — each subtitle line is stored as a picture of the text, not as text — so it needs OCR to become an editable SRT.
What is a .idx/.sub file?
A DVD VobSub subtitle track. Like PGS, it stores subtitles as images rather than text, so it also needs OCR to convert into an SRT.
Are Netflix or streaming subtitles burned in?
Usually no — they are text tracks you can toggle on and off in the player. They are only burned in if someone screen-recorded the video with the subtitles showing, which bakes the text into the recorded pixels.