How to Add Burned-In Subtitles to a Video (AI, 2026)
June 17, 2026 · Updated September 30, 2026 · 7 min read
To add burned-in subtitles, auto-generate a timed subtitle file (SRT) from the speech, proofread it, then render the text into the video's pixels — in one pass with an AI tool, or free with FFmpeg or HandBrake. Proofreading is the step that decides the result: once subtitles are burned in, every typo is permanent, and fixing one means rendering the video again.
Burned-in or SRT?
Burned-in subtitles (also called hardcoded or open captions) are part of the picture. An SRT file is a separate text track that the player draws on top.
- Burned-in always shows, on every player, and looks exactly the way you styled it. Viewers can't turn it off, and each language needs its own render.
- SRT can be switched on and off, and one video can carry several languages. YouTube accepts SRT uploads (plain UTF-8, no styling), and LinkedIn lets you attach an SRT to a video post from desktop. It only helps where the platform or player reads caption files.
Practical rule: short social clips → burned-in. YouTube and long-form → SRT. Either way, keep the SRT — it's the editable master for every fix and translation.
Step 1 — Auto-generate the subtitles
Two routes: a one-click tool, or a free one that runs on your own computer.
With AI Growth Kit
- Open the Subtitler and upload the video — MP4, MOV or WebM, up to 30 minutes.
- Pick the spoken language. There are 20 options: English (US, UK), Chinese (Mandarin, Cantonese), Spanish (Spain, Latin America), Portuguese (Brazil, Portugal), French, German, Italian, Japanese, Korean, Russian, Arabic, Hindi, Indonesian, Vietnamese, Thai and Turkish.
- Optionally, pick one of the other languages to translate the subtitles into.
- The output is always an MP4 with the subtitles burned in; there's no separate SRT download. If you want to proofread the text before anything touches the picture, generate the SRT with Whisper instead (below) and burn it in yourself in Step 3.
- Submit. The form shows the cost first: 2 credits per second, so a 60-second clip is 120 credits. If the job fails, the credits come back.
- Download the result from My tasks when it's done.
The Subtitler has no caption editor or style picker, and it can't take an SRT you've already corrected — every run transcribes the audio from scratch. A corrected file gets burned in by you, in Step 3.
With Whisper (free, runs locally)
OpenAI's open-source Whisper model needs Python and FFmpeg installed. This writes an SRT with lines already capped at 42 characters and two lines per subtitle:
pip install -U openai-whisper whisper video.mp4 --model turbo --language English --output_format srt --word_timestamps True --max_line_width 42 --max_line_count 2
Whisper's --task translate only produces English, and the turbo model isn't trained for translation at all. For any other target language, translate the finished SRT text instead.
What you get: an SRT file
An SRT is plain text: a counter, a start and end time, and one or two lines of text per subtitle.
1 00:00:00,000 --> 00:00:03,500 Welcome to AI Growth Kit. 2 00:00:03,500 --> 00:00:07,200 Today I'll show you how to translate videos.
Step 2 — Proofread (the step that matters)
Speech recognition tends to slip on exactly the words your audience notices. Read the SRT against the video once, start to finish:
- Names and brands. Misspelled product names, people, places and technical terms are the errors viewers spot first. Search-and-replace fixes every instance at once.
- Numbers and negations. “15” vs “50”, “can” vs “can't” — one-character errors that flip the meaning.
- Line length. Netflix's English guidelines: 42 characters per line, two lines at most, and one line whenever the text fits.
- Reading speed and duration. Up to 20 characters per second for adult viewers; each subtitle stays on screen for at least 5/6 of a second and at most 7 seconds.
- Line breaks. Break after punctuation or before a conjunction or preposition — never between an article and its noun, or between a first and last name.
- Speech only. Don't subtitle background music. Sound labels such as [upbeat music] belong in accessibility captions, not social subtitles.
Edit in any plain-text editor and save as UTF-8 — YouTube only accepts plain UTF-8 SRT files, and other encodings garble accented and non-Latin characters. A subtitle editor such as Aegisub helps if you need to retime lines visually.
If the subtitles are translated
Check meaning, not words: each line should read like something a native speaker would write, not a word-for-word copy — a literal “break a leg” makes no sense in most languages. Translations into European languages also run longer: IBM's localization guidelines, cited by the W3C, put the expansion from English at about 130% for text over 70 characters and 200–300% for strings under 10. Re-split any line that now breaks the 42-character limit, and for Arabic, check that right-to-left lines and punctuation still read correctly.
Step 3 — Burn in the subtitles (or ship the SRT)
In one pass with the Subtitler
For a short clip with clear speech, the Subtitler run in Step 1 is the whole job. Watch the full output once before you post it — a fix at this point means another run.
With FFmpeg (free, uses your corrected SRT)
ffmpeg -i input.mp4 -vf "subtitles=subs.srt:force_style='FontName=Arial,FontSize=18,Outline=2,MarginV=40'" -c:a copy output.mp4
- The
subtitlesfilter needs an FFmpeg build with libass (configured with--enable-libass). force_styletakes ASS style settings. For SRT input, FFmpeg lays text out on a 384×288 canvas scaled to your video, soFontSize=18is about 6% of the frame height andMarginV=40lifts the text about 14% off the bottom edge. The defaults are Arial at size 16 with an outline width of 1.BorderStyle=3replaces the outline with a solid box behind the text.- For Arabic, Hindi or Thai, add
:shaping=complexafter the file name (it needs libass built with HarfBuzz) so the script renders correctly. - Test on a short piece first: put
-t 10before the output file name to render only 10 seconds. -c:a copykeeps the original audio as is; the video itself is always re-encoded when you burn in subtitles.
With HandBrake (free, no command line)
Open the video, import your SRT on the Subtitles tab, set the track to burn in, and encode. HandBrake also reads styled ASS files if you want to keep fonts and colors.
Shipping the SRT instead
Upload it as a subtitle track on YouTube, or attach it to a LinkedIn video post from desktop. For the next language, translate the text and keep the timecodes.
Formatting that reads well on a phone
- Contrast. White text with a dark outline, or on a translucent dark box. Pure white over a bright sky disappears.
- Position. Bottom center by default. Raise the subtitles if the platform's buttons and captions cover the bottom of the frame, and move them to the top when they would cover text in the picture — Netflix's guidelines allow top or bottom placement and reposition subtitles to avoid on-screen text.
- Size. Judge it on a phone, not on your monitor.
- Punctuation. Keep it light — periods at sentence ends, commas sparingly. Question marks and exclamation points are fine.
Common mistakes
- Burning in before proofreading. One typo then costs a full re-render.
- Trusting brand names. Search the SRT for your product name before anything else.
- Splitting mid-phrase. Break at natural pauses, not in the middle of a clause.
- Translating word for word. A translated subtitle should read naturally in the target language.
- Saving in the wrong encoding. Accents and non-Latin scripts turn into gibberish; save as UTF-8.
- Throwing away the SRT. Without it, every later fix or translation starts from zero.
What it costs
On AI Growth Kit, subtitles cost 2 credits per second, with or without translation. A 60-second clip is 120 credits: $2.94 at the Pro plan's rate, $3.80 on Starter, or $5.40 from the $9 Starter Pack (see pricing). The 20 free credits you get at sign-up cover a 10-second test, with no watermark. The Whisper + FFmpeg route costs nothing but your time. For Otter, Descript and VEED prices side by side, see our AI subtitle generator comparison.
Try it
Upload a clip to the Subtitler — the exact credit cost appears as soon as you choose the file. Need the video itself in another language? See how to translate a video with AI.