Written by me@grafxflow
Ever tried importing old DVD media assets into Adobe Premiere Pro, only to find the subtitles are completely missing or unreadable?
Here is the frustrating truth: DVD subtitles aren’t text. They are actually a layer of VobSub images stored inside your MKV file. Because video editors like Premiere can't read these image files natively, you are usually left with two terrible options: pay for expensive conversion software, or spend hours of your life manually transcribing and typing out the entire movie script by hand.
Fortunately, there is a hidden, 100% free macOS gem that saves your sanity (and your fingers).
By leveraging the open-source power of Subler, you can use Optical Character Recognition (OCR) to automatically translate those graphics into clean, editable text .srt files in just a few clicks.
If you prefer using a visual app interface rather than messing with code, Subler is your best friend. It is completely free, open-source, and has a built-in OCR engine that reads your file graphics and translates them to text.
Here is exactly how to do it manually in the application:
Head over to subler.org and download the app.
Move it to your Applications folder and open it.
Open the top menu and go to Subler > Settings.
Click on the OCR tab.
Find your required language (e.g., English) and click 'Get' to install the text-recognition dictionary.
Open a fresh, blank Subler window.
Drag and drop your .mkv video file directly into the app.
A prompt will appear listing all the data layers inside the video (Video, Audio, Subtitles).
Uncheck everything except for the Subtitle track you want to extract, then click Add.
Go to the top menu bar and ensure Subler > Settings > Advanced has VobSub to Tx3g checked (this instructs the app to convert the images to text).
Click File > Save (or press Command + S).
Choose a destination on your Mac. Subler will save it as an intermediate .mp4 container.
Click Save. You will see a progress bar appear as the OCR engine reads the graphics and generates the text.
Once the progress bar finishes, close your current project.
Drag and drop that newly created .mp4 file back into Subler.
Highlight the subtitle track in the list.
Go to the top menu and select File > Export.
Choose SRT from the format drop-down list.
Boom! You now have a perfectly timed, fully editable .srt file ready to go, and you didn't have to type out a single word by hand.
Using the Subler app interface is great for a single file, but what if you have a dozen or more video archives to process? Doing the "open, extract, save, reopen, export" routine by hand will quickly eat up your afternoon.
Fortunately, Subler comes with an official command-line tool called SublerCLI. We can use a simple Mac Terminal script to scan an entire folder, automatically find every subtitle track, run the OCR engine, and spit out ready-to-use .srt files in seconds.
First, we need to install SublerCLI. The easiest way to do this on a Mac is via Homebrew, the package manager for macOS.
Open your Terminal app (press Command + Space, type Terminal, and hit Enter) and paste this command to install SublerCLI:
brew install sublercli
(If you don't have Homebrew installed yet, run /bin/bash -c "$(curl -fsSL https://githubusercontent.com)" first).
In Terminal, use the cd command followed by a space, then drag and drop your video folder from Finder directly into the Terminal window to automatically fill in the path. Hit Enter:
cd /path/to/your/video/folder
Now, copy and paste this entire script directly into your Terminal window. It will loop through every .mkv file in the folder, detect all internal subtitle tracks (even if there are multiple languages), and extract them safely as standalone text files:
for file in *.mkv; do
echo "Processing: $file"
# Let SublerCLI scan the file and look for subtitle tracks
# VobSub tracks usually appear with a track ID (e.g., 3, 4, 5)
track_info=$(SublerCLI -i "$file" | grep -i "Subtitle")
if [ -z "$track_info" ]; then
echo "No subtitles found in $file"
continue
fi
# Loop through found subtitle tracks and extract them as SRT
echo "$track_info" | while read -r line; do
# Extract the track ID number from Subler's output
track_id=$(echo "$line" | awk -F: '{print $1}' | tr -d '[:space:]')
echo "Found subtitle track ID: $track_id. Running OCR..."
# SublerCLI handles the VobSub-to-Text conversion natively
SublerCLI -source "$file" -dest "${file%.mkv}_track${track_id}.srt" -track "$track_id"
done
done
If you plan on doing this often, you don’t need to copy and paste that block of code every time. You can save it as a reusable bash script file:
chmod +x convert_subs.sh
Now, whenever you have a new batch of files, you can just open Terminal in that folder and run ./convert_subs.sh to start the automatic conversion instantly!
If you have a file named Interview_Archive.mkv containing two separate subtitle layers, the script will silently work in the background and instantly output:
No clicking, no manual exporting, and absolutely zero manual typing required.
Founder, Grafxflow
I am a Full-stack Developer who also started delving into the world of UX/UI Design a few years back. I blog and tweet to hopefully share a little bit of knowledge that can help others around the web. I build lighting-fast dynamic content engines with Laravel, Winter CMS and Tailwind CSS. Thanks for stopping by!