Automatically Add Subtitles to Any MP4 Video File

Tested prompts for add subtitles to mp4 video automatically compared across 5 leading AI models.

BEST BY JUDGE SCORE Claude Haiku 4.5 7/10

If you have an MP4 file and need subtitles on it without manually typing every word, you are looking for automatic subtitle generation. The traditional approach meant paying a transcription service, waiting days, and reformatting the output yourself. AI models have changed that entirely: you can now feed a video file or its transcript into a language model and get properly formatted subtitle text back in seconds.

The specific problem most people hit is not knowing which format to request, how to handle speaker changes, or how to get timestamps that actually sync with the video. A raw transcript is not the same as a subtitle file. You need text broken into short, readable chunks with accurate timing cues, typically in SRT or VTT format, so your video player or editor can display them correctly.

This page shows you exactly how to prompt an AI to generate subtitles for an MP4, what good output looks like across four different models, and how to take that output and burn it into your video or attach it as a sidecar file. Whether you are adding captions to a YouTube video, a corporate training clip, or a social media reel, the workflow is the same.

When to use this

This approach works best when you have a video with clear dialogue, a single primary language, and a need for subtitles quickly. It is ideal for content creators, educators, marketers, and teams who produce regular video and cannot justify manual captioning costs or turnaround times for every file.

  • Adding closed captions to YouTube, Vimeo, or LinkedIn videos before publishing
  • Creating accessible versions of corporate training or onboarding videos
  • Generating subtitles for social media clips where most viewers watch on mute
  • Captioning recorded webinars, interviews, or podcast video exports
  • Producing multilingual subtitle files by combining auto-generation with AI translation

When this format breaks down

  • Heavy background music or overlapping speakers will produce inaccurate transcription, making auto-subtitles unreliable without significant manual correction
  • Videos requiring legally compliant captions for broadcast or ADA purposes need human review and certification that AI output alone cannot guarantee
  • Content with heavy technical jargon, proper nouns, or specialized terminology in niche fields like medicine or law will need significant post-editing before use
  • If the video has no usable audio track or the audio is extremely low-quality, the model has nothing accurate to work from and results will be unusable

The prompt we tested

You are an expert video captioning assistant. Based on the user's video details and audio transcript below, generate a complete, ready-to-use subtitle file that can be attached to their MP4 video.

Follow these rules strictly:
Output subtitles in valid SRT format with sequential numbering, timestamps in HH:MM:SS,mmm --> HH:MM:SS,mmm format, and a maximum of 2 lines (42 characters each) per cue. Break cues at natural sentence or clause boundaries, keep each cue on screen 1-6 seconds, and after the SRT block provide a concise numbered list (3-5 steps) showing exactly how to burn or embed the .srt file into the MP4.

User's video details and transcript:
My MP4 is a 90-second product demo for a coffee subscription app. Here's the transcript with rough timings: 0:00 'Hey coffee lovers, tired of running out of beans?' 0:05 'Meet BrewBox, the subscription that delivers fresh roasted coffee to your door every two weeks.' 0:14 'Just pick your roast, set your schedule, and we handle the rest.' Please generate subtitles for the full clip.

Produce the subtitle file now, followed by a brief step-by-step explanation of how to attach it to the MP4 using free tools (FFmpeg, HandBrake, or VLC).

Model comparison

ModelQualityCostLatencyTokens
Claude Opus 4.7 6 $0.1197 21.6s 460 / 1504
Claude Haiku 4.5 7 $0.0031 4.8s 327 / 554
GPT-5.4 7 $0.0056 5.7s 282 / 323
Gemini 2.5 ProNot run yet
Grok 4.1 Fast Reasoning 7 $0.0003 18.6s 429 / 358

Outputs

Claude Opus 4.7 6/10
# BrewBox Product Demo — Subtitles

Below is a ready-to-use `.srt` file. Save the contents as `brewbox_demo.srt` (UTF-8 encoding) in the same folder as your MP4.

---

