Guide
What is an SRT file?
SRT is the format almost everything accepts, which is remarkable for something with no formal specification. It came out of SubRip, a Windows tool from the late 1990s for pulling subtitles off DVDs, and it survived because it is trivially simple.
The structure of an SRT file
An SRT is plain text made of repeating blocks. Each block has four parts, in this order: a sequence number on its own line, a timing line, one or two lines of subtitle text, and a blank line separating it from the next block. That is the entire format.
| Sequence number | Counts from 1 upward. Most players tolerate gaps, but tools that renumber on save assume it is contiguous. |
|---|---|
| Timing line | Start and end time separated by an arrow made of two hyphens and a greater-than sign. |
| Text | One or two lines. Nothing enforces this, but three or more lines is a formatting mistake rather than a format feature. |
| Blank line | Ends the block. A missing blank line is the single most common reason a file fails to parse. |
How the timecodes work
Times are written as hours, minutes, seconds, and milliseconds, with a comma before the milliseconds rather than a period. The comma is a European decimal convention inherited from the original tool, and it is the detail that most often trips people converting between formats. WebVTT, which otherwise looks almost identical, uses a period instead.
- Hours are always two digits, even when there are none, so a subtitle one second in starts at 00:00:01,000.
- Times are measured from the start of the video, not from the start of the file.
- Blocks are expected to be in chronological order. Out-of-order blocks are undefined behaviour and players disagree about what to do with them.
- Overlapping times are also undefined. Some players stack the text, some drop one, some flicker between them.
What SRT deliberately leaves out
SRT carries words and times. It does not carry position, font, size, colour, or alignment in any standardised way. Some players honour a small set of HTML-like tags for bold, italic, and underline, but nothing guarantees it. That gap is the whole reason richer formats exist, and the whole reason SRT is universally supported: there is almost nothing in it to disagree about.
Encoding, which is where files actually break
The format predates the assumption that text is Unicode, and it stores no declaration of its own encoding. A player has to guess. If a file is saved as anything other than UTF-8, accented Latin characters turn into pairs of nonsense symbols and non-Latin scripts turn into unreadable noise on any machine that guesses differently from the one that wrote it.
- Save as UTF-8. Every modern player handles it, and it covers every script.
- Avoid a byte order mark if you can. Most players cope, but a few show a stray character at the start of the first subtitle.
- If a file arrives with mangled accents, it is almost always an encoding mismatch rather than a corrupted file, and re-saving it with the right encoding recovers it.
When SRT is the right choice
- Whenever you need something to load somewhere you do not control. Nothing else is as broadly supported.
- As the master copy of your subtitles. It is plain text, so it diffs, edits, and survives without special tools.
- As the input to translation, because the timings are preserved and a translated file drops onto the same video.
It is the wrong choice when placement or styling actually matters, when you need speaker identification carried in the file, or when the destination is a social feed that will not read a subtitle file at all. For that last case, see burned-in vs soft subtitles.
Get an SRT from your own video with 50 free credits.
Continue with Google50 free credits. No credit card needed.Frequently asked questions
Can I open an SRT file in a text editor?
Yes. It is plain text, so any editor opens it. Save it back as UTF-8 or accented and non-Latin characters will break.
What is the difference between SRT and VTT?
WebVTT is the web standard version of the same idea. The visible difference is the millisecond separator, a period in VTT and a comma in SRT, plus a WEBVTT header line and optional styling that SRT has no equivalent for.
Why does my SRT file show strange characters?
Almost always an encoding mismatch. The file was saved in something other than UTF-8 and the player guessed wrong. Re-saving as UTF-8 fixes it.
Can an SRT file have more than two lines of text?
Nothing in the format prevents it, but it is a formatting mistake. Three lines cover too much of the frame and take longer to read than a viewer usually has.