How-to

How to copy subtitles from a video on Mac

Get subtitle text out of a video on your Mac: open .srt and .vtt files, extract embedded tracks with ffmpeg, and capture burned-in captions from paused frames.

Title card: How to copy subtitles from a video on Mac

“Subtitles” covers three different things, and the way to copy them depends entirely on which one you have. Some are a text file that travels next to the video, some are a track tucked inside the video file, and some are painted into the picture itself. Work out which kind you’re dealing with first; it saves a lot of pausing and squinting.

Quick answer

It depends on where the subtitles live. A separate .srt or .vtt file is plain text you can open in TextEdit. A subtitle track inside an .mkv or .mp4 can be pulled out with the free ffmpeg tool. Subtitles burned into the picture are pixels: pause on each line and copy it with Live Text or OCR. Protected streaming video usually can’t be captured at all.

Three kinds of subtitles

  • Separate files, often called sidecar files: .srt, .vtt or .ass files with the same name as the video, or a download link next to it. These are already text.
  • Embedded tracks: subtitles stored inside the video container, typical of .mkv files and common in .mp4 and .mov. You can switch them on and off in the player’s subtitle menu.
  • Burned-in subtitles, also called hardcoded or open captions: drawn into every frame. They can’t be switched off, because they’re part of the image.

The quick test is the subtitle menu. If you can hide the subtitles, you have a file or a track and can get every line at once. If you can’t, they’re burned in and you’ll be copying them line by line.

Check for a file, then a track, then capture
Check in this order. The first two give you every line at once; the third works one line at a time.

Separate subtitle files: open them in TextEdit

Control-click the .srt or .vtt file and choose Open With → TextEdit. An SRT file is a list of numbered cues, each with a timecode line and one or two lines of text:

12
00:01:04,200 --> 00:01:06,900
We should leave before the tide comes in.

That’s fine for finding one line. For a clean transcript, strip the numbers, timecodes and blank lines with one Terminal command:

tr -d '\r' < subtitles.srt | grep -v -E '^[0-9]+$|-->|^$|^WEBVTT' > transcript.txt

The tr part removes Windows line endings, which otherwise stop the filter from matching. The same command handles .vtt files, which start with a WEBVTT line. Skim the result anyway: VTT files can hold notes or styling blocks that slip through, and a subtitle that is only a number, like “42”, is removed along with the cue numbers.

If accented letters show up as odd symbols, the file uses an older text encoding. Close it, choose File → Open… in TextEdit, click Options, and pick the right encoding before opening it again. Western (Windows Latin 1) is a common one for older files.

Embedded subtitle tracks: extract them

To pull a track out of the video file, use ffmpeg, a free command-line tool. Install it with Homebrew (brew install ffmpeg), then list the subtitle tracks:

ffprobe -v error -select_streams s -show_entries stream=index,codec_name:stream_tags=language -of csv=p=0 movie.mkv

Each line shows a stream number, the subtitle format and a language code, such as 2,subrip,eng. To save the first subtitle track as an SRT file:

ffmpeg -i movie.mkv -map 0:s:0 subtitles.srt

Change 0:s:0 to 0:s:1 for the second subtitle track, and so on. MP4 files store subtitles in a format called mov_text, and the same command converts them to SRT.

One kind of embedded track won’t convert. Subtitles ripped from Blu-ray discs (listed as hdmv_pgs_subtitle) and DVDs (dvd_subtitle) are stored as pictures of text, not text. ffmpeg stops with an error, because it can’t turn images into letters. Treat those like burned-in subtitles, or use a dedicated subtitle OCR tool.

Players such as VLC and IINA are good for switching between tracks and loading .srt files, but they’re built for watching. ffmpeg is the simplest free way to get the text out.

Burned-in subtitles: capture a line at a time

When the subtitles are part of the picture, you need text recognition. On recent versions of macOS, Live Text works on paused video in Apple’s own players:

  1. Open the video in QuickTime Player and pause on the line you want. When paused, the arrow keys step one frame at a time.
  2. Hold the pointer over the subtitle. If it turns into a text cursor, drag across the line.
  3. Press ⌘C.

If the text cursor doesn’t appear, press ⌃⇧⌘4 and drag over the subtitle to copy it as an image. Then open Preview, choose File → New from Clipboard, and select the text there.

Recognition is reliable on clean white or yellow subtitles with a dark outline. It struggles when thin letters sit over a busy, bright scene, or when the video is heavily compressed and the letters smear. Pause on a darker moment of the same line if you can; our guide to copying text from a video has more on picking a sharp frame. And keep expectations sensible: a feature film has hundreds of lines, so this route suits quotes and key passages, not a full script.

In Unpixel

Unpixel makes the line-by-line routine quicker. Pause the video, press ⇧⌘2, drag over the subtitle, and let go: the line is on your clipboard, read on your Mac. It works in any player and in a browser, not just Apple’s apps.

A burned-in subtitle copied as text
Burned-in subtitles are part of the picture. Pause on the line, capture it, and it’s text.

Three details help. With Keep line breaks turned off, a subtitle split over two lines comes out as one sentence. Every capture goes into a searchable history in order, so you can collect a scene’s lines first and copy them out afterwards. And holding ⌥ as you let go copies a translation into your language instead.

Online videos: transcripts and captions

Many video sites keep their captions as text, and getting at that is easier than capturing frames.

  • YouTube: expand the description under the video and click Show transcript. A panel opens with the full captions, which you can select and copy. If the panel’s menu offers to hide timestamps, do that first so they don’t land in your paste. Our YouTube guide has the details.
  • Course and conference sites often have a Transcript tab or button next to the player.
  • Other players often load captions as a .vtt file. With Safari’s web developer features turned on, open Web Inspector’s Network tab, reload the page, and type “vtt” in the filter. The caption file appears in the list, and you can open it as text. Use what you find for your own reference; the site’s terms still apply.

Streaming services: why captures may be black

Video from many subscription streaming services is protected by digital rights management. In Safari and Apple’s TV app, macOS usually keeps those frames out of screenshots and screen recordings, so a capture shows a black rectangle. Live Text sees nothing, and no capture tool, Unpixel included, can read those pixels.

For lines from a film or series, look for the published screenplay, the disc’s subtitle files, or a licensed transcript. Our article on why screenshots of videos are black explains the mechanism.

Frequently asked questions

How can I tell if subtitles are burned in?

Try to turn them off. If the player’s subtitle menu can hide them, they’re a separate file or an embedded track. If they stay on screen whatever you choose, they’re part of the picture.

Can I get a transcript without the numbers and timecodes?

Yes. The one-line Terminal command in this article removes the cue numbers, timecode lines and blank lines from an .srt or .vtt file and saves the rest as plain text.

Can I copy subtitles from a YouTube video?

Use YouTube’s transcript instead: expand the video description and click Show transcript, then select and copy the text from the panel that opens. YouTube offers it only for videos that have captions.

Can I share subtitles I extracted?

Subtitles are part of the work, and translations of them are someone’s writing too. Keeping a few lines for study or quoting is everyday use; publishing a full subtitle file usually needs permission.

Sources

  1. ffmpeg documentation — stream selection and the -map option ffmpeg.org
  2. ffprobe documentation ffmpeg.org
  3. ffmpeg — Homebrew Formulae formulae.brew.sh
  4. WebVTT: The Web Video Text Tracks Format — W3C w3.org
  5. macOS Ventura is now available (Live Text in paused video frames) — Apple Newsroom apple.com
  6. View video transcripts — YouTube Help support.google.com