How to Extract SUP/PGS Subtitles from MKV and Blu-ray
Learn how to identify and extract PGS subtitle tracks as SUP files from MKV and Blu-ray sources using FFmpeg, mkvextract, MakeMKV and HandBrake workflows.
PGS subtitles are commonly embedded inside Blu-ray sources and MKV files created from them. Before an image-based PGS subtitle can be converted into editable SRT text, the correct subtitle track must be identified and extracted as a standalone .sup file.
This guide explains how to inspect, extract and verify PGS subtitle tracks using FFmpeg and MKVToolNix. It also explains where MakeMKV and HandBrake fit into the workflow and why those applications do not replace the OCR conversion stage.
Lawful-use note: Use these workflows only with media and subtitle tracks you own or are otherwise authorized to process. Requirements for accessing protected media vary by location and source.
Which Extraction Method Should You Use?
| What you currently have | Recommended next step |
|---|---|
A standalone .sup file | No extraction is needed. Open the homepage converter. |
| An MKV containing a PGS track | Extract it with FFmpeg or mkvextract. |
| A Blu-ray source already preserved as MKV | Identify and extract the PGS track from the MKV. |
| A supported disc source being processed with MakeMKV | Keep the required subtitle tracks in the MKV, then extract them. |
| An MKV being processed with HandBrake | Use MKV output and preserve PGS through passthrough when supported. Do not burn it in if later extraction is required. |
| An MP4 file | Check whether it contains a text subtitle track. MP4 does not normally preserve Blu-ray PGS passthrough in the same manner as MKV. |
| A video with no subtitle track | Extraction is not possible. That requires transcription, which is a different workflow. |
What Are You Extracting?
PGS stands for Presentation Graphic Stream. PGS subtitles are image-based subtitles that may be embedded in a Blu-ray structure or inside an MKV container. MKV, short for Matroska Video, can hold video, audio and multiple subtitle formats in one file.
Not every subtitle track inside an MKV is PGS. The same file may contain SRT, ASS, VobSub or other subtitle formats. When a PGS subtitle track is copied into a standalone file, .sup is the commonly used extension.
Extraction copies the subtitle stream without turning the images into text. Optical Character Recognition, or OCR, is a separate later step that recognizes the subtitle images and creates editable SRT text. For more background, read the guide explaining what PGS subtitles are.
Extraction produces a standalone SUP/PGS file. OCR conversion recognizes the subtitle images and produces editable SRT text. They are two different stages.
Before You Start
Prepare the source file and the right tool for your stage of the workflow:
- Source media and subtitle tracks you are authorized to process
- Enough storage for the source and extracted files
- FFmpeg or MKVToolNix for extraction
- MakeMKV or HandBrake only where relevant to the source workflow
- A modern browser for the final SUP to SRT OCR step
- Knowledge of the required subtitle language
Tool interfaces and menu labels can change between versions. Commands and official documentation are the more stable reference when exact labels differ.
How to Identify the Correct PGS Subtitle Track
Track identification matters because one file can contain several subtitle languages, SDH subtitles, commentary subtitles, forced subtitles and full subtitle tracks. The first subtitle track may not be PGS, and language metadata can be missing or incorrect.
Using FFmpeg to inspect streams
Use FFmpeg to print the file’s stream list:
ffmpeg -i input.mkv
A representative result may include:
Stream #0:2(eng): Subtitle: hdmv_pgs_subtitle
Stream #0:3(spa): Subtitle: hdmv_pgs_subtitle
The hdmv_pgs_subtitle codec identifies the PGS subtitle format. The (eng) and (spa) parts are language metadata when present. The #0:2 and #0:3 values are absolute input stream indexes in this example. Do not copy those values blindly; inspect your own file first.
Using FFprobe for a focused list
For a subtitle-only stream list, use this cross-platform command:
ffprobe -v error -select_streams s -show_entries stream=index,codec_name:stream_tags=language,title -of default=noprint_wrappers=1 input.mkv
This lists subtitle stream indexes, codec names and available language or title metadata without requiring grep or another platform-specific filter.
Using MKVToolNix information tools
MKVToolNix can inspect Matroska tracks with:
mkvmerge -J input.mkv
or:
mkvinfo input.mkv
The mkvextract command requires the Matroska track ID. That ID is not necessarily the same number as an FFmpeg absolute stream index or a relative subtitle index.
Method 1. Extract PGS from MKV with FFmpeg
FFmpeg is a command-line multimedia framework. Use the official FFmpeg documentation for authoritative details about stream selection and stream copy behavior.
Recommended command using the relative subtitle selector
ffmpeg -i input.mkv -map 0:s:0 -c:s copy output.sup
-i input.mkvopens the source.-map 0:s:0selects the first subtitle stream from the first input.-c:s copyperforms stream copy instead of re-encoding.output.supis the standalone output filename.
The first subtitle stream is not always PGS. Inspect the file first and confirm that the selected stream is labelled
hdmv_pgs_subtitle.
Alternative using an absolute stream index
If inspection shows the required PGS track is absolute stream 0:3, use:
ffmpeg -i input.mkv -map 0:3 -c copy output.sup
The 0:3 value is only an example. Replace it with the actual stream index from your own file.
Important limitations
FFmpeg extracts or copies the subtitle stream. It does not OCR PGS images into text, and it cannot make an image subtitle editable merely by changing the extension.
If the selected subtitle is SRT, ASS or another text codec, .sup is not the appropriate output extension. The output extension should match the actual selected stream. For a deeper command walkthrough, see the detailed FFmpeg PGS extraction guide.
Method 2. Extract PGS from MKV with MKVToolNix
MKVToolNix is useful for inspecting and working with Matroska files. The MKVToolNix GUI can help you view or remux track information, but the multiplexer does not export a standalone SUP track. Multiplexing creates another container.
Use MKVToolNix to inspect track metadata, then use mkvextract for extraction. The official mkvextract documentation documents the track extraction syntax.
Identify track IDs
Use:
mkvmerge -J input.mkv
or:
mkvinfo input.mkv
Identify the Matroska track ID whose codec or type corresponds to PGS.
Extract the selected track
Example:
mkvextract input.mkv tracks 2:output.sup
tracksselects track extraction mode.input.mkvis the source.2is an example Matroska track ID.output.supis the destination.- The actual track ID must be obtained from your own file.
MKVToolNix track IDs are not necessarily the same as FFmpeg stream indexes. Identify the ID using MKVToolNix tools before running
mkvextract.
For a more focused workflow, see the detailed MKVToolNix extraction guide.
Method 3. Preserve PGS When Using HandBrake
HandBrake can work with supported, accessible sources and can pass compatible PGS tracks through when MKV is used as the output container. This guide is not documenting HandBrake as a tool for bypassing access controls.
HandBrake’s subtitle documentation explains subtitle behavior, including passthrough and burn-in. MKV output is the relevant container when you need to preserve PGS for later extraction. MP4 does not support PGS passthrough in the same way.
Burn-in permanently renders subtitle images into the video frames. A burned-in subtitle cannot later be extracted as a subtitle track. If later OCR conversion is planned, preserve the PGS track through passthrough rather than burning it in. After HandBrake creates the MKV, extract the preserved PGS track with FFmpeg or mkvextract.
Recommended workflow
- Open a supported, accessible source in HandBrake.
- Choose MKV as the output container.
- Open the Subtitles tab.
- Select the required PGS subtitle track.
- Keep burn-in disabled when passthrough is available and later extraction is required.
- Complete the encode.
- Inspect the resulting MKV.
- Extract the PGS track with FFmpeg or
mkvextract. - Convert the extracted SUP file with the homepage OCR tool.
HandBrake does not directly create editable SRT text from PGS images and does not directly export the selected PGS stream as a standalone SUP file in this workflow.
Method 4. Preserve Blu-ray PGS Tracks with MakeMKV
MakeMKV can create an MKV that preserves selected streams from a supported source. The user should select the required subtitle tracks before creating the MKV. The resulting MKV may contain PGS subtitle tracks, but MakeMKV does not perform OCR conversion to SRT and does not directly output standalone SUP files.
Use the MakeMKV online help for the official tool workflow. After the MKV is created, inspect and extract the PGS track from that MKV. Then the standalone SUP file can be processed by the homepage converter.
Recommended workflow
- Open a supported source in MakeMKV.
- Expand the relevant title.
- Review the available audio and subtitle tracks.
- Select the required PGS subtitle track or tracks.
- Create the MKV.
- Inspect the resulting MKV with FFmpeg, FFprobe or MKVToolNix.
- Extract the desired PGS track as SUP.
- Convert the SUP file to SRT through OCR.
Multiple tracks can share the same language, so do not rely only on language tags when choosing what to preserve.
How to Choose the Correct Subtitle Track
Subtitle tracks can be confusing because one source may contain full subtitles, forced subtitles, SDH subtitles, commentary subtitles, multiple languages, duplicate-looking tracks and tracks with missing or inaccurate metadata.
Evaluate several signals before extracting:
- Codec name
- Language metadata
- Track title or name
- Forced/default flags
- Subtitle count or duration where tools expose it
- A short playback or preview test where practical
Do not use file size alone to decide which track is correct.
Forced PGS Subtitles
Forced captions typically cover foreign-language dialogue, signs or brief required translations. A disc may store forced cues in a separate track or mark cues within a larger track. Tool behavior varies depending on the source and flags.
A smaller extracted file is not conclusive proof that it is the forced track. Preserve and inspect candidate tracks before discarding anything.
The homepage converter’s “forced captions only” option should be used only when the extracted PGS data exposes supported forced-cue flags. It should not be treated as content-based detection for every source.
How to Verify the Extracted SUP File
Verification should use several signals instead of a fixed size range.
Check that the command completed successfully
Review FFmpeg or mkvextract output for errors before assuming the file is valid.
Check that the output is not empty
Windows, macOS and Linux users can verify file properties through their file manager. A shell example is:
ls -lh output.sup
Do not prescribe a fixed valid movie subtitle size. Forced tracks and short content may legitimately be small.
Check the PGS signature where practical
PGS/SUP packet data commonly begins with the ASCII bytes PG, represented as hexadecimal 50 47.
Linux/macOS example:
xxd -l 16 output.sup
PowerShell example:
Format-Hex -Path .\output.sup -Count 16
PowerShell version support for -Count can vary. If this option is unavailable, test the file directly in a compatible parser or the homepage converter.
Confirm the language and content
Use a compatible subtitle tool, a preview workflow or the converter’s parsed subtitle preview when available.
Understand verification limits
- A non-empty file is not proof that the right track was selected.
- A valid
PGsignature is not proof that OCR will be accurate. - File size alone is not reliable.
- Correct language selection remains important during OCR.
Convert the Extracted SUP File to SRT
Keep conversion compact: the homepage owns the full SUP/PGS to SRT workflow.
- Open the SUP and PGS to SRT converter.
- Select the extracted
.supfile. - Confirm the subtitle language.
- Choose the appropriate OCR options.
- Start conversion.
- Review recognized text.
- Download the SRT.
The converter processes the SUP file and OCR in your browser using local file reading and browser-loaded OCR. Review the resulting SRT because OCR can make mistakes. For post-conversion editing, you can review or edit the converted SRT in Subtitle Edit.
Troubleshooting SUP/PGS Extraction
No PGS track appears
The file may contain text subtitles instead, the subtitle track may use a different codec or the source may not include the expected language. Inspect all subtitle streams before concluding that none exists.
Output is empty or extraction fails
Confirm the correct input path, selected stream or track ID and selected codec. If you are writing .sup, make sure the selected subtitle is PGS. Avoid renaming unrelated subtitle codecs to .sup.
Wrong language was extracted
Review language and title metadata. Multiple tracks may share one language, so try the next verified PGS track if the first candidate is wrong.
FFmpeg reports an output or codec error
Verify the selected stream is actually PGS, use stream copy and use an output extension suitable for the selected codec. Refer to the official FFmpeg documentation when mapping behavior is unclear.
MKVToolNix produced another MKV instead of SUP
The multiplexing interface was used instead of extraction. Identify the PGS track ID and use mkvextract tracks.
HandBrake output no longer contains a subtitle track
The subtitle may have been burned into the video, MP4 may have been selected instead of MKV or the PGS track may not have been selected for passthrough.
OCR output is inaccurate
Extraction can be correct even when OCR recognition is imperfect. Confirm the OCR language, review font, contrast, source quality and OCR settings, then correct the SRT after conversion where necessary.
Frequently Asked Questions
What is a SUP file?
A SUP file commonly stores an extracted PGS subtitle stream containing bitmap subtitle images, timing, palette and positioning data.
Can FFmpeg convert PGS directly to SRT?
FFmpeg can identify and extract a PGS stream, but it does not perform the OCR needed to turn subtitle images into editable SRT text. OCR is a separate step.
How do I extract a PGS subtitle from MKV?
Inspect the MKV to identify the hdmv_pgs_subtitle stream, then copy that stream to a SUP file with FFmpeg or extract its Matroska track ID with mkvextract.
Can MKVToolNix GUI export a standalone SUP file?
The multiplexing interface creates another container. Use the MKVToolNix mkvextract utility to extract a selected PGS track as a standalone SUP file.
Does HandBrake convert PGS subtitles to SRT?
No. HandBrake can preserve supported PGS tracks in MKV through passthrough or burn them into video, but it does not OCR PGS images into SRT text.
Can HandBrake export a standalone SUP file?
Not in this workflow. Preserve the PGS track inside MKV, then extract it with FFmpeg or mkvextract.
Does MakeMKV convert Blu-ray subtitles to SRT?
No. MakeMKV can preserve selected subtitle streams in MKV output. The PGS track must then be extracted and processed with OCR to create SRT.
How do I know which PGS track is the correct one?
Inspect codec, language, title and forced/default metadata, then preview or test candidate tracks when necessary. Do not rely only on track order or file size.
Are forced subtitles always stored in a separate track?
No. They may be stored separately or flagged within a larger subtitle track, depending on the source.
Why is my extracted SUP file very small?
It may be a short or forced subtitle track, the wrong track, or an incomplete extraction. Check the selected codec, extraction logs, metadata and actual subtitle content rather than judging by size alone.
Is extracting subtitles the same as converting them?
No. Extraction copies an existing subtitle stream out of a container. Conversion uses OCR to recognize the PGS images and create editable SRT text.
Ready to Convert the Extracted SUP File?
Once the correct PGS track has been extracted as a SUP file, open the converter, select the subtitle language and create an editable SRT file with OCR.
Open the SUP/PGS Converter