Skip to content
Zumkor
← Back to blog 10 min read

How to auto generate subtitles on Mac (SRT or VTT, on-device)

Turn a video's speech into SRT or VTT captions on your Mac: free Whisper in Terminal, Final Cut Pro, or Zumkor on macOS 26 and later, with nothing uploaded.

Convert your subtitles with Zumkor on your Mac — free for 7 days, then 5 files a day free or $19.99 once. Needs macOS 14.0 or later on an Apple silicon Mac (Apple M1 or later).

Get Zumkor on the Mac App Store

The video is done: a tutorial, a product demo, an interview, a course lesson. Now it needs captions. YouTube and LinkedIn reach more people when the words are on screen, plenty of viewers watch with the sound off, and course platforms and clients increasingly require captions for accessibility. Typing them by hand takes several times the length of the video. What you want is to auto generate subtitles on your Mac: let it listen to the soundtrack and hand you a timed .srt or .vtt file.

This guide covers how to do that: what the built-in tools can and can’t do, the free open-source route, the upload route, and the drag-and-drop route in Zumkor on macOS 26 or later. It also covers the part every method shares, proofreading, because no transcription is publish-ready the moment it finishes.

In this guide11 sections

Decide what kind of captions you need

There are two different things people mean by “subtitles”, and they’re made differently.

A sidecar file. An SRT or VTT file is plain text: a numbered list of cues, each with a start time, an end time and the words spoken. It sits next to the video and the player displays it. Viewers can turn it on or off, platforms index the text, and you can fix a typo without re-exporting the video. YouTube, Vimeo, LinkedIn and course platforms take SRT uploads; a web page’s HTML5 player wants VTT. This is what you want in most cases, and it’s what this guide produces.

Burned-in captions. The words are drawn into the picture itself, the way short vertical videos show them. They can’t be turned off or edited, and they need a video editor or a re-encode to create. If that’s your goal, you still start with an SRT, then burn it in as a last step (covered near the end).

Can a Mac auto generate subtitles out of the box?

macOS has speech recognition all over the place, but none of it writes a subtitle file from a video.

  • Live Captions (System Settings → Accessibility) transcribes whatever audio is playing, live, in a floating window. It’s useful for following a video, but it saves nothing and has no timings to export.
  • QuickTime Player and iMovie don’t generate captions. QuickTime displays subtitle tracks a file already has; iMovie has no captioning feature.
  • Dictation types what you say into a text field. Playing a video at your microphone and dictating is a hack that loses all timing and produces a wall of text.

So you need a tool. There are four realistic ones.

Method 1: Whisper (free, open source, Terminal)

Whisper is OpenAI’s open-source speech recognition model. It runs entirely on your Mac once installed, reads nearly any audio or video file through ffmpeg, and writes SRT or VTT directly.

Install it with Homebrew and pipx:

brew install ffmpeg pipx
pipx install openai-whisper

Then point it at the video:

whisper interview.mp4 --model turbo --language en --output_format srt

That writes interview.srt into the current folder. Use --output_format vtt for a web player, or all to get both along with a plain transcript. --language skips auto-detection, which saves time and avoids the occasional wrong guess on a quiet intro.

A few things to know:

  • The first run downloads the model, which can be well over a gigabyte for the larger ones. After that, nothing goes online.
  • Model size is the speed and accuracy dial. tiny and base are fast and rough; small and medium are a solid middle; turbo and large are the most accurate and the slowest.
  • This version runs on the CPU. On a long video it can take a while. whisper.cpp, a separate port of the same model, uses the Mac’s GPU and is much faster, at the cost of a more involved setup.
  • Python packaging can break. pipx keeps Whisper in its own environment, which avoids most of the trouble, but a macOS or Python update can still leave you reinstalling.

Whisper is the best free answer if you’re comfortable in Terminal: it’s good, private and costs nothing. The cost is setup, a command per video, and the occasional maintenance session.

Method 2: YouTube Studio (free, but you upload)

