How to make an SRT file (and the format rules that break players)
The exact SRT format, three ways to make a file, the timing rules broadcasters use, and the five small mistakes that make YouTube or VLC reject it.
An SRT file is a plain text file where each subtitle is a number, a time range, one or two lines of text, and a blank line. You can make one in any text editor, export one from a transcription tool, or convert a transcript with a free subtitle editor. Most files that get rejected by YouTube or a video player fail on one of five details: a full stop instead of a comma in the timestamps, a missing blank line, the wrong text encoding, overlapping times, or styling tags the player does not understand.
The format, exactly
Here is a complete, valid SRT file with two subtitles:
1
00:00:04,000 --> 00:00:07,400
Thanks for making the time.
2
00:00:07,480 --> 00:00:11,200
I want to start with the part
you said was messy.
Four rules produce it:
- A counter. Each subtitle starts with a whole number on its own line, counting up from 1.
- A time range. Hours, minutes, seconds and milliseconds, written
HH:MM:SS,mmm, then a space, an arrow made of two hyphens and a greater-than sign, a space, and the end time. The separator before the milliseconds is a comma, not the full stop WebVTT uses. - The text. One or two lines. A third line works in some players and is cut off in others.
- A blank line. It ends the subtitle. The blank line is not decoration; it is how players find the next counter.
Save it as plain text with the extension .srt, encoded as UTF-8.
Three ways to make one
1. Export it from a transcription tool
The fastest route. Our transcriber runs on your computer and writes the SRT for you: drop the audio or video file on the home page, wait for the transcript, and press the .srt button. The cues are built to the timing rules below, and nothing is uploaded on the way. Make an SRT from your own file.
Any transcription service will export SRT too. The thing to check is whether the export splits long sentences into readable cues or dumps a whole paragraph into one subtitle. A paragraph is valid SRT and unreadable on screen.
2. Write it by hand
For a short clip, a text editor is fine. Play the video, note when each line starts and ends, and type the four-line blocks. Two habits save time: keep every timestamp as eight digits plus three, even for hours you never reach (00:01:05,000, not 1:05), and leave a blank line after every block including the last.
Use a plain-text editor: Notepad, TextEdit in plain-text mode, VS Code, or anything that does not add formatting. Word processors insert curly quotes and hidden characters that some players choke on.
3. Convert a transcript
If you have the words but not the timing, a free subtitle editor does the alignment. Subtitle Edit’s documentation lists an audio waveform view, a visual sync tool, an import plain text feature that creates subtitles from a text file with forced-aligner timing, and SubRip among its formats; version 5 is described there as the cross-platform version. Aegisub calls itself a free, cross-platform open source tool for creating and modifying subtitles, and says it makes it quick and easy to time subtitles to audio with a real-time video preview. Either is also the thing to reach for when an exported SRT needs its timing nudged.
Timing rules that make subtitles readable
A valid file and a readable file are different things. The public style guides broadcasters work to put numbers on the difference, and those numbers are worth adopting even for a YouTube clip. Netflix publishes two that cover most of it: an English timed text style guide and a separate set of subtitle timing guidelines.
| Rule | The number | What goes wrong without it |
|---|---|---|
| Characters per line | 42 | Long lines get cut off on a phone or shrink to unreadable |
| Lines per cue | two maximum | A third line is cut off in some players and buries the picture in others |
| Reading speed | 20 characters per second, 17 for children’s content | The cue is gone before the viewer has finished reading it |
| Minimum on screen | 20 frames, which Netflix gives as four fifths of a second | Anything shorter reads as a flash rather than a subtitle |
| Gap between cues | at least two frames, roughly 80 milliseconds | Cues that touch flicker, and cues that overlap are invalid in some players |
The one rule with no number attached is where to break the line. Break after punctuation, before a conjunction, before a preposition. Do not split a first name from a last name, an article from its noun, or a verb from its auxiliary. If the break makes the line read oddly when you say it out loud, move it.
Netflix’s timing guide adds a habit worth stealing, which it calls chaining. Where the gap between two subtitles would come out at less than half a second, close it up to exactly two frames. Gaps then end up either two frames or half a second and more, with nothing in between, and a run of dialogue holds a steady rhythm instead of blinking at irregular intervals.
There is no published maximum duration, so pick one and stick to it. Our exporter holds a cue for at least one second and at most six, splits at 42 characters and two lines, and leaves an 80 millisecond gap, which is two frames at 25 frames a second. If a cue is running past six seconds, it was two cues.
Five mistakes that break the file
A full stop in the timestamp. 00:00:04.000 is WebVTT, not SRT. Some players accept both; YouTube and several editors reject the file. Use a comma.
A missing blank line. Without the blank line between blocks, the player reads the next counter as a line of text and the subtitles drift by one from then on.
The wrong encoding. Files saved as Windows-1252 or Latin-1 turn accented letters and curly apostrophes into é and ’. Save as UTF-8. YouTube states that SRT uploads must be plain UTF-8. Leave the byte-order mark out; a few older players show it as a stray character at the start of the first subtitle.
Overlapping or backwards times. A cue that ends after the next one starts, or an end time before its start time, is silently dropped by some players and rejected outright by others. Subtitle editors flag these; a text editor does not.
Styling tags. <i>, <b> and font tags work in VLC and some desktop players. YouTube ignores all markup in SRT and treats the file as plain text, so tags either vanish or appear literally. If you need styling, use WebVTT or the platform’s own caption editor.
Checking the file
Open the video in VLC, drag the SRT onto the window, and scrub through three places: the start, the middle and the end. If the start is right and the end is late, the video’s frame rate does not match what the SRT was timed against, and a subtitle editor can stretch the timing. If everything is offset by the same amount, most players let you shift subtitles with a keyboard shortcut, and the editor can save the shifted file.
For YouTube, the path is published: sign in to YouTube Studio, pick Subtitles from the left menu, select the video, click ADD LANGUAGE and choose the language, then click ADD under Subtitles, choose Upload file, pick With timing, select the file and save. The “with timing” choice is the one people get wrong; without timing means YouTube tries to align a bare transcript for you, and an SRT already has its times.
YouTube recommends SubRip or SubViewer to anyone starting out precisely because the files carry only basic timing information and can be edited in any plain text editor.
Frequently asked questions
What does SRT stand for? SubRip. The extension is the file type a program of that name wrote, and the format long outlived the program. Matroska’s technical documentation still describes it in the same four parts.
Is SRT the same as VTT? Nearly. WebVTT adds a WEBVTT header, uses a full stop before milliseconds, makes the counters optional, and supports styling. Browsers require VTT for HTML video; almost everything else accepts SRT. Which export do you need covers when to use each.
Can an SRT file have more than two lines per subtitle? The format allows it. Players and platforms do not agree on what to do with the third line, so keep to two.
Does the counter have to be sequential? Most players ignore the number, but some validators require it to count up from 1 without gaps. Renumber after editing; subtitle editors do it automatically.
How long can an SRT file be? There is no limit in the format. A three-hour recording produces a few thousand cues and a file under a megabyte.
Sources, checked 15 September 2026
- https://support.google.com/youtube/answer/2734698 : YouTube Help, supported subtitle and closed caption files (SubRip and SubViewer recommended for beginners, no markup recognised in SRT, plain UTF-8 required)
- https://support.google.com/youtube/answer/2734796 : YouTube Help, add subtitles and captions (the YouTube Studio path, Upload file, with or without timing)
- https://partnerhelp.netflixstudios.com/hc/en-us/articles/217350977-English-USA-Timed-Text-Style-Guide : Netflix English timed text style guide (42 characters per line, maximum two lines, 20 and 17 characters per second)
- https://partnerhelp.netflixstudios.com/hc/en-us/articles/360051554394-Timed-Text-Style-Guide-Subtitle-Timing-Guidelines : Netflix subtitle timing guidelines (minimum 20 frames, minimum two-frame gap, chaining)
- https://subtitleedit.github.io/subtitleedit/ : Subtitle Edit documentation (audio waveform, visual sync, import plain text, SubRip, fix common errors, cross-platform version 5)
- https://aegisub.org/ : Aegisub home page (free, cross-platform open source subtitle tool, timing to audio, real-time video preview)
- https://www.matroska.org/technical/subtitles.html : Matroska technical page on subtitle formats (the four components of a SubRip cue)
- Our own cue-building rules come from the exporter in the transcriber on this site