How to add subtitles to a video for free without uploading it
Three free ways to add subtitles to video without uploading it: a sidecar SRT that VLC loads itself, a caption file for YouTube, or HandBrake burning them in.
You can add subtitles to video free of charge without the video leaving your computer. Make an SRT file locally, then do one of three things with it: keep it next to the video as a sidecar file that VLC picks up on its own, upload just the SRT as a caption file wherever the video is headed, or burn the text into the picture with HandBrake. The first two stay editable. The third shows in every player but is permanent. Every tool below is free.
Step one for every route: make the SRT on your own computer
All three routes start with the same file, a plain-text SRT with numbered cues and timestamps. The quickest way to get one is to drop the video on our transcriber, wait for the transcript, and press the .srt button. The speech model runs on your graphics card through WebGPU, so the video is never uploaded. Only the audio track is read; the picture is ignored.
A few limits to know before you start. It works on desktop Chrome or Edge with a working WebGPU adapter, not yet in Firefox, Safari or on phones. It transcribes English only, using the base size of OpenAI’s open-source Whisper model. In our test a desktop with a graphics card ran at about 1.5x real time, and a thin laptop takes roughly as long as the recording. The cues come out at a maximum of 42 characters per line, two lines, one to six seconds each, with an 80 ms gap.
Read the transcript through before you rely on it. Names, technical terms, heavy accents and noisy rooms are the known weak spots. If you’d rather write the file by hand or convert an existing transcript, how to make an SRT file covers the format line by line.
Route 1: keep the SRT next to the video as a sidecar file
This route needs no conversion and no upload. Save the SRT in the same folder as the video and give it the same name, so interview.mp4 sits next to interview.srt.
VLC, which VideoLAN describes as a free and open source cross-platform media player, handles the rest. Its wiki puts it plainly: if both names match, VLC opens the subtitle file automatically and displays the subtitles as soon as you double-click the movie file. SubRip (.srt) is on VLC’s list of supported text subtitle formats, and an external file loaded this way shows up in VLC’s subtitle menu, where you can tick or untick it.
If the names don’t match, or the file lives elsewhere, VLC’s documentation gives two manual ways in. One is the Subtitles Track item under the Video menu. The other is the Advanced Open dialog: open the video there, tick Subtitle options, click Settings and pick the subtitle file. Two default hotkeys help while you check the result: V cycles through subtitle tracks and Shift+V toggles subtitles. If every cue is early or late by the same amount, H adds subtitle delay and G reduces it, which tells you how far to shift the file in an editor later.
The trade-off is that the subtitles live in a second file. Send the video on its own and the subtitles stay behind. Rename one file and not the other and the automatic loading stops. Fine for a video you keep or share as a folder; for one you post somewhere, use route 2 or 3.
Route 2: upload only the caption file where the video is going
If the video is headed for YouTube anyway, you don’t need to burn anything in. Upload the video as usual and add the SRT as a caption file. The transcription still happened on your computer; the only extra thing YouTube receives is the text.
YouTube Help lists SubRip (.srt) and SubViewer (.sbv or .sub) among its basic formats, and WebVTT (.vtt), TTML and DFXP among the advanced ones. For anyone new to caption files it suggests SubRip or SubViewer. Two details matter for a file made locally: the file must be in plain UTF-8, and for SubRip no style information or markup is recognised, so <i> and <b> tags won’t produce italics or bold. Keep the SRT plain and it will go through.
The upload steps, as YouTube Help lists them:
- Sign in to YouTube Studio.
- From the left menu, select Subtitles.
- Select the video you want to edit.
- Click Add language and pick your language.
- Under Subtitles, click Add.
- Select Upload file, then choose With timing and Continue.
- Choose the SRT and select Save.
You can edit the captions in YouTube afterwards, and viewers can turn them off. Other platforms have their own upload paths and accepted formats, so check their help pages before assuming SRT is enough.
Route 3: burn the subtitles into the video with HandBrake
Burning in means the text becomes part of the picture. Any device that plays the video shows the subtitles, with no caption support needed. The cost is that they can’t be edited or switched off afterwards, and the video is re-encoded to make the new file.
HandBrake is the usual free tool for this. Its site describes it as an open-source video transcoder built by volunteers, running on Windows, Mac and Linux. Its subtitle documentation says separate SRT files can be imported through the Subtitles tab. It defines Burn In as writing the subtitles on top of the image permanently, so they cannot be turned on or off the way DVD subtitles can.
The rough shape of the job: open the video in HandBrake, go to the Subtitles tab, import your SRT, tick Burn In for that track, choose your output settings and start the encode. HandBrake’s documentation says it can burn in one subtitle track per encoded file. Encoding takes a while for a long video, so keep the original file and the SRT; a typo spotted later means fixing the SRT and encoding again.
HandBrake’s documentation also describes soft subtitles, which appear as separate selectable tracks in the output file, and notes they are currently unsupported in the WebM container. That keeps the subtitles switchable, but only in players that read the embedded track. Burn in when you can’t predict the player.
The three routes side by side
| Route | Editable later | Works in every player | Video re-encoded | Best for |
|---|---|---|---|---|
| Sidecar SRT next to the video | Yes, edit the text file | Only where the player reads SRT and finds the file | No | Watching, reviewing, sharing a folder |
| Caption file uploaded to YouTube | Yes, in YouTube’s editor or by re-uploading | Yes, on YouTube; viewers can switch off | No | Videos going to YouTube |
| Burned in with HandBrake | No, re-encode from the original | Yes, the text is part of the picture | Yes | Sending one file that must show subtitles anywhere |
Pick the least permanent route that solves your problem. A sidecar costs nothing to undo. A burned-in file is the one to make last, once the text is right.
Fix the timing before you commit to a route
Check the SRT in VLC first, using the sidecar method, before uploading or encoding anything. Scrub to the start, the middle and the end. If all three line up, you’re done. If the cues drift or sit a fixed distance off, a free subtitle editor will shift or stretch them and save a corrected SRT.
Two free options. Subtitle Edit is an open-source application under the MIT licence, with builds for Windows 10 22H2 or newer, macOS 12 or newer, and Linux. Aegisub is a free, cross-platform, open-source subtitle editor under BSD-style licences that, in its own words, makes it quick and easy to time subtitles to audio. Either one opens the SRT, lets you adjust times against the video, and writes the file back out.
Once the timing is right, the three routes above take minutes. If you haven’t made the SRT yet, transcribe your video on this page and export it; the file never leaves your browser.
Frequently asked questions
Can I add subtitles without re-encoding the video? Yes. The sidecar route and the caption-upload route both leave the video file untouched. Only burning in with HandBrake produces a new, re-encoded file.
Will burned-in subtitles work on a phone or a TV? They’re part of the picture, so any device that plays the video shows them. A sidecar SRT depends on whether that device’s player reads SRT and looks for a file with the same name, so test it there before you rely on it.
Does the SRT have to be UTF-8? For YouTube, yes: its help page says the file must be in plain UTF-8. Using UTF-8 everywhere is the simplest habit.
Can I get italics in YouTube captions from an SRT? Not from SRT. YouTube Help says no style information or markup is recognised in SubRip files. If you need styling, use one of the advanced formats YouTube lists, such as WebVTT.
Can I do this in a language other than English? The three routes work for any language, since an SRT is just text and timestamps. Our transcriber is English only for now, so for other languages you’d make the SRT another way and then follow the same steps.
Sources, checked 14 September 2026
- YouTube Help, “Supported subtitle and closed caption files”: https://support.google.com/youtube/answer/2734698
- YouTube Help, “Add subtitles and captions”, upload steps: https://support.google.com/youtube/answer/2734796
- HandBrake home page, free and open source, Windows, Mac and Linux: https://handbrake.fr/
- HandBrake Documentation, “Adding subtitles”, Subtitles tab and Burn In: https://handbrake.fr/docs/en/latest/advanced/subtitles.html
- HandBrake Documentation, “Audio and subtitle defaults”, one burned-in track: https://handbrake.fr/docs/en/latest/advanced/audio-subtitle-defaults.html
- VideoLAN, VLC media player, free and open source: https://www.videolan.org/vlc/
- VideoLAN wiki, “Subtitles”, automatic loading and supported formats: https://wiki.videolan.org/Subtitles/
- VideoLAN wiki, “Documentation:Subtitles”, manual loading: https://wiki.videolan.org/Documentation:Subtitles/
- VideoLAN wiki, “Hotkeys table”, subtitle delay and track keys: https://wiki.videolan.org/Hotkeys_table/
- Subtitle Edit on GitHub, licence and platforms: https://github.com/SubtitleEdit/subtitleedit
- Aegisub, official site: https://aegisub.org/