If the video is going to YouTube anyway, YouTube generates automatic captions for most uploads in common languages. In YouTube Studio, the Subtitles section lists an automatic track once it’s ready, and you can download that track as a subtitle file, edit it, and upload the corrected version.

The trade-offs are clear: the video has to go to Google’s servers even if you set it to private, you wait for processing, and the result is a rough draft like any automatic transcript. For a video that’s public in a week anyway, that’s fine. For a client’s internal training, an unreleased product or an interview under embargo, it isn’t.

Method 3: Final Cut Pro (if you already own it)

Final Cut Pro 11 added a Transcribe to Captions command that generates captions from a timeline’s dialogue on your Mac, and Final Cut can export captions as an SRT file. If you already edit in Final Cut, that’s the natural route, because the captions live in the same project as the cut and you can fix them against the picture.

It isn’t a reason to buy Final Cut Pro, though. At $299.99 it’s a full editing suite, and opening a project, importing a clip and building a timeline is a lot of ceremony when all you want is a text file next to a finished video.

Method 4: Zumkor (macOS 26 or later, drag and drop)

Zumkor is a media converter, and one of the things it makes is captions. “Create subtitles from speech” writes brand-new SRT or VTT captions from a video’s soundtrack, on your Mac, with nothing uploaded.

It needs macOS 26 or later. Zumkor itself runs on macOS 14 and later on any Apple silicon Mac (M1 or later), but this feature is built on Apple’s on-device speech framework, which arrived in macOS 26. On macOS 14 or 15, the option isn’t available. The first time you use it, the Mac downloads Apple’s speech files, so that first run needs an internet connection. After that, the transcription itself happens on your Mac.

  1. Check your macOS version: Apple menu → About This Mac.
  2. Drag the video into Zumkor, or right-click it in Finder and choose Services → Add to Zumkor. Videos from your Photos library can be imported directly too.
  3. Pick Create subtitles from speech and choose SRT or VTT: SRT for YouTube, LinkedIn and most upload forms, VTT for a web player.
  4. Check the row. It shows the exact filename it will produce before you convert, so you can confirm lesson-03.mp4 gets a matching lesson-03.srt.
  5. Click Convert. Zumkor asks where to save, or uses the folder you set in Settings. The video itself is untouched; you get a separate caption file.

The result is a fresh transcription of the audio, not a copy of anything that was in the file before, so treat it like any automatic transcript: read it through before you publish it (next section).

Zumkor handles the subtitle jobs on either side of that, too. If the video already has text subtitles embedded, it pulls them out as SRT or VTT instead, which is faster and keeps the original wording; that’s the usual case with an MKV, covered in the MKV to MP4 guide. If you have an SRT and the destination wants VTT, it turns the SRT into a VTT. And the video can go through the same queue: an iPhone MOV that needs to be an MP4, or the “YouTube — 1080p” preset, which also sets the sound to YouTube’s own loudness level.

One limit: for old camcorder and DVD footage (.MTS, .M2TS, .TS, .VOB), Zumkor offers conversion to MP4 only, with no subtitles. Convert the footage to MP4 first. The new file is an ordinary MP4, so you can drag it back in and work from that.

Pricing: everything is free for 7 days. After that you can keep converting 5 files a day (25 a week) for free. Free videos get a small Zumkor mark, but subtitle files never do. The Full Version is a one-time $19.99 purchase: buy once and keep it forever, with no subscription and no account, shared with your family through Family Sharing.

The honest comparison: Whisper is free and you can choose a bigger model when accuracy matters most. Zumkor is for when you’d rather drag a video than maintain a Python install, and when the same session also involves converting the video, pulling out audio or fixing other subtitle files.

Proofread before you publish