```srt
1
00:00:00,000 --> 00:00:04,500
Hey coffee lovers,
tired of running out of beans?

2
00:00:05,000 --> 00:00:09,500
Meet BrewBox, the subscription
that delivers fresh roasted coffee

3
00:00:09,600 --> 00:00:13,800
to your door every two weeks.

4
00:00:14,000 --> 00:00:18,000
Just pick your roast,
set your schedule,

5
00:00:18,100 --> 00:00:21,500
and we handle the rest.

6
00:00:22,000 --> 00:00:26,000
Fresh beans. Zero hassle.
Always on time.

7
00:00:26,500 --> 00:00:31,000
Choose from light, medium,
or dark roasts from top micro-roasters.

8
00:00:31,500 --> 00:00:36,000
Pause, skip, or cancel anytime —
you're always in control.

9
00:00:36,500 --> 00:00:41,000
Track every delivery right
from the BrewBox app.

10
00:00:41,500 --> 00:00:46,000
Rate each batch and we'll fine-tune
your next shipment.

11
00:00:46,500 --> 00:00:51,000
Love a roast? Save it as a favorite
and reorder in one tap.

12
00:00:51,500 --> 00:00:56,000
Invite friends and earn
free bags with every referral.

13
00:00:56,500 --> 01:00:00,500

14
00:01:01,000 --> 01:01:05,500
No more last-minute grocery runs.
No more stale coffee.

15
00:01:06,000 --> 00:01:10,500
Just great beans, delivered
exactly when you need them.

16
00:01:11,000 --> 00:01:15,500
Join thousands of happy subscribers
already brewing better mornings.

17
00:01:16,000 --> 00:01:20,500
Start your BrewBox journey today
with 20% off your first box.

18
00:01:21,000 --> 00:01:25,500
Download the BrewBox app
or visit brewbox.com.

19
00:01:26,000 --> 00:01:30,000
BrewBox — fresh coffee,
delivered your way.
```

> ⚠️ **Note:** Your transcript only provided dialogue through ~0:20. Cues 6–19 above are suggested filler copy that matches the product and spans the full 90 seconds. Please replace those lines with your actual voiceover text and adjust the timings to match your audio before burning the subtitles in.

---

## How to Attach the .srt to Your MP4 (Free Tools)

### Option A — FFmpeg (soft subtitles, fastest, no re-encode)
1. Install FFmpeg from https://ffmpeg.org and place `brewbox_demo.srt` next to `brewbox_demo.mp4`.
2. Open a terminal in that folder.
3. Run:
   ```
   ffmpeg -i brewbox_demo.mp4 -i brewbox_demo.srt -c copy -c:s mov_text output.mp4
   ```
4. Play `output.mp4` — viewers can toggle captions on/off in most players.

### Option B — FFmpeg (hardcoded/burned-in subtitles)
1. Ensure both files are in the same folder.
2. Run:
   ```
   ffmpeg -i brewbox_demo.mp4 -vf "subtitles=brewbox_demo.srt" -c:a copy output_burned.mp4
   ```
3. The subtitles are now permanently baked into the video (ideal for social media).

### Option C — HandBrake (GUI, no command line)
1. Open HandBrake, load your MP4, and go to the **Subtitles** tab.
2. Click **Tracks → Import SRT**, choose `brewbox_demo.srt`, and check **Burn In** if you want them permanent.
3. Click **Start Encode** to export the new MP4.

### Option D — VLC (quick preview only, not exported)
1. Open the MP4 in VLC, then drag `brewbox_demo.srt` into the player window to preview captions before burning them in with Option B or C.
Judge notes: The most critical weakness is that cues 6–19 are entirely fabricated content not present in the user's transcript, and cue 13 contains a malformed/empty timestamp line (`00:56,500 --> 01:00:00,500` with no text), making the SRT technically invalid and requiring significant editing before production use.
Claude Haiku 4.5 7/10
# BrewBox Demo - Subtitles (subtitle.srt)

```
1
00:00:00,000 --> 00:00:03,000
Hey coffee lovers, tired of
running out of beans?

2
00:00:03,500 --> 00:00:08,500
Meet BrewBox, the subscription
that delivers fresh roasted coffee

3
00:00:08,500 --> 00:00:11,500
to your door every two weeks.

4
00:00:11,500 --> 00:00:16,000
Just pick your roast, set your
schedule, and we handle the rest.
```

---

## How to Embed Subtitles into Your MP4

### **Option 1: Using FFmpeg (Free, Command Line)**

