SUBTITLES / 8 MIN READ
What is an SRT file? The subtitle format everything still reads.
An SRT is a plain-text file that says when each line appears and when it disappears. No styling, no positioning, no container — which is exactly why every editor, player and upload form still accepts one.
SRT stands for SubRip Subtitle. The format came out of a tool for extracting subtitles from DVDs in the late 1990s, and nothing replaced it. Open the file in any text editor and you see precisely what a player sees: a number, a time range, the words, a blank line. There is no header to get wrong and nothing binary to corrupt.
The short answer
An SRT file is a sequence of cues. Each cue is four parts: a sequential number, a time range written 00:00:02,500 --> 00:00:05,000, the text the viewer reads, and a blank line that closes it. Because every part is plain text, you can fix a typo in Notepad, TextEdit or vim and the file is still valid — no export step, no re-encode.
That is the whole specification in practice. Everything else people believe about SRT — that it needs software, that it is a video format, that changing the extension does something — comes from never having opened one.
What is actually inside the file
A two-cue SRT, and what each line does.
1 00:00:02,500 --> 00:00:05,000 Welcome back to the channel. 2 00:00:05,400 --> 00:00:07,200 Today we are rebuilding the intro.
cue number — 1, 2, 3, in order start --> end, with a comma before milliseconds the words the viewer reads (blank line — this is what ends the cue) next cue number next time range
The blank line is not cosmetic. It is the delimiter: a parser reads lines until it hits an empty one, then starts the next cue. Delete a blank line and two cues merge into one block whose text runs together on screen — the most common "my subtitles are broken" that is not actually a format problem.
- The comma matters.
00:00:02,500is SRT.00:00:02.500is WebVTT. Same numbers, different separator, and a strict parser rejects the whole file over it. - The numbers do not have to be meaningful, but they have to be there. Some players renumber on load; upload forms and editors often refuse a file that starts at 2.
- Timing is absolute, not relative. Every cue carries its own start and end. There is no "previous cue plus two seconds" anywhere in the format.
- Encoding is invisible until it is not. UTF-8 without a BOM is the safe default; a BOM is tolerated by some players and rendered as a stray character by others.
Why a plain-text format survived
SRT won because it is impossible to half-support. A program that can read three lines of text can read an SRT; there is no container to parse, no version negotiation, no codec. That is why the format shows up in places nobody designed for it — a spreadsheet of quotes, a translation handoff, a subtitle track uploaded back to a platform in 2026.
The trade-off is that SRT carries only what it was designed to carry. If you need anything beyond "this text, at this time", the format does not stretch — you need a different one.
What an SRT cannot carry
| You want | In an SRT | What to use instead |
|---|---|---|
| Move one cue to the top of the screen | Not possible — position is a player setting | WebVTT cue settings |
| Different colours or fonts per speaker | Inline tags that each app interprets differently | WebVTT STYLE block plus CSS classes |
| Say who is speaking | No standard field — people type - JOHN: | WebVTT <v John> |
| Carry chapters or metadata | Nothing outside cues | A sidecar file, or the platform's own metadata |
| Ship a single self-contained file for the web | Needs converting first | WebVTT, which <track> reads natively |
If you are weighing SRT against WebVTT for a specific job, that comparison has its own page — SRT vs VTT. This article is only about what an SRT is.
How to open or edit one
- Any text editor — Double-click and read it. This is the fastest way to check whether a file is really SRT — the first line should be a bare number, not
WEBVTT. - VLC or mpv — Load the video, then drag the
.srtonto the window. If it does not appear, the problem is in the file, not the player. - Premiere, Final Cut, DaVinci Resolve — Import as a caption track. All three accept SRT directly and will keep the timings.
- Subtitle Edit — Open source, and the only free tool worth naming for retiming: it shows the audio waveform behind the cues so you can drag a line onto the syllable.
Never let an editor "help" with the blank lines. Trailing whitespace, auto-indent and smart quotes all break the structure silently — the file still opens, it just stops working. Edit in a plain-text mode and save as UTF-8.
Why an SRT sometimes shows nothing
- Cue numbers were renumbered or removedConverting a file through a spreadsheet, or copy-pasting half of it, often drops the counter. A player then has nothing to separate one cue from the next, and shows nothing at all rather than showing something wrong.What to do: Renumber from 1, consecutively, each followed by its own time range. The numbers carry no meaning, but their presence and order do.
- A blank line between cues went missingSome editors strip "trailing blank lines" on save. The result is one enormous cue: every line of dialogue stacked on screen at the same moment, from the first timestamp to the last.What to do: Exactly one empty line between cues. Not two, not none, and no spaces on the empty line.
- The file is not really UTF-8, or it has a BOMAccented characters and non-Latin scripts come out as mojibake, or the first character of the first line is invisible and the parser fails before it reads anything else.What to do: Re-save as UTF-8 without a BOM, then open the file and confirm the first cue still starts with a number.
Getting an SRT from a YouTube video
You do not have to build one by hand. If the video already publishes a caption track, the same track can be written out as SRT, WebVTT or plain text — the words and the timing come from YouTube, only the wrapper changes. What that cannot do is invent a track: a video with captions disabled produces no file in any format.
Paste a public YouTube link, check which tracks the video actually has, then save SRT, VTT or TXT. Three extractions a day are free without an account; after that a signed-in account costs 1 credit per video, and a new account starts with 5. Failed extractions are not charged.
Open the subtitle downloaderNeed the other format?
SRT and WebVTT differ in four ways that actually break files — the separator, the header, the counter and positioning. Here is which one your next step needs.
More on subtitles
- How to download YouTube subtitles (TXT, SRT, VTT)Which subtitle format an editor actually needs, what the timestamps are for, and why some videos have no subtitles to download at all.
- Why does a YouTube video have no subtitles?Captions not enabled, automatic captions still processing, members-only, or the video is private — four situations that look identical, and only one fixes itself.
- SRT vs VTT: which subtitle format should you save?The same cue in both files, the four differences that actually break a file, and how to choose by what opens it next rather than by feature count.
- How to get a YouTube transcript without timestampsEvery caption track is timed, so anything that writes one out carries the timing with it. TXT drops it — and two regexes rescue a file you already have.
- Downloading subtitles from YouTube StudioSubtitles, the three-dot menu, Download: your own track as SRT, VTT or SBV. What each format is for, and why the menu is absent when the video is not yours.
- Subtitles as LLM input: what to fix before you trainAuto captions repeat themselves, cut mid-sentence and carry applause markers. Four fixes before the text becomes training data — and the rights check first.