How-to
How to add subtitles to a video
Last updated: 2026-06-11
To add subtitles to a video, get a subtitle file — .srt for desktop and TV players, .vtt for web video — then either keep it as a soft sidecar the viewer can toggle or burn it permanently into the frames. For a soft track, give the subtitle file the same base name as the video (movie.mp4 + movie.srt) in the same folder, and players like VLC load it automatically. On the web, a single HTML5 <track> element loads a WebVTT file.
The first decision is soft versus hardcoded. Soft subtitles stay editable and switchable; hardcoded ones always show but cannot be turned off. Match the method to where the video will play.
The steps
- 01
Get a subtitle file in the right format
Start with a .srt for desktop and TV players or a .vtt for web video. If you need another language, translate the file first while keeping the timecodes intact, then add it to the video.
- 02
Decide soft or hardcoded
Choose soft subtitles (a separate sidecar file the viewer can toggle) for flexibility, or hardcoded burn-in (the text rendered permanently into the video frames) when the player cannot read external subtitles, such as some social platforms.
- 03
Name the sidecar to match the video
For soft subtitles, give the .srt or .vtt the same base filename as the video — movie.mp4 with movie.srt in the same folder — so players like VLC load it automatically. Add a language suffix such as movie.en.srt for multiple tracks.
- 04
Load or upload the subtitles
In a desktop player, drop the matching sidecar in the folder or use the subtitle menu. For web video, reference the .vtt with an HTML5 <track> element. On YouTube, upload the .srt through the subtitles editor for the video.
Soft vs hardcoded subtitles
The two methods differ in flexibility and where they work. Soft subtitles ride alongside the video; hardcoded subtitles are part of the picture.
| Aspect | Soft (sidecar) | Hardcoded (burn-in) |
|---|---|---|
| Toggle on/off | Yes | No |
| Multiple languages | Yes, many tracks | One, baked in |
| Re-encode video | No | Yes |
| Works where player has no subtitle support | No | Yes |
| Editable later | Yes | No |
Desktop and TV players
VLC, MPC-HC, Kodi, and most smart TVs read soft subtitles. The simplest method is the matching filename: put movie.srt next to movie.mp4 and the player loads it on its own. To add one by hand in VLC, open the video and use Subtitle > Add Subtitle File. These players read SRT, WebVTT, and ASS, so the SRT you translated drops in directly. For several languages, name them movie.en.srt and movie.es.srt.
Web video and YouTube
For video on a web page, reference a WebVTT file with the HTML5 <track> element inside <video>:
<video controls>
<source src="movie.mp4" type="video/mp4">
<track src="movie.en.vtt" kind="subtitles"
srclang="en" label="English" default>
</video>Browsers read .vtt but not SRT, so convert SRT to VTT first. On YouTube, open Studio, pick the video, go to Subtitles, select the language, and upload the .srt; YouTube reads its timecodes and shows a toggleable caption track.
Adding subtitles in another language
To caption a video in a second language, translate the subtitle file before you add it, keeping every timecode unchanged so the new track stays synced. The SubLingo translator changes only the text (see how to translate an SRT file), then you add the result as another soft track named with a language suffix, or burn it in. Common picks include English to Spanish and English to French.
Key facts
- Use .srt for desktop/TV, .vtt for web.
- Soft = toggleable sidecar; hardcoded = burned permanently into frames.
- Sidecar must share the video's base name (movie.mp4 + movie.srt).
- Web video loads WebVTT via the HTML5 <track> element.
- YouTube takes an uploaded .srt in the Subtitles editor.
- Translate the file first, keeping timecodes intact, then add it.
Definitions
- Soft subtitles
- A separate sidecar file the player overlays; the viewer can toggle or switch languages.
- Hardcoded
- Subtitles burned permanently into the video frames; always visible, not switchable.
- Sidecar file
- A
.srtor.vttstored next to the video, named to match it. - <track> element
- HTML5 tag inside
<video>that loads a WebVTT caption track. - Burn-in
- Re-encoding the video so the subtitle pixels become part of every frame.
- Language suffix
- A code in the filename (
.en,.es) marking each track's language.
Related guides
FAQ
How do I add subtitles to a video?+
Get a subtitle file (.srt for desktop/TV, .vtt for web), then either keep it as a soft sidecar the viewer can toggle or burn it permanently into the video. For sidecar files, give the .srt the same base name as the video so players like VLC load it automatically.
What is the difference between soft and hardcoded subtitles?+
Soft subtitles are a separate sidecar file (.srt or .vtt) the player overlays and the viewer can turn on or off or switch languages. Hardcoded (burned-in) subtitles are rendered permanently into the video frames, so they always show and cannot be changed or hidden.
What filename should a sidecar subtitle have?+
Match the video's base name exactly: movie.mp4 pairs with movie.srt in the same folder, and players load it on their own. For multiple languages, add a language code, like movie.en.srt and movie.es.srt.
How do I add subtitles in VLC?+
Put the .srt with the same base name as the video in the same folder and VLC loads it automatically, or open the video and use Subtitle > Add Subtitle File to pick one manually. VLC reads SRT, WebVTT, ASS, and more.
How do I add subtitles to web video in HTML?+
Use an HTML5 <track> element inside the <video> tag, pointing to a WebVTT file: <track src="subs.vtt" kind="subtitles" srclang="en" label="English">. Browsers read .vtt natively but not .srt, so convert SRT to VTT first.
How do I add subtitles on YouTube?+
Open YouTube Studio, pick the video, go to Subtitles, choose the language, and upload your .srt file. YouTube reads the timecodes and text and shows the captions as a toggleable track viewers can turn on.
Can I add subtitles in another language?+
Yes. Translate the subtitle file first, keeping every timecode unchanged, then add the translated .srt or .vtt as another soft track or burn it in. SubLingo translates the text only and preserves the timing, so the new track stays synced.