How to add captions to a screen recording on a Mac
TL;DR
- Decide the type first. Burned-in captions are part of the picture and show everywhere (use them for social clips and anything that autoplays muted). Closed captions are a separate .srt or .vtt file the viewer can turn off (use them for YouTube, Vimeo and course platforms).
- Free and built in: iMovie can only fake captions with titles you type and time by hand. macOS Live Captions shows words on screen as you watch, but it isn’t built to make a caption file. Final Cut Pro can generate them, but it’s paid and the auto captions are US English only.
- Free and automatic: run OpenAI’s Whisper on your Mac to get an .srt, then burn it in with HandBrake if you need it in the picture.
- Keep them readable: no more than 42 characters a line, two lines at most, each caption on screen for between about 1 and 7 seconds.
- Edit first, caption last. Every cut you make after generating an .srt pushes the timings out of sync.
You’ve recorded your screen with ⇧⌘5 (or anything else) and now you want words on it. There are four realistic ways to do that on a Mac, two of them free, and which one is right depends mostly on where the video is going. Here’s how each works, what it costs at the time of writing (October 2026) and the rules that stop captions being hard to read.
Burned-in or closed captions
This choice decides which tool you need, so make it first.
Burned-in (open) captions are drawn into the video frames. They show on every player, in every app, with no setting to find, and you control the font, size and position. The downside: nobody can turn them off, they can’t be translated by the player, and fixing a typo means exporting the whole video again.
Closed captions live in a separate text file, usually .srt (SubRip) or .vtt (WebVTT), that you upload beside the video. Viewers switch them on and off, the player styles them, and search engines and platforms can read the text. You can fix a typo in the file without re-exporting anything.
My rule of thumb:
- Burn them in for clips that will play in a feed, a slide deck or a chat app, where videos often start muted and you can’t count on anyone finding a CC button.
- Use a caption file for YouTube, Vimeo, an LMS or your own site. It’s better for accessibility because viewers can resize or restyle them.
- Do both if you’re posting the same video in both kinds of place. Generate the .srt once and burn a copy in.
What an .srt file actually is
It’s plain text. A number, a start and end time, one or two lines of words, then a blank line:
1
00:00:01,200 --> 00:00:03,900
Open Settings and click Billing.
2
00:00:04,100 --> 00:00:07,400
The invoice you want is at the top,
under this month.
Times use a comma before the milliseconds. A .vtt file is nearly the same, with a WEBVTT line at the top and a full stop instead of the comma. YouTube’s supported formats page says .srt files must be plain UTF-8 and that styling markup is ignored, so don’t bother adding bold or colours.
Free option 1: iMovie titles (manual)
iMovie has no caption feature. Apple’s own iMovie text guide only covers titles, and that’s what people use instead:
- Drag your recording into a project.
- Put the playhead where the first line is spoken, click Titles above the browser and double-click a lower-third style.
- Double-click the title in the viewer, type the line and click Apply.
- Drag the ends of the title clip in the timeline to match when the line starts and stops.
- Copy and paste that title along the timeline and retype each one.
It works, and the captions are burned in when you export. But the maths is grim: at around 160 words a minute, a five-minute walkthrough is about 800 words, or roughly 100 captions to type and time by hand. I’d only do this for a clip under a minute. iMovie can’t export an .srt either.
Free option 2: macOS Live Captions (watching, not making)
Live Captions turns speech into text as it plays, on device. Turn it on in System Settings → Accessibility → Live Captions. Apple’s Live Captions guide says it needs a Mac with Apple silicon, and the feature availability page lists the languages (English in the UK, US, Canada, Australia, India and Singapore, plus French, German, Japanese, Korean, Cantonese and others).
It’s good for checking what your video sounds like with no audio. It isn’t a captioning tool: the guide describes a floating window you read, not a file you export, and the words aren’t timed to your video.
Free option 3: Whisper, the free way to generate an .srt
OpenAI’s Whisper is an open-source speech recognition model that runs on your own Mac, so your recording never leaves it. If you’re happy in Terminal, it’s the best free route to a properly timed caption file:
brew install ffmpeg
pip install -U openai-whisper
whisper recording.mov --model turbo --language en --output_format srt --word_timestamps True --max_line_width 42 --max_line_count 2
That writes recording.srt beside the video. The last three flags matter: without them Whisper writes long, sentence-sized captions that are hard to read. The first run downloads the model. The turbo model is the default and the README says it works well for English. For other languages, try medium or large.
If you’d rather not use Terminal, there are Mac apps that wrap Whisper. MacWhisper, for example, has a free version and a €64 one-off Pro licence at the time of writing, and its site lists .srt and .vtt export. Check which models the free version includes before you rely on it.
Whatever you use, read the file through before publishing. Speech recognition gets product names, people’s names and code wrong more than anything else, which is exactly what screen recordings are full of.
Burning the .srt in for free
HandBrake (free) imports an .srt from its Subtitles tab and can either burn it into the picture or add it as a track you can switch off. Burn it in for an MP4 that shows captions everywhere.
A warning if you’ve seen the usual ffmpeg recipe with -vf subtitles=…: that filter needs libass, and Homebrew’s ffmpeg (9.0.2 at the time of writing) isn’t built with it, so the command stops with “No such filter: subtitles”. HandBrake is less fiddly anyway.
Paid on the Mac: Final Cut Pro
Final Cut Pro can generate captions from speech. Select clips and choose Edit → Generate Captions → Closed Captions (⇧⌘C). According to Apple’s guide, it needs Apple silicon, downloads a language model the first time and is US English only. It creates captions in iTT format, so convert them if you want SRT.
To get a file out, choose File → Export Closed Captions. Apple suggests unticking Include Formatting for SRT, since other players may ignore it. To burn them in, pick the burn-in option in your share destination’s settings (Apple’s export page lists which destinations support it).
The cost, from Apple’s site at the time of writing: £299.99 one-off, or included in Apple Creator Studio at £12.99 a month or £129 a year after a 30-day free trial. It needs macOS 15.6 or later. That’s a lot for captions alone, and fair value if you edit every week.
Online caption tools and their limits
Browser tools are quick to start with, but the free plans are mostly demos. At the time of writing:
- VEED (pricing): the free plan watermarks videos and includes 10 minutes of subtitles a month. Creator is $25 a month, or $12.25 a month paid yearly.
- Kapwing (pricing): the free plan watermarks exports, caps them at 720p and 4 minutes and allows 10 minutes of auto subtitles. Pro is $16 a month.
Two things to weigh beyond price. You’re uploading a recording of your screen, which may show customer data, internal tools or a stray notification, to someone else’s servers. And a watermark on a product demo looks worse than no captions.
Rules that make captions readable
Most auto-caption tools get the words right and the layout wrong. These figures come from two well-known guides, the BBC subtitle guidelines and Netflix’s English timed text style guide and general requirements.
| Rule | Netflix | BBC |
|---|---|---|
| Line length | 42 characters | 68% of the width of a 16:9 video, 90% for square or vertical (37 characters on broadcast Teletext) |
| Lines per caption | 2 maximum | 2 for 16:9 or square, 3 for vertical |
| Reading speed | 20 characters a second for adults (17 for children) | 160–180 words a minute, about 0.3 seconds a word minimum |
| Time on screen | 5/6 of a second minimum, 7 seconds maximum | Roughly 1.2 seconds for a four-word caption |
For line breaks, Netflix says to break after punctuation and before words like “and”, “but” or “to”, and never to split a first name from a surname or an article from its noun. The bottom line should be the longer one.
What I do for screen recordings: one line where possible, two at most, and a new caption at every sentence or comma. Viewers are reading captions while watching your cursor, so shorter captions leave more attention for the screen. Keep burned-in captions out of the bottom strip if that’s where your app’s important buttons are, or move them to the top for that section.
Upload an .srt to YouTube
From YouTube’s help page:
- In YouTube Studio, click Subtitles in the left menu and pick the video.
- Click Add language and choose the language spoken.
- Under Subtitles, click Add, then Upload file, choose your .srt and, if asked, pick With timing.
- Check it in the preview and click Save.
If you have a plain transcript with no timings, choose Auto-sync instead and YouTube times it for you. YouTube doesn’t recommend this for videos over an hour or with poor audio.
Upload the .srt for the version you actually published. If you trimmed the intro after making the file, every caption will be early by the length of the trim. In my experience that’s the usual reason captions feel “a bit off”.
Doing it in Blazing Video
We make Blazing Video, a Mac app that records and edits screen recordings, so weigh this section accordingly. It’s free during a private beta and needs macOS 15 or later.
Captions are part of the editing rather than a separate step. Press ⌥⇧R to record and again to stop, and the transcript is ready about half a second later. It’s transcribed on your Mac (Parakeet on the Neural Engine), and then every word is aligned to the audio. You edit by deleting words, and the captions follow the cut, so the timing problem above doesn’t come up.
- Burned in: turn on captions, pick one of about 11 looks (some highlight word by word), set the colours and drag or resize them on the video. Export an MP4 in the original shape, or reframed as portrait, square or widescreen.
- Caption file: export an .srt or .vtt timed to the edited video, ready for the YouTube steps above.
- Share link: every link already has captions and a clickable transcript, on by default on phones and when muted. More in this post.
If you use Claude, it can add captions and export for you through the built-in MCP server. You can download it here.
FAQ
Can iMovie generate captions automatically?
No. iMovie has no caption or transcription feature. You can type captions as titles and time each one by hand, or generate an .srt with Whisper and burn it in with HandBrake.
Does a Mac have a built-in caption generator?
Not one that makes a caption file. Live Captions (Apple silicon only) shows speech as text while you watch, but it doesn’t produce a timed file. Final Cut Pro can generate captions, but it’s a paid app and auto captions are US English only.
How do I create an SRT file from a video on a Mac for free?
Install Whisper (pip install -U openai-whisper, plus ffmpeg from Homebrew) and run: whisper video.mov --model turbo --output_format srt --word_timestamps True --max_line_width 42 --max_line_count 2. You can also write one by hand in TextEdit in plain-text mode.
What’s the difference between open and closed captions?
Open (burned-in) captions are part of the picture and always visible. Closed captions are a separate file, such as .srt or .vtt, that viewers can turn on or off.
How many characters should a caption line have?
Netflix sets 42 characters a line, two lines at most, at no more than 20 characters a second. The BBC recommends 160–180 words a minute and lines no wider than 68% of a 16:9 frame.