Skip to content

How to Add Captions to a Video in 2026 (Every Method)

Illustration of a video frame with a caption band along its lower edge beside a flattened audio waveform
📋
TL;DR
Two steps, always: make a caption file, then attach it wherever the video lives.
The real decision: burned-in captions are permanent and work anywhere; a separate file can be toggled off and stays editable.
Format: SRT for YouTube and social, VTT for anything played in a browser.
On your own site: a caption file only works if the player reads a <track> element and your host actually serves the file.

Adding captions to a video takes two steps: create a caption file that holds the text and its timings, then attach that file to the video wherever it plays. Every method below is a variation on those two steps.

Which method you pick depends almost entirely on one question: do you want the words baked into the picture, or riding alongside it as a file the viewer can switch off? That single choice determines your format, your tools, and how much work it takes to fix a typo later.

Most guides stop at YouTube and TikTok. This one covers those, and then keeps going to the part that trips people up — putting a captioned video on your own website, where nothing is automatic and the caption file has to be served correctly to show up at all.

Captions or subtitles: does the difference matter?

ℹ️
Captions vs subtitles: Captions assume the viewer cannot hear the audio, so they include speaker labels and relevant sounds. Subtitles assume the viewer can hear but does not understand the language, so they translate dialogue only (W3C Web Accessibility Initiative).

In practice the file formats are identical and most platforms use the words interchangeably. The distinction matters in two situations: when you have an accessibility obligation, where sound information is required rather than optional, and when you are translating into other languages.

If you are captioning for legal compliance rather than reach, the requirements are stricter than anything in this guide — our breakdown of video accessibility and WCAG caption standards covers what actually has to be there.

Should you burn captions in or use a separate file?

This is the fork in the road, and it is worth getting right before you start. Burned-in captions — formally called open captions — are a permanent part of the video picture and cannot be turned off. Closed captions are the more common type, held in a separate file so the viewer can switch them on or off (WebAIM).

  Burned in Separate file
Viewer can turn off No Yes
Fixing a typo Re-export the whole video Edit a text file
Search engines can read it No Yes
Works if the player ignores captions Yes No
Multiple languages One video per language One file per language

The practical rule: burn them in for short social video, where the feed autoplays muted and you want zero chance of the text not appearing. Use a separate file everywhere else — long-form video, anything on your own site, and anything you might need to correct later.

Illustration of a forked road, one path with a band pressed into the pavement and the other carrying it on a loose sheet
Burned-in captions travel as part of the road; a caption file travels alongside it and can be swapped without repaving.

Step 1: Make the caption file

Whichever route you take, you need timed text first. There are three ways to get it, and they trade accuracy against effort.

Automatic transcription

Most tools now generate a first draft from the audio automatically — this is the fastest path by a wide margin. It is also the one people trust too much. Auto-captioning reliably struggles with proper nouns, technical vocabulary, and fast or overlapping speech, which is exactly the language your brand and product names live in.

Treat the output as a draft, not a deliverable. Read it against the audio once before you publish. A caption track that confidently misspells your own product name is worse than no captions.

Platform auto-captions

YouTube generates captions on upload at no cost, and you can edit them in YouTube Studio and then download the corrected file. This is a genuinely useful shortcut even if YouTube is not your final destination: upload, let it transcribe, fix the errors, export the file, then use that file wherever you actually want the video.

Writing it by hand

For short videos, or scripted ones where you already have the words, writing the file yourself is often faster than correcting a machine draft. The format is plain text with timestamps, and you can write it in any text editor — our guide to making a VTT file walks through the exact syntax and the formatting rules that break players.

Step 2: Add the captions where the video lives

Now attach the file. Every platform accepts a caption upload; they differ in which formats they take and where the option hides.

Where Accepts How
YouTube SRT, VTT, and more Studio → Subtitles → Upload file
LinkedIn SRT, VTT Attach at post time, before publishing
Short-form social Usually burned in Add in the editor before export
Your own website VTT (SRT in some players) A <track> element — see below

Two details catch people out on LinkedIn. The caption file has to go on at post time, via Edit → Select Caption before you publish, and it is desktop only (LinkedIn Help). There is no "add captions later" on a published post, so if you forget, you are deleting it and starting over. And because auto-captions are now on by default, uploading your own file without switching them off leaves the video showing two competing sets of captions.

Illustration of one sheet being offered to three differently shaped doorways at once
One caption file, several destinations — each platform takes the same file through a differently shaped door.

How do you add captions to a video on your own website?

This is where the guides usually stop and the problems usually start. On your own site there is no upload button — you attach captions in the markup, using a <track> element nested inside the video element.

<video controls src="my-video.mp4">
  <track default kind="captions" srclang="en" label="English" src="captions.vtt">
</video>

The attributes matter. kind="captions" tells the browser these are captions rather than subtitles or chapters, srclang is the language code, and default makes the track display without the viewer switching it on. Full attribute reference lives in the MDN documentation for the track element.

Three things break this in practice, and none of them produce a helpful error message:

  • The file is not actually reachable. Open the .vtt URL directly in a browser. If it does not load, the player has nothing to display.
  • It is served with the wrong content type. WebVTT files should be served as text/vtt. Some hosts guess wrong and browsers quietly refuse the file.
  • Cross-origin restrictions. If the caption file sits on a different domain from the video, the request can be blocked unless the host sends the right headers.

