How to Create an SRT File and Add Subtitles
What an SRT file is
An SRT file is a plain-text subtitle file that tells a video player which words to show and exactly when to show them. SRT is short for SubRip Subtitle, named after SubRip, the program that first produced these files. Inside, it is nothing but numbered blocks, each pairing a start and end timecode with a line or two of text.
It carries no video, no audio and no styling, and it does not read your video or pull anything out of it. The file sits beside the video and the player lines the two up by clock time. That explains most SRT problems: if the timecodes are wrong, the subtitles are wrong.
What an SRT file looks like inside
Open any .srt in a plain-text editor and you will see the same four-part block repeating:
1
00:00:01,000 --> 00:00:03,400
Welcome to the product walkthrough.
2
00:00:03,600 --> 00:00:07,200
We will start with the dashboard,
then move on to reporting.
3
00:00:07,400 --> 00:00:10,100
Everything on this screen is live data.
That is a complete, valid SRT file. Each part has to look like this:
| Part | Example above | What the format requires |
|---|---|---|
| Sequence number | 2 | A whole number alone on its line. Start at 1 and count up, no gaps. |
| Timecode line | 00:00:03,600 --> 00:00:07,200 | HH:MM:SS,mmm --> HH:MM:SS,mmm. Two digits for hours, minutes and seconds, three for milliseconds, a comma before the milliseconds, and a space-arrow-space between them. |
| Caption text | We will start with the dashboard, | One or two lines of plain text. A line break here is a line break on screen. |
| Blank line | (the empty line after each block) | One empty line closes the block. End the file with a newline. |
The comma before the milliseconds is the most common mistake in hand-written subtitle files. A timecode written
00:00:03.600, with a period, is WebVTT syntax, not SRT. Some players skip that block, some reject the whole file, and some stop showing subtitles from there on.
So this is broken, although it looks almost identical:
2
00:00:03.600 --> 00:00:07.200
This block uses periods, so it is not valid SRT.
The rules that decide whether captions are readable
Nothing in the syntax stops you putting a 300-character paragraph on screen for a fifth of a second. The most widely used public subtitling guideline is Netflix's, which is free to read.
- Line length: about 42 characters. The Netflix English Timed Text Style Guide sets a hard limit of 42 characters per line.
- Two lines maximum. Netflix's general timed-text requirements cap subtitles at two lines, and keep text on one line unless it exceeds that limit.
- Duration: roughly one to seven seconds. The same requirements set a minimum of five-sixths of a second per subtitle and a maximum of seven seconds.
- Reading speed. Netflix allows up to 20 characters per second for adult programming and up to 17 for children's. If you do not know your audience, 17 is the safer target.
- Break lines where the phrase breaks. Netflix's guidance: break after punctuation, before conjunctions and before prepositions, and never split an article from its noun or a first name from a last name.
One spoken sentence usually needs two or three blocks, so subtitle text ends up shorter and more heavily cut than a transcript of the same audio.
How to create an SRT file
Three honest routes, differing mostly in how much typing you do.
Type it by hand in a plain-text editor
For a short clip this is the fastest option. Type the blocks in the shape shown above and save. Four things go wrong:
- The extension. Windows hides known extensions, so Notepad gives you
captions.srt.txt. Set "Save as type" to "All Files" and typecaptions.srtin full. On macOS, TextEdit needs Format > Make Plain Text first. - The encoding. Save as UTF-8, not ANSI or UTF-16. YouTube's documentation states that SRT files must be plain UTF-8.
- The comma. Not a period.
- The blank lines. One between blocks, none inside a block.
Transcribe first, then format the text into blocks
Past a couple of minutes of audio, the usual approach is to get a timestamped transcript and cut it into caption-sized blocks. Laxis accepts uploaded audio and video files and returns a timestamped transcript to work from; our guide to how to transcribe audio to text covers the upload step, and there is a separate walkthrough for when the source is a video and you need to transcribe a video to text.
The two are not the same document: a transcript runs as continuous paragraphs with speaker labels, while a subtitle file is chopped into timed blocks under a character limit. If that is new, what a transcript actually contains covers it. Read any automatic output before publishing; proper nouns, numbers and crosstalk are where errors cluster.
Let a platform generate the captions and download the file
If the video is already on YouTube, YouTube's automatic captioning produces a track you can download from YouTube Studio and correct in a text editor. The timings are usually close; the wording usually needs work. Treat it as a starting point, not a finished file.
How to attach an SRT file to a video
YouTube
In YouTube Studio, open the video, go to Subtitles, add the language, choose Upload file, select "With timing" and pick your .srt. YouTube lists SubRip (.srt) among its supported caption formats, and ignores any style markup inside the file.
A desktop video player
Give the subtitle file the same base name as the video and put both in the same folder:
product-walkthrough.mp4
product-walkthrough.srt
VLC and most other desktop players pick that up automatically. If it does not load, drag the .srt onto the playing window or add it from the player's Subtitle menu. For several languages, add a language code before the extension: product-walkthrough.en.srt.
A social platform
Look for a captions or subtitles field on the upload screen and upload the .srt there. If there is no such field, you need burned-in text instead, which is the case for a lot of short-form video; our walkthrough on how to add text to a TikTok video covers that path.
A web page
The HTML5 <track> element does not take SRT; it expects WebVTT, so convert the file first. The conversion is close to trivial, which is one reason both formats persist.
Sidecar subtitles versus burned-in captions
This distinction decides which of the routes above applies to you, and most people meet it by accident.
A sidecar file is a separate .srt delivered alongside the video. Viewers can switch it on or off and change language, platforms and search engines can read the text, and fixing a typo means editing a text file and re-uploading. The video is never re-encoded. The catch: the player or platform has to support subtitle tracks, and many do not.
Burned-in captions, also called hardcoded or open captions, are pixels painted into the frames at export. They display everywhere, including in feeds that autoplay muted and strip subtitle tracks, but they cannot be switched off or translated, they are not machine-readable, and one typo means re-rendering the video.
Use a sidecar SRT wherever the destination accepts one, and burn text in only where it does not.
Troubleshooting
The subtitles are out of sync
Check the sync at the start of the video and again at the end. The same gap in both places is a constant offset: add or subtract the same amount from every timecode, which most subtitle editors do in one step. A gap that grows is drift, almost always a framerate mismatch. Shifting will not fix drift; the timings have to be rescaled by the ratio between the two framerates.
Accented characters come out as garbage
Accented names showing up as question marks, boxes or pairs of odd Latin letters is an encoding problem, not a subtitle problem. Re-save the file as UTF-8; most editors offer the encoding in the Save dialog.
The file will not load at all
In order of likelihood: the file is actually named .srt.txt; a timecode uses a period instead of a comma; blank lines between blocks are missing; sequence numbers are out of order or duplicated; or the file was saved as RTF or DOCX. Compare it against the valid example above, block by block.
The subtitles do not appear on a social platform
If the upload screen had no captions field, the platform never received your subtitle file. Burn the text into the video instead.
SRT vs VTT vs ASS
| SRT | WebVTT | ASS | |
|---|---|---|---|
| Full name | SubRip Subtitle | Web Video Text Tracks | Advanced SubStation Alpha |
| Extension | .srt | .vtt | .ass |
| Milliseconds separator | Comma | Period | Centiseconds, after a period |
| Styling and positioning | None | Positioning, plus styling via CSS | Full typesetting: fonts, colors, placement, karaoke timing |
| Header | None | File starts with WEBVTT | A script info section |
| Best for | Near-universal compatibility across players, editors and upload forms | Browser playback through the HTML5 <track> element | Typesetting-heavy work that needs real control over how text looks |
Reach for plain SRT when you want the file to work everywhere and do not need it to look like anything in particular.
Getting the timestamped text to start from
The formatting work above is quick; transcribing an hour of audio by hand is not. If that is the part standing between you and a subtitle file, the Laxis AI meeting assistant transcribes uploaded audio and video in 100+ languages and returns timestamped text you can cut into caption blocks. The free tier covers 300 transcription minutes a month with a 45-minute cap per recording; paid plans start at $15.99 per user per month.
Frequently asked questions
Is an SRT file the same as a transcript?
No. A transcript is continuous prose with speaker labels and no length limits, meant to be read on its own. An SRT file is the same words cut into timed blocks short enough to read on screen while the video plays. Building one from the other takes editing: splitting sentences, trimming to the limit, assigning times.
Can I open and edit an SRT file without special software?
Yes. An SRT file is plain text, so Notepad, TextEdit, Vim and VS Code all work. Avoid word processors such as Microsoft Word and Google Docs, which save into their own formats and break the file. If you are adjusting hundreds of timecodes rather than fixing a word, a dedicated subtitle editor saves real time.
Does adding an SRT file change the video file itself?
No. A sidecar SRT leaves the video untouched: the player reads both files and draws the text on top during playback, which is why you can fix a typo by editing the SRT alone. Burned-in captions are different, since those are baked into the frames at export and need a re-render.
Why do my subtitles start in sync and then drift?
A growing error means a framerate mismatch, not a bad start time. Subtitles timed against a 23.976 fps master and played against a 25 fps copy fall behind steadily. Shifting every timecode by a fixed amount will not fix that; the timings have to be rescaled by the ratio between the two framerates.
How many characters should one subtitle line hold?
The Netflix English Timed Text Style Guide caps lines at 42 characters and subtitles at two lines. Netflix also sets a minimum on-screen duration of five-sixths of a second, a maximum of seven seconds, and a reading speed ceiling of 20 characters per second for adult programming. Those numbers are a reasonable default for almost any video.
Do SRT subtitles help a video get found?
A sidecar subtitle file gives platforms machine-readable text for a video, which burned-in captions do not. Whether that moves a ranking depends on the platform, and no honest answer promises a result. The clearer benefit is reach: captions make a video usable with the sound off and by viewers who are deaf or hard of hearing.