Subtitle formats

SRT file format

Last updated: 2026-06-11

An SRT file is a plain UTF-8 text file, extension .srt, that stores subtitles as a numbered list of cues. Each cue has three parts: an integer index on its own line, a timecode line in the format HH:MM:SS,mmm --> HH:MM:SS,mmm (note the comma before the three-digit milliseconds), and one or more lines of subtitle text. A blank line ends each cue.

SRT, short for SubRip Subtitle, came out of the SubRip ripping tool and is the most widely supported caption format. It stores only timing and text — no fonts, colors, or positioning in the core spec. That simplicity is why almost every video player, from VLC to YouTube, reads it.

A complete SRT example

Here are the first two cues of a real file. Cue 1 runs from 1.0 to 4.0 seconds; cue 2 from 4.5 to 7.2 seconds. The blank line between them is required.

1
00:00:01,000 --> 00:00:04,000
The first line of dialogue.

2
00:00:04,500 --> 00:00:07,200
A second cue, which can
span two lines.

The four parts of every cue

A cue is built from four pieces in a fixed order. Line 1 is the integer index, starting at 1 and incrementing by 1. Line 2 is the timecode line with start and end joined by --> (space, two hyphens, greater-than, space). Lines 3 onward are the text — one or more lines shown together. The cue ends with a single blank line. Players that see a missing blank line will merge the next cue into the current one.

The timecode format in detail

SRT timecodes are always two-digit hours, two-digit minutes, two-digit seconds, a comma, and three-digit milliseconds: 00:01:14,500. The comma is mandatory and is the single biggest difference from WebVTT, which uses a dot. Milliseconds are exactly three digits, so half a second is ,500, not ,5. Hours can exceed 99 in theory but rarely do. The end time of one cue may equal or precede the start of the next; players simply hide the text between them.

FieldDigitsExample
Hours200
Minutes201
Seconds214
Separator1, (comma)
Milliseconds3500

Formatting and encoding rules

Save SRT files as UTF-8 without a BOM. A byte-order mark prepended to the file can make some players read the first cue index as text and drop cue 1. The core format has no styling, but many players accept a few inline tags inside the text: <i> for italics, <b> for bold, and <u> for underline. These are not guaranteed everywhere. For colors, fonts, and positioning, use the WebVTT format instead. If your text looks garbled, see the subtitle encoding guide.

Common SRT errors

Most broken SRT files share a handful of causes. A dot instead of a comma in the milliseconds (00:00:01.000) makes strict parsers reject the cue. A missing blank line merges two cues. Non-sequential or duplicate indexes confuse some players. Two-digit instead of three-digit milliseconds shifts timing. Saving in a non-UTF-8 encoding garbles accents and non-Latin text. When you translate, the safest path is to change only the text and leave the index and timecode lines byte-for-byte identical — which is exactly what translating an SRT file should do.

Key facts

  • Extension: .srt; MIME type application/x-subrip.
  • Timecode: HH:MM:SS,mmm --> HH:MM:SS,mmm — comma, three-digit milliseconds.
  • Cue index: sequential integer starting at 1.
  • Encoding: UTF-8, no BOM.
  • Styling: none in core spec; some players accept <i> <b> <u>.
  • Cue terminator: one blank line.

Definitions

Cue
One subtitle entry: an index line, a timecode line, and one or more text lines, ended by a blank line.
Cue index
The integer (1, 2, 3, …) on the first line of each cue. Sequential and starting at 1.
Timecode line
HH:MM:SS,mmm --> HH:MM:SS,mmm — the start and end times of a cue, separated by --> .
Millisecond field
The three digits after the comma. 500 means 0.5 seconds, not 5 or 50.
Blank line
A single empty line that terminates a cue. Without it, players merge adjacent cues.
UTF-8
The text encoding SRT files should use. Stores every script (Latin, Cyrillic, CJK, Arabic) without garbling.

Related guides

FAQ

What is an SRT file?+

An SRT (SubRip Subtitle) file is a plain-text file with the .srt extension that stores subtitles as numbered cues. Each cue has an integer index, a start and end timecode in HH:MM:SS,mmm format, and one or more lines of text.

What timecode format does SRT use?+

SRT uses HH:MM:SS,mmm — two-digit hours, minutes, seconds, then a comma, then three-digit milliseconds. Start and end are joined with a space-arrow-space: ' --> '. Example: 00:01:14,500 --> 00:01:17,200.

Why does SRT use a comma before the milliseconds?+

SubRip was written in France, where the comma is the decimal separator. SRT keeps the comma (00:00:01,000); WebVTT uses a dot (00:00:01.000). Swapping the punctuation between formats is the most common cause of a file failing to parse.

Does an SRT file store fonts, colors, or positioning?+

Not natively. The official SubRip format stores only timing and text. Some players read a limited set of HTML-like tags such as <i>, <b>, and <u> inside the text, but font, color, and on-screen position are not part of the core spec — use WebVTT or ASS for styling.

What encoding should an SRT file use?+

UTF-8 without a byte-order mark (BOM) is the safest choice. It covers every language and avoids the garbled characters you see when a file is saved as Windows-1252 or Latin-1. A leading BOM can make some players treat the first cue index as text.

Why is the cue number important?+

Each cue starts with a sequential integer (1, 2, 3, …) on its own line. Players use it as a sanity check and ordering hint. Skipped or duplicated numbers can cause some players to drop cues, so renumber after editing.

Can I open and edit an SRT file in Notepad?+

Yes. Because it is plain text, any text editor opens an SRT file. Save it as UTF-8 and keep the blank line between cues. Avoid word processors that insert smart quotes or rich formatting.

Translate your subtitles now

Drop in your .srt or .vtt file, pick a language, and download a synced translation. Every timecode is preserved line for line.

Translate a subtitle file