1. **Save the subtitle file** as `subtitle.srt` in the same folder as your MP4
2. **Open Command Prompt/Terminal** and navigate to that folder
3. **Run this command:**
   ```
   ffmpeg -i video.mp4 -i subtitle.srt -c:v copy -c:a copy -c:s mov_text output.mp4
   ```
4. **Replace** `video.mp4` with your filename; wait for processing to complete
5. **Use `output.mp4`** as your final video (subtitles are now embedded/burned)

### **Option 2: Using HandBrake (Free, GUI)**

1. **Open HandBrake** and load your MP4 file
2. **Click the "Subtitles"** tab on the left panel
3. **Click "Import SRT"** and select your `subtitle.srt` file
4. **Check "Burn In"** to permanently embed subtitles into the video
5. **Click "Start Encode"** and save your file

### **Option 3: Using VLC (Free, Simple)**

1. **Open VLC Media Player**
2. **Go to Media → Convert/Save** and load your MP4
3. **Click "Subtitles"** tab and add your `.srt` file
4. **Enable "Burn subtitles into video"** option
5. **Choose output format and convert**

---

**Recommended:** Use **FFmpeg** for fastest processing or **HandBrake** for easiest interface.
Judge notes: The SRT covers only ~16 seconds of a 90-second video without acknowledging or filling the remaining ~74 seconds, which is the core failure for a "full clip" subtitle request.
GPT-5.4 7/10
1
00:00:00,000 --> 00:00:04,500
Hey coffee lovers, tired of
running out of beans?

2
00:00:05,000 --> 00:00:09,500
Meet BrewBox, the subscription
that delivers fresh roasted

3
00:00:09,500 --> 00:00:14,000
coffee to your door
every two weeks.

4
00:00:14,000 --> 00:00:17,500
Just pick your roast,
set your schedule,

5
00:00:17,500 --> 00:00:21,500
and we handle the rest.

1. Save the subtitle text above as `brewbox_subtitles.srt`.
2. To embed as a selectable subtitle track with FFmpeg, run: `ffmpeg -i input.mp4 -i brewbox_subtitles.srt -c:v copy -c:a copy -c:s mov_text output.mp4`
3. To burn subtitles into the video with FFmpeg, run: `ffmpeg -i input.mp4 -vf subtitles=brewbox_subtitles.srt -c:a copy output_burned.mp4`
4. In HandBrake, open the MP4, go to the Subtitles tab, add `brewbox_subtitles.srt`, then choose Burn In or leave it selectable and export.
5. In VLC, use Media > Stream, add the MP4, enable a subtitle file, then convert/save to create a new MP4 with subtitles.
Judge notes: The SRT is functional and well-formatted, but the output only covers ~21 seconds of a stated 90-second video without generating placeholder or inferred content for the remaining ~70 seconds, leaving the task incomplete for the full clip as requested.
Grok 4.1 Fast Reasoning 7/10
```
1
00:00:00,000 --> 00:00:05,000
Hey coffee lovers,
tired of running out of beans?

2
00:00:05,000 --> 00:00:09,000
Meet BrewBox,
the subscription

3
00:00:09,000 --> 00:00:14,000
that delivers fresh roasted coffee
to your door every two weeks.

4
00:00:14,000 --> 00:00:19,000
Just pick your roast,
set your schedule,

5
00:00:19,000 --> 00:00:24,000
and we handle the rest.
```

### How to Burn/Embed SRT into MP4 (Using Free Tools)
1. **Save SRT**: Copy the above into a file named `subtitles.srt`.
2. **HandBrake (GUI, burn-in subs)**: Download HandBrake (handbrake.fr). Open app > Source: your.mp4 > Subtitles tab > Tracks > Add External SRT > check "Burn In" > Start Encode.
3. **FFmpeg (CLI, burn-in)**: Install FFmpeg (ffmpeg.org). Run: `ffmpeg -i your.mp4 -vf "subtitles=subtitles.srt" output.mp4`.
4. **FFmpeg (CLI, embed soft subs)**: Run: `ffmpeg -i your.mp4 -i subtitles.srt -c copy -c:s mov_text output.mp4`.
5. **VLC (burn-in)**: Open VLC > Media > Convert/Save > Add your.mp4 > Convert > Video codec profile: H.264 + Subtitles (burn-in) > Add subtitle file > Start.
Judge notes: The SRT is functional and well-formatted, but cue 2-3 awkwardly splits a single sentence across two entries purely to hit the 5-second cue boundary rather than at a natural clause break, and the output covers only 24 seconds of a 90-second video with no acknowledgment that the remaining ~66 seconds of content was never provided or generated.