Every automatic transcript needs a human pass. On a clear single speaker with a good microphone it’s usually a short one; on a noisy panel recording, a longer one. The usual slips:

  • Names and product terms. People, brands, places, your own product’s name. These are the most visible errors and the most embarrassing.
  • Numbers. “Fifteen” and “fifty” sound alike in a quiet recording. Check prices, dates and version numbers.
  • Homophones and missing words. “Their” for “there”, a dropped “not” that reverses a sentence.
  • Overlapping voices. Two people talking at once often merge into one garbled cue.
  • Music and silence. Transcription can produce stray words over music, or leave a long gap with no cue.

SRT and VTT are plain text, so any text editor works: TextEdit in plain-text mode (Format → Make Plain Text), BBEdit or VS Code. Edit only the words and leave the timestamp lines alone, or the cues drift out of sync. Keep lines short. Common caption guidelines suggest about 42 characters per line and no more than two lines on screen at once. A cue that runs to four lines is hard to read before it disappears.

Save as UTF-8. Most editors do this by default, and it keeps accents and curly quotes from turning into garbage on upload.

Getting the captions where they’re going

  • YouTube: in YouTube Studio, open the video’s Subtitles section and upload the SRT as a file with timing.
  • Vimeo and LinkedIn: both accept an SRT upload in the video’s settings when you post or edit it.
  • Your own website: use VTT with a <track> element inside the <video> tag. If you generated SRT, the SRT to VTT guide covers the conversion and the common reasons captions don’t show up on a page.
  • Desktop players: keep the caption file next to the video with the same base name (lesson-03.mp4 and lesson-03.srt). IINA, VLC and most media servers load it automatically.

If you need burned-in captions

A sidecar file is better for nearly everything, but short vertical videos often need the words baked into the picture. Zumkor doesn’t burn captions in; it writes the caption file. Two ways to finish the job:

  • A video editor. Final Cut Pro, or any editor that imports SRT, can style the captions and render them into the video.
  • ffmpeg, once you have the corrected SRT:
ffmpeg -i video.mp4 -vf subtitles=video.srt -c:a copy video-captioned.mp4

This re-encodes the video with the text drawn in, and copies the audio unchanged. It needs an ffmpeg build that includes libass; if ffmpeg reports that the subtitles filter doesn’t exist, that’s the missing piece. Styling options exist but are fiddly, which is why most people do this step in an editor.

Bottom line

  • Built-in tools won’t write the file. Live Captions shows text and saves nothing; QuickTime and iMovie don’t generate captions.
  • Free and private, Terminal: Whisper. pipx install openai-whisper, then whisper video.mp4 --model turbo --output_format srt.
  • Free, video going public anyway: YouTube Studio’s automatic captions, downloaded and corrected.
  • Already in Final Cut Pro: Transcribe to Captions, then export SRT.
  • Drag and drop, on-device, macOS 26 or later: Zumkor. Pick Create subtitles from speech, choose SRT or VTT, and the captions never leave your Mac. The first run downloads Apple’s speech files. Free for 7 days, then 5 files a day free, or a one-time $19.99 for everything.

Whichever route you pick, the transcript is a first draft. Ten minutes of proofreading is what turns it into captions you can publish.

FAQ

Can a Mac generate subtitles automatically for free?

Yes, with free tools that aren’t built in. OpenAI’s open-source Whisper runs in Terminal and writes an SRT or VTT file from any video, entirely on your Mac. YouTube Studio also creates automatic captions you can download, but only after you upload the video. macOS Live Captions shows captions on screen and saves nothing.

Does Zumkor’s Create subtitles from speech work on macOS 14 or 15?

No. Zumkor itself runs on macOS 14 and later, but Create subtitles from speech needs macOS 26 or later, and the first time you use it the Mac downloads Apple’s speech files. On older macOS, Zumkor still pulls embedded subtitle tracks out of videos and turns SRT files into VTT; for speech transcription there, use Whisper.

Are auto-generated subtitles accurate enough to publish?

For one clear speaker on a decent microphone, they’re usually close, but not publish-ready without a read-through. Names, product terms, numbers and overlapping voices are where transcription slips. Budget a proofreading pass in a text editor before you upload the file anywhere public.