That last pair is the reason "the captions work locally but not live" is such a common complaint. The markup is fine; the hosting is what fails. This is the same class of problem behind uploading video directly to WordPress — the file technically exists, but nothing is set up to deliver it properly.

🚀
Captions only help if the video actually plays
SmartVideo hosts and delivers the video on your own site, ad-free and unbranded, and its player reads a standard <track> element — VTT or SRT — so your caption file rides along. It will not write the captions for you; you bring the file. See how SmartVideo handles video on your site

Worth being straight about the limits: SmartVideo does not transcribe your audio. It can import captions that already exist on a YouTube or Vimeo source you are converting, and it will serve a caption file you supply, but generating the text is still your job. The exact tag syntax is in the SmartVideo captions help article.

SRT or VTT: which format should you use?

Two formats cover essentially everything. They are both plain text and they look nearly identical.

  SRT VTT
Best for YouTube, social, broadcast Anything in a browser
Timestamp separator Comma Period
Styling and positioning No Yes
HTML5 standard No Yes

Pick VTT if the video plays in a browser and SRT for everything else. If you have one and need the other, converting is a single command with ffmpeg:

ffmpeg -i captions.srt captions.vtt

Mistakes that make captions worse than useless

Captions fail quietly. The file loads, the text appears, and it is still doing a bad job. The recurring problems:

  • Publishing the machine draft unread. Auto-transcription is a starting point. Names, jargon, and numbers are where it breaks, and those are usually the words that matter most.
  • Cramming too much on screen. The DCMP Captioning Key sets the working standard at no more than two lines per caption, kept to roughly 32 characters a line. Longer blocks outrun the viewer and cover the picture.
  • Dropping the sound information. If a viewer cannot hear, "[door slams]" may be the reason the next shot makes sense.
  • Ignoring encoding. Save as UTF-8. Anything else turns apostrophes and accented characters into garbage.
  • Never testing on a phone. Text that reads fine on a desktop monitor can be unreadable at phone size against a bright background.
Illustration of an oversized band spilling far past the edges of a video frame and overrunning the picture
Captions that outrun the frame outrun the viewer too — two lines is the ceiling, not a target.

Frequently Asked Questions

How do I add captions to a video for free?

Upload the video to YouTube and let it generate captions automatically, correct the errors in YouTube Studio, then download the caption file. You can use that file anywhere, including on your own site, whether or not you keep the video on YouTube. Writing the file by hand in a plain text editor is also free and is often faster for short videos.

What is the difference between captions and subtitles?

Captions assume the viewer cannot hear the audio, so they include speaker labels and important non-speech sounds. Subtitles assume the viewer can hear but does not understand the language, so they translate dialogue only. The file formats are identical and most platforms use the terms interchangeably, but the distinction matters for accessibility compliance and for translation.

Should I use SRT or VTT?

Use VTT for any video that plays in a web browser, since it is the HTML5 standard and supports styling and positioning. Use SRT for YouTube, social platforms, and broadcast workflows. They are both plain text and nearly identical, and converting between them takes one ffmpeg command.

Why are my captions not showing up on my website?

Usually the markup is fine and the hosting is the problem. Check three things: open the caption file URL directly to confirm it loads, confirm the server sends it with the text/vtt content type, and check whether the file is on a different domain from the video, which can trigger cross-origin blocking. None of these produce a clear error message, which is why the captions simply never appear.

Can I add captions to a video after I have published it?

On YouTube and on your own website, yes. Both let you add or replace a caption file at any time without touching the video. On LinkedIn you cannot, because the caption file has to be attached at post time, so you would need to delete the post and repost. Burned-in captions can never be changed after export without re-rendering the video.

Do captions help video SEO?

A separate caption file gives search engines readable text tied to your video, which burned-in captions cannot do because the words only exist as pixels. That is a real advantage of the separate-file approach, though captions alone will not rank a page. Pairing them with proper video metadata does more than either on its own.

How accurate is automatic captioning?

Good enough for a first draft, not good enough to publish unread. Automatic transcription consistently struggles with proper nouns, technical terminology, and fast or overlapping speech. Those are usually the highest-value words in a business video, including product and company names, so budget time to read the draft against the audio before publishing.

Will my video host create the captions for me?

Often not, and it is worth checking before you assume. Hosting a video and transcribing it are separate jobs, and plenty of hosts do the first without the second. Many will serve a caption file you supply through a standard track element but will not generate the text from your audio. If automatic transcription matters to you, confirm it is included rather than inferring it from the fact that the platform handles video.

How many lines of caption should be on screen at once?

No more than two lines per caption, at roughly 32 characters a line, is the standard set by the DCMP Captioning Key (DCMP). Longer blocks outrun the viewer's reading speed and cover more of the picture than they need to. If a sentence will not fit, split it across two caption cues at a natural pause in the speech rather than shrinking the text.

Getting it done

Make the file, then attach it. On YouTube and social that is a straightforward upload. On your own site it is a <track> element plus a host that actually serves the file — and that second half is where most of the lost time goes.

If you are putting captioned video on your own pages, it is worth checking that the embed itself is set up properly before blaming the caption file. A video that loads slowly or fails on mobile will lose viewers long before anyone notices the captions.

Put video on your site without the YouTube baggage

Embed any video ad-free, branding-free, and fast to load — no logos, no buffering, no speed penalty. On any platform.

Try SmartVideo Free Trusted by 3,000+ websites
/ to search · navigate · Enter select