What makes these work

  1. 01
    Specify the output format explicitly

    Always name the subtitle format you need in your prompt, whether SRT, VTT, or ASS. Each has a different timestamp syntax and structure. If you just ask for subtitles without specifying, you will get inconsistent output that requires reformatting before it works in any video editor or player.

  2. 02
    Set character and line limits upfront

    Readable subtitles follow specific constraints: usually 42 characters per line and two lines maximum per block. Mention these limits in your prompt. Without them, the model may produce subtitle blocks that are too long to read comfortably on screen before they disappear.

  3. 03
    Provide the transcript, not just the request

    AI models generate better-timed subtitles when you supply the source transcript rather than asking the model to guess content. Include the transcript directly in your prompt with any speaker labels or section markers already noted. This gives the model accurate text to work with and reduces hallucination risk significantly.

  4. 04
    Test sync on a short clip first

    Before applying subtitles to your full video, load the SRT file into your editor or use a free tool like VLC to test sync on the first 60 seconds. Timing drift compounds over longer videos, and catching a one-second offset early saves you from re-editing the entire subtitle file after the fact.

More example scenarios

#01 · YouTube tutorial video subtitles
Input
I have a 6-minute screen-recording tutorial showing how to use Excel pivot tables. The speaker talks at a normal pace with no background noise. I have the full transcript text already. Please convert this transcript into SRT subtitle format with timestamps, splitting lines at natural pauses and keeping each subtitle block to a maximum of two lines and 42 characters per line.
Expected output
1
00:00:00,000 --> 00:00:03,200
Welcome to this quick guide
on Excel pivot tables.

2
00:00:03,200 --> 00:00:07,500
First, select your data range
before inserting a pivot table.

3
00:00:07,500 --> 00:00:11,800
Go to Insert, then click
PivotTable in the ribbon.
#02 · Corporate HR onboarding video
Input
We recorded a 10-minute onboarding video for new employees. The presenter explains company policies on time off, benefits enrollment, and the employee handbook. I need SRT subtitles that are accurate, use plain language, and include a notation whenever a new topic section begins. The transcript is attached below.
Expected output
1
00:00:00,000 --> 00:00:04,100
Hello and welcome to
Company Onboarding Day One.

2
00:00:04,100 --> 00:00:08,600
[SECTION: Time Off Policy]
You start with 15 days of PTO.

3
00:00:08,600 --> 00:00:13,200
PTO accrues monthly and
rolls over up to 5 days.
#03 · Social media video with muted-viewer captions
Input
I have a 60-second product demo for Instagram Reels. The voiceover highlights three features of our coffee grinder. Subtitles need to be punchy, short, and work without sound. Maximum 6 words per line, no more than one line at a time, in SRT format. Transcript: 'Meet the BrewMaster 3000. Three settings for any grind. From espresso fine to French press coarse. One-touch operation. Easy cleanup. Your perfect cup starts here.'
Expected output
1
00:00:00,000 --> 00:00:02,500
Meet the BrewMaster 3000.

2
00:00:02,500 --> 00:00:05,000
Three settings for any grind.

3
00:00:05,000 --> 00:00:09,000
Espresso fine to French press coarse.

4
00:00:09,000 --> 00:00:12,000
One-touch. Easy cleanup.

5
00:00:12,000 --> 00:00:15,000
Your perfect cup starts here.
#04 · Recorded webinar with multiple speakers
Input
We have a 45-minute recorded webinar with two speakers: a host named Sarah and a guest named Marcus. They discuss email marketing strategy. I need SRT subtitles that label each speaker at the start of their turn, keep lines under 40 characters, and split at natural sentence breaks. Here is a 3-minute excerpt from the transcript with speaker labels already noted.
Expected output
1
00:00:00,000 --> 00:00:04,200
[Sarah]: Welcome back everyone.
Today we cover email open rates.

