How to Add Captions to a Video in 2026 (Every Method)
• 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?
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.

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 |
| 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.

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
.vttURL 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.
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 siteWorth 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.vttMistakes 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.

Frequently Asked Questions
How do I add captions to a video for free?
What is the difference between captions and subtitles?
Should I use SRT or VTT?
Why are my captions not showing up on my website?
Can I add captions to a video after I have published it?
Do captions help video SEO?
How accurate is automatic captioning?
Will my video host create the captions for me?
How many lines of caption should be on screen at once?
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.