SRT is the universal caption format for YouTube, Vimeo, and streaming platforms. Master its four-component structure—index, timecode, text, and blank lines—to prevent upload rejections, ensure cross-platform compatibility, and deliver professional captions that pass accessibility standards.
Table of Contents
Category hub: /creator/captions
Quick Start
- Open the SRT Editor and paste your caption file
- Check for red overlap indicators in timeline view
- Verify timecode format uses commas (HH:MM:SS,mmm)
- Ensure blank lines separate each cue
- Export clean UTF-8 SRT
Understanding SRT Structure
The Four Essential Components
Every SRT file is a sequence of caption cues in plain text. Each cue contains exactly four elements:
- Index number: Sequential counter starting from 1
- Timecode range: Start and end time in HH:MM:SS,mmm format
- Text content: Caption text, 1-2 lines maximum
- Blank line: Single empty line separating cues
Anatomy of a Valid Cue
Here's a properly formatted SRT cue with all required components:
1 00:00:02,000 --> 00:00:04,500 Hello world! 2 00:00:04,700 --> 00:00:07,200 Welcome to the channel.

The blank line after each cue tells video players where one caption ends and the next begins. Missing blank lines cause players to merge captions into unreadable blocks.
SRT Format Rules
Index Numbers
Indexes must:
- Start at 1 (not 0)
- Increment by exactly one with no gaps
- Appear on their own line before each timecode
- Match the sequential order of cues in the file
If you delete a cue mid-file, renumber all subsequent cues. The SRT Editor handles this automatically when you remove or reorder cues.
Timecode Format
SRT timecodes use a strict format: HH:MM:SS,mmm where HH is hours, MM is minutes, SS is seconds, and mmm is milliseconds. Critical rules:
- Always use commas to separate seconds from milliseconds (never periods or colons)
- Include leading zeros: 00:00:05,000 not 0:0:5,0
- Separate start and end times with
-->(space, two hyphens, greater-than, space) - End time must be later than start time
- Timecodes must not overlap with adjacent cues

Most upload failures trace back to using periods instead of commas. Video players expect commas and will reject files that deviate from this specification.
Text Content and Line Breaks
Caption text must be readable on mobile devices and fast-paced platforms:
- Keep lines under 32-42 characters for mobile readability
- Use maximum 2 lines per cue; split longer dialogue into new cues
- Maintain reading speed of 160-180 words per minute (WPM)
- Keep cues on screen for 1-7 seconds (1s minimum, 7s maximum)
- Break at natural phrase boundaries, not mid-word
For detailed guidance on reading speed and line length, see Timing Best Practices for Readability.
Blank Lines Between Cues
Every cue must end with a single blank line. This separator is not optional—it's how players distinguish one caption from the next.

Missing blank lines cause players to concatenate captions into a single block. Adding extra blank lines (double or triple spacing) is harmless but unnecessary.
Valid vs Invalid Examples
Valid SRT Example
1 00:00:00,500 --> 00:00:02,800 This is a properly formatted caption. 2 00:00:03,000 --> 00:00:05,500 Notice the blank line after each cue. 3 00:00:05,700 --> 00:00:08,200 Timecodes use commas, not periods.
Invalid Examples and Fixes
Problem: Using periods in timecodes
1 00:00:02.000 --> 00:00:04.500 This will fail to parse.
Fix: Replace periods with commas: 00:00:02,000 --> 00:00:04,500
Problem: Missing blank lines
1 00:00:02,000 --> 00:00:04,500 First caption. 2 00:00:04,700 --> 00:00:07,000 Second caption.
Fix: Add a blank line after "First caption." before the next index.
Problem: Non-sequential indexes
1 00:00:02,000 --> 00:00:04,500 First cue. 3 00:00:04,700 --> 00:00:07,000 Third cue (where's cue 2?).
Fix: Renumber indexes sequentially: 1, 2, 3, 4…
Problem: Overlapping timecodes
1 00:00:02,000 --> 00:00:05,000 First caption runs until 5 seconds. 2 00:00:04,500 --> 00:00:07,000 Second caption starts at 4.5 seconds (overlaps!).
Fix: Adjust start time of cue 2 to 00:00:05,000 or later. Use the Fix Overlapping SRT Cues guide for detailed overlap resolution.
Advanced SRT Features
HTML Formatting Tags
SRT supports basic HTML tags for text styling. Use them sparingly to maintain readability:
<i>italics</i>— For emphasis or off-screen dialogue<b>bold</b>— For strong emphasis<u>underline</u>— Rarely used; avoid unless necessary
1 00:00:02,000 --> 00:00:04,500 <i>This dialogue is off-screen.</i> 2 00:00:04,700 --> 00:00:07,000 And <b>this</b> word is emphasized.
The SRT Editor preserves HTML tags during editing and export, while some third-party editors strip them.
Special Characters and UTF-8
SRT files must be saved with UTF-8 encoding to support emoji, accented characters, and non-Latin scripts:
- Emoji: 🎉, 🔥, 💯 work if saved as UTF-8
- Accents: café, naïve, résumé render correctly
- Non-Latin scripts: 你好, Привет, مرحبا display properly
Avoid Windows-1252 or ANSI encoding, which breaks emoji and international characters. Most modern editors default to UTF-8, but verify before exporting.

Common Mistakes & Fixes
- Using periods instead of commas in timecodes → Replace with commas (HH:MM:SS,mmm). Video players reject files with periods.
- Missing blank lines between cues → Add a single blank line after each cue's text. Players merge captions without separators.
- Overlapping timecodes → Use SRT Editor overlap detection to identify and fix conflicts automatically.
- Non-sequential indexes → Renumber cues sequentially starting from 1. Gaps or duplicates confuse parsers.
- Lines longer than 42 characters → Break text across two lines or split into a new cue to maintain mobile readability.
FAQs
- Time separators: comma vs dot?
- SRT uses a comma for milliseconds (HH:MM:SS,mmm). Players reject files with periods. This is the most common upload failure.
- Are empty cues allowed?
- No. Empty cues (index and timecode but no text) confuse screen readers and violate the SRT specification. Remove them before exporting.
- How do I force italics or speaker labels?
- Use simple HTML tags like
<i>or<b>sparingly. The SRT Editor preserves tags during editing and export. - Can I use Unicode characters in SRT files?
- Yes, but save as UTF-8 encoding. Avoid Windows-1252 or ANSI, which break emoji, accents, and non-Latin scripts.
- What's the maximum line length for captions?
- Keep lines under 32-42 characters for mobile readability. The SRT Editor shows live character counts to help you stay within limits.
- Should I use CRLF or LF line endings?
- Both work, but LF (Unix-style) is recommended for cross-platform compatibility. Most modern players handle both, but LF reduces edge-case parsing issues.
- How do I fix "Subtitle parsing failed" errors?
- Check for: missing blank lines, invalid timecode format (periods instead of commas), non-sequential indexes, or wrong encoding (must be UTF-8). The SRT Editor auto-detects and highlights these issues.