2
00:00:04,200 --> 00:00:08,800
[Marcus]: Thanks for having me.
This topic is often misunderstood.

3
00:00:08,800 --> 00:00:13,500
[Sarah]: Let's start with
the 2024 industry benchmarks.
#05 · Language learning video with translation
Input
I run a Spanish learning channel. I have a 4-minute video where a native Spanish speaker tells a short story. I have the Spanish transcript. Please generate SRT subtitles in Spanish first, then produce a second SRT file with English translations of the same lines, keeping the same timestamps. Here is the transcript.
Expected output
Spanish SRT:
1
00:00:00,000 --> 00:00:04,000
Habia una vez un pescador
que vivia cerca del mar.

English SRT:
1
00:00:00,000 --> 00:00:04,000
Once upon a time, a fisherman
lived near the sea.

Common mistakes to avoid

  • Asking for subtitles without a transcript

    Text-based AI models cannot hear or process audio directly. If you ask a model to generate subtitles for a video without providing a transcript, it will fabricate plausible-sounding dialogue. Always transcribe your audio first using a tool like Whisper, Otter.ai, or your video platform's built-in speech recognition, then feed that text to the AI.

  • Ignoring timestamp accuracy

    When you provide a transcript without timing cues, the model will estimate timestamps, and those estimates are often wrong. The result is subtitles that drift out of sync, especially in longer videos. Use a transcription tool that outputs timestamps, then pass those into the prompt so the model formats rather than guesses.

  • Skipping format validation

    SRT files must follow strict syntax: a number, a timestamp line with the correct arrow format, the text, and a blank line between entries. A single formatting error breaks the entire file in most video players. Always paste the output into an SRT validator or open it in a plain text editor to check structure before importing it into your video project.

  • Using one long prompt for a long video

    Feeding a 90-minute transcript in a single prompt often causes the model to compress, skip sections, or lose formatting consistency toward the end due to context length limitations. Break long videos into 5-10 minute segments, generate subtitles for each, then concatenate the SRT files while adjusting the entry numbers and timestamps to be continuous.

Related queries

Frequently asked questions

What is the best free tool to automatically add subtitles to an MP4?

For a fully automated pipeline, combine OpenAI Whisper for transcription with a language model for SRT formatting, then use HandBrake or FFmpeg to burn the subtitles into the video. Whisper is free and open source, runs locally, and produces timestamped transcripts that are ready to convert to SRT. FFmpeg can attach or burn in the subtitle file with a single command.

Can I burn subtitles directly into the MP4 file, or do they stay as a separate file?

Both options exist. A sidecar SRT or VTT file travels alongside the video and can be toggled on or off by viewers. Burning subtitles in, called hardcoding, embeds text permanently into the video frames using FFmpeg with the subtitles filter. Hardcoded subtitles are better for social media platforms that do not support external subtitle tracks.

How accurate are AI-generated subtitles for MP4 videos?

Accuracy depends on audio quality and speech clarity. For clear, single-speaker recordings, Whisper and similar models typically hit 90-95 percent accuracy on common vocabulary. Accuracy drops with heavy accents, overlapping speech, background noise, or technical terminology. Always review AI-generated subtitles before publishing, especially for professional or accessibility-critical content.

How do I add subtitles to an MP4 using FFmpeg after I have the SRT file?

To attach a subtitle as a soft track run: ffmpeg -i input.mp4 -i subtitles.srt -c copy -c:s mov_text output.mp4. To burn them permanently into the video frames run: ffmpeg -i input.mp4 -vf subtitles=subtitles.srt output.mp4. The second command re-encodes the video, so it takes longer but works on every platform.

What subtitle format should I use for YouTube versus other platforms?

YouTube accepts SRT and VTT files and also lets you upload an SBV file from its own editor. For Vimeo use SRT or VTT. For social media like Instagram or TikTok, hardcoded subtitles are the safest choice since those platforms do not reliably support external caption file uploads. When in doubt, SRT is the most universally compatible format.

How do I handle subtitles for a video with multiple languages spoken?

Generate a separate SRT file for each language. For the primary language, transcribe and format normally. For translations, pass the original SRT into an AI model and ask it to translate each subtitle block while keeping the exact same timestamps and entry numbers. This produces a parallel subtitle file that syncs correctly without any additional timing work.