SRT File Format: Complete Guide to SubRip Subtitles
Everything you need to know about the SRT subtitle format. Structure, specifications, compatibility, and best practices.
Introduction
The SRT (SubRip) file format is the universal standard for subtitle files. Developed in the early 2000s as part of the SubRip OCR (optical character recognition) tool, it has become the most widely supported subtitle format across virtually all platforms, devices, operating systems, and video players. Its simplicity — plain text with sequential numbering, timestamps, and subtitle text — is the key to its enduring popularity.
This comprehensive guide covers the complete SRT structure with visual examples, timestamp mathematics, edge cases including multi-line text and HTML tags, a comprehensive platform compatibility matrix, conversion guides to all formats, common errors and their fixes, and professional best practices. Whether you are a beginner creating your first subtitles or a professional managing large libraries, this guide has everything you need.
SRT File Structure
An SRT file consists of a sequence of numbered subtitle entries separated by blank lines. Each entry follows a strict four-part structure:
Visual Example
Here is a complete, correctly formatted SRT file:
```
1
00:00:01,500 --> 00:00:04,000
Welcome to this tutorial on
subtitle formatting.
2
00:00:05,000 --> 00:00:09,500
The SRT format is simple but
has specific rules you must follow.
3
00:00:10,200 --> 00:00:14,800
Important: Always separate
entries with a blank line.
```
Each element must appear exactly as shown. The blank line between entries is mandatory — it signals the end of one subtitle entry and the beginning of the next. Missing blank lines cause two entries to merge into one, which is one of the most common formatting errors.
Timestamp Format
Timestamps use the format `HH:MM:SS,mmm` where:
The separator between seconds and milliseconds is a comma in SRT. This is a critical difference from WebVTT, which uses a dot (period). The arrow `-->` is always surrounded by single spaces on both sides.
#### Timestamp Math and Calculations
Understanding timestamp math is essential for timing adjustments, quality assurance, and format conversions:
To calculate display duration: subtract the start time from the end time. For example:
To convert frames to milliseconds for frame-accurate timing: `frames * (1000 / framerate)`. At 23.976fps (common for film), one frame equals approximately 41.7ms. At 25fps (common for European television), one frame equals exactly 40ms.
Our Delay Tool and Fix Overlaps tools handle these calculations automatically, saving you from manual arithmetic and potential errors.
Multi-Line Subtitle Text
Each entry can contain one or two lines of text. Professional standards recommend:
For two-line entries, the first line should be slightly shorter than or equal to the second line to create a visually balanced subtitle:
```
00:00:15,000 --> 00:00:18,500
She walked into the room and
looked around nervously.
```
Incorrect line breaking disrupts the reading flow. Compare:
```
❌ 00:00:15,000 --> 00:00:18,500
She walked into the room and looked
around nervously.
```
The word "looked" is split from its context, creating an awkward pause for the reader. Always break at phrase boundaries.
#### Multi-Speaker Dialogue
When two speakers talk in quick succession, give each their own line using a hyphen prefix:
```
00:00:20,000 --> 00:00:22,500
```
The hyphen convention (with a space after the hyphen) is widely recognized across all video players. Some styles use an en dash (\u2013) or em dash (\u2014) instead, but the standard hyphen is safest for maximum compatibility.
HTML-Style Tags in SRT
SRT supports a limited set of HTML-style formatting tags, though not all video players render them:
| Tag | Purpose | Example | Player Support |
|-----|---------|---------|---------------|
| `` | Bold text | `Warning!` | VLC, MPC-HC, PotPlayer |
| `` | Italic text | `whispered softly` | VLC, MPC-HC, PotPlayer |
| `` | Underlined text | `Chapter Title` | VLC, MPC-HC |
| `` | Colored text | `yellow` | VLC, some players |
Important limitations:
Edge Cases in SRT
Very Short Subtitles
Single-word or very brief subtitles require special handling. The minimum display time is 1 second (1,000ms), even for a single word:
```
00:00:05,000 --> 00:00:06,000
What?!
```
Below 1 second, viewers cannot read fast enough even for a single word. For exclamations or interjections that are truly instantaneous, consider merging them into the following subtitle entry.
Very Long Subtitles
For entries that contain more text than can be displayed comfortably in 2 lines of 42 characters, split the content into multiple sequential entries. For example:
```
00:00:30,000 --> 00:00:33,000
This is a long explanation that
cannot fit in just two lines.
00:00:33,000 --> 00:00:36,000
So we split it across
multiple subtitle entries.
```
Subtitles with Special Characters
Characters like em dashes (\u2014), ellipses (\u2026), smart quotes, and accented letters (\u00e9, \u00fc, \u00f1) are fully supported in UTF-8 encoded SRT files. Using UTF-8 encoding ensures these characters display correctly on all platforms. Common pitfalls include:
Empty or Whitespace-Only Entries
An entry with no text or only spaces between the timestamp line and the next blank line is technically present but serves no purpose. Remove these entries to keep files clean and prevent blank flashes during playback. Our Remove Duplicates tool can identify and clean these entries.
Comprehensive Platform Compatibility Matrix
While SRT is widely supported, compatibility varies across platforms and software:
| Platform / Software | SRT Support | Specific Limitations |
|--------------------|-------------|----------------------|
| VLC Media Player | Full | Supports HTML tags, UTF-8 (with and without BOM), multi-line |
| MPC-HC / PotPlayer | Full | Excellent SRT rendering with all features |
| Windows Media Player | Partial | May struggle with UTF-8 BOM; limited HTML tag support |
| YouTube | Full | Accepts SRT; strips HTML tags; converts to internal format |
| Vimeo | Full | Same as YouTube — accepts SRT, converts internally |
| Netflix (Studio Delivery) | Full | Must meet Netflix character and timing specifications |
| Adobe Premiere Pro | Full | Native SRT import and export |
| DaVinci Resolve | Full | Native SRT import and export |
| Final Cut Pro | Partial | Requires conversion to FCPXML or ICUT for import |
| iOS (Safari, VLC, Infuse) | Good | Most handle SRT well; some require WebVTT conversion |
| Android (MX Player, VLC) | Excellent | Most video player apps support SRT natively |
| Smart TVs (Samsung, LG, Sony) | Varies | Newer models support SRT; older models may fail on non-ASCII characters |
| Kodi / Plex | Excellent | Full SRT support with Unicode |
| HTML5 `
| TikTok | Good | Accepts SRT; text styling may not be preserved |
Converting SRT to Other Formats
Format conversion is a common need when moving between platforms. Here is a complete conversion guide:
| Target Format | When to Use | Key Differences from SRT | Tool |
|---------------|-------------|--------------------------|------|
| WebVTT (.vtt) | Web video, HTML5, YouTube, Vimeo | Dot instead of comma for milliseconds; requires WEBVTT header | SRT to VTT |
| ASS/SSA (.ass) | Advanced styling, karaoke, fansubs | Full formatting, positioning, and animation support | SRT to ASS |
| SBV (.sbv) | YouTube (legacy format) | Different timestamp format, no sequence numbers | Batch Converter |
| TXT | Plain text transcription | No timing information, just text | Online Editor |
| JSON | Web application data interchange | Structured data format with timing and text | Batch Converter |
| STL (.stl) | Broadcast television (EBU STL) | Binary format with positioning data | Batch Converter |
| TTML (.ttml) | Netflix, broadcast, accessibility | XML-based format with extensive metadata | Batch Converter |
Key Conversion Considerations
Our Batch Converter handles all these conversions with encoding preservation and format-specific optimizations.
Common SRT Errors and How to Fix Them
Even experienced subtitle creators encounter these common issues:
| Error | Symptoms | Cause | Fix |
|-------|----------|-------|-----|
| Missing blank line | Two entries merge into one | No blank line separator | Add blank line between each entry |
| Wrong timestamp separator | Player rejects the file | Dot used instead of comma | Replace `.` before `-->` with `,` |
| Non-sequential numbering | Entries play in wrong order | Skipped or duplicate sequence numbers | Renumber sequentially from 1 |
| BOM character | Strange character or blank first line | UTF-8 file saved with BOM | Remove BOM using Online Editor |
| Wrong encoding | Question marks, boxes, or mojibake | File saved as Latin-1 or ANSI | Re-encode as UTF-8 without BOM |
| Overlapping timestamps | Two entries visible at once | Next entry starts before previous ends | Use Fix Overlaps |
| Duration too short | Text flashes by too fast | Less than 1 second display time | Extend end timestamp |
| Duration too long | Text lingers on screen | More than 8 seconds display time | Split or reduce end timestamp |
| Unclosed HTML tags | Formatting spills into next entry | Missing ``, ``, or `` | Close all tags properly |
| Trailing whitespace | Unexpected line breaks | Extra spaces at line ends | Trim whitespace from all lines |
| Empty entries | Blank flashes during playback | Entry with no text | Remove empty entries |
Using Our Tools to Fix Errors
SRT Best Practices
Related Tools
Conclusion
The SRT format's elegant simplicity — numbered entries with timestamps and text — has made it the universal standard for subtitles for over two decades. Mastering its structure, understanding edge cases, knowing how to troubleshoot common errors, and following professional best practices will serve you well whether you are creating subtitles for a single video or managing a large multilingual library.
Use our free online tools to create, edit, convert, and validate your SRT files with confidence. For advanced workflows, explore our batch processing tools and timing utilities to streamline your entire subtitle pipeline.