SRT Subtitles Format Guide
The SRT (SubRip Text) format is the most widely used subtitle format for video content, providing a simple yet effective way to display synchronized text alongside video and audio media.
What is SRT format
SRT is a plain text subtitle format that contains subtitle entries with timing information and text content. Each subtitle entry includes a sequence number, timestamps for when the subtitle should appear and disappear, and the actual subtitle text.
Key characteristics
-
Universal compatibility — Supported by virtually all video players and platforms
-
Simple text format — Easy to create, edit, and parse
-
Precise timing — Millisecond-accurate synchronization
-
Lightweight — Minimal file size overhead
-
Multi-line support — Multiple lines of text per subtitle
File structure and syntax
Basic SRT structure
1
00:00:01,500 --> 00:00:04,000
Welcome to our tutorial series
2
00:00:04,500 --> 00:00:07,200
Today we'll learn about
video localization
3
00:00:08,000 --> 00:00:11,300
Let's get started with the basics
Entry components
Each subtitle entry consists of four parts:
-
Sequence number — Unique identifier (1, 2, 3, etc.)
-
Timestamp — Start time --> End time
-
Subtitle text — One or more lines of text
-
Blank line — Separator between entries
Timestamp format
Format structure:
HH:MM:SS,mmm --> HH:MM:SS,mmm
Components:
-
HH
— Hours (00-99) -
MM
— Minutes (00-59) -
SS
— Seconds (00-59) -
mmm
— Milliseconds (000-999) -
-->
— Arrow separator (spaces are required)
Examples:
00:00:01,500 --> 00:00:04,000 # 1.5 seconds to 4 seconds
00:01:23,750 --> 00:01:26,200 # 1 minute 23.75 seconds to 1 minute 26.2 seconds
01:15:30,000 --> 01:15:33,500 # 1 hour 15 minutes 30 seconds to 1 hour 15 minutes 33.5 seconds
Text formatting and styling
Multi-line subtitles
5
00:00:15,000 --> 00:00:18,500
This is the first line
This is the second line
And this is the third line
Basic HTML-style formatting
10
00:00:30,000 --> 00:00:33,000
<i>Italicized text for emphasis</i>
11
00:00:34,000 --> 00:00:37,000
<b>Bold text for importance</b>
12
00:00:38,000 --> 00:00:41,000
<u>Underlined text</u>
13
00:00:42,000 --> 00:00:45,000
Normal text with <i>some italics</i> mixed in
Color formatting
15
00:00:50,000 --> 00:00:53,000
<font color="#FF0000">Red text</font>
16
00:00:54,000 --> 00:00:57,000
<font color="yellow">Yellow text</font>
17
00:00:58,000 --> 00:01:01,000
Regular text with <font color="blue">blue highlight</font>
Speaker identification
20
00:01:10,000 --> 00:01:13,000
- Speaker 1: Hello there!
- Speaker 2: Hi, how are you?
21
00:01:14,000 --> 00:01:17,000
NARRATOR: Meanwhile, at the office...
22
00:01:18,000 --> 00:01:21,000
[JOHN]: I think we should proceed
[MARY]: I agree completely
Translation-specific considerations
Text length guidelines
General rules:
-
Maximum 2 lines per subtitle entry
-
Maximum 42 characters per line (for readability)
-
Reading speed — Allow 1 second per 10-15 characters
-
Minimum duration — At least 1 second display time
Examples:
✅ Good length:
25
00:02:00,000 --> 00:02:03,000
This text fits comfortably
on two readable lines
❌ Too long:
26
00:02:04,000 --> 00:02:06,000
This is an extremely long subtitle that contains too much text and will be difficult for viewers to read in the short time it's displayed on screen
Language-specific adaptations
Text expansion/contraction:
# English (original)
30
00:03:00,000 --> 00:03:02,500
Save
# German (longer)
30
00:03:00,000 --> 00:03:04,000
Speichern
# Chinese (shorter)
30
00:03:00,000 --> 00:03:02,000
保存
Right-to-left languages:
# Arabic/Hebrew subtitles
35
00:04:00,000 --> 00:04:03,000
مرحبا بكم في برنامجنا التعليمي
# May require special encoding and player support
Cultural localization
Currency and units:
# US version
40
00:05:00,000 --> 00:05:03,000
The price is $19.99
# UK version
40
00:05:00,000 --> 00:05:03,000
The price is £16.99
# EU version
40
00:05:00,000 --> 00:05:03,000
The price is €18.99
Names and references:
# Original
45
00:06:00,000 --> 00:06:03,000
Call me on my cell phone
# UK localization
45
00:06:00,000 --> 00:06:03,000
Call me on my mobile
# Generic international
45
00:06:00,000 --> 00:06:03,000
Call me on my phone
Integration with Localit.io
Uploading SRT files
File processing:
-
Automatic parsing — Extracts sequence numbers and timestamps
-
Text extraction — Isolates translatable content
-
Timing preservation — Maintains original synchronization
-
Format validation — Checks SRT syntax compliance
Import features:
-
Encoding detection — Supports UTF-8, Latin-1, and other encodings
-
Error handling — Identifies and reports malformed entries
-
Duplicate detection — Finds repeated sequences or overlapping times
-
Text normalization — Handles line breaks and formatting
Translation workflow
In Localit.io editor:
Entry #1 (00:00:01,500 --> 00:00:04,000)
Source: "Welcome to our tutorial series"
Target: [Translation field]
Entry #2 (00:00:04,500 --> 00:00:07,200)
Source: "Today we'll learn about video localization"
Target: [Translation field]
Key features:
-
Visual timeline — See subtitle timing context
-
Character counting — Real-time length validation
-
Preview mode — Check formatting and line breaks
-
Timing adjustment — Modify timestamps if needed for target language
Export capabilities
Standard export:
-
Complete SRT format — Maintains proper structure
-
Encoding options — UTF-8, UTF-8 BOM, custom encodings
-
Timing preservation — Keeps original synchronization
-
Format validation — Ensures player compatibility
Advanced export options:
-
Custom timing adjustments — Modify timestamps for text length
-
Line break optimization — Smart text wrapping
-
Format conversion — Export to other subtitle formats (VTT, ASS)
-
Quality checks — Validate reading speed and duration
Timing considerations for translation
Reading speed calculations
Formula:
Reading Time = (Character Count × Language Factor) / Reading Speed
Language factors:
-
English: 1.0 (baseline)
-
Spanish: 1.2 (20% longer)
-
German: 1.3 (30% longer)
-
Chinese: 0.8 (20% shorter)
-
Arabic: 1.1 (10% longer)
Example calculation:
# Original English: "Hello" (5 characters)
# Minimum time: 5 × 1.0 / 15 = 0.33 seconds
50
00:07:00,000 --> 00:07:01,500
Hello
# Spanish: "Hola" (4 characters)
# Minimum time: 4 × 1.2 / 15 = 0.32 seconds
50
00:07:00,000 --> 00:07:01,500
Hola
# German: "Guten Tag" (9 characters)
# Minimum time: 9 × 1.3 / 15 = 0.78 seconds
50
00:07:00,000 --> 00:07:02,000
Guten Tag
Timing adjustments
When to adjust timing:
-
Text expansion — Target language is significantly longer
-
Reading speed differences — Language-specific reading patterns
-
Cultural pacing — Different information processing speeds
-
Technical constraints — Platform-specific limitations
Adjustment strategies:
# Original timing
55
00:08:00,000 --> 00:08:02,000
Quick!
# Extended for longer translation
55
00:08:00,000 --> 00:08:03,000
¡Rápidamente, por favor!
# Split long content
56
00:08:00,000 --> 00:08:02,000
Schnell,
57
00:08:02,500 --> 00:08:04,500
bitte schön!
Best practices for subtitle translation
Content adaptation
Preserve meaning over literal translation:
✅ Good adaptation:
60
00:09:00,000 --> 00:09:03,000
Original: "It's raining cats and dogs"
Spanish: "Está lloviendo a cántaros"
❌ Literal translation:
60
00:09:00,000 --> 00:09:03,000
Spanish: "Está lloviendo gatos y perros"
Handle untranslatable elements:
# Wordplay or puns
65
00:10:00,000 --> 00:10:03,000
Original: "That's a-peel-ing!" (about bananas)
Translation: "¡Qué divertido!" + [Translator note if needed]
# Cultural references
66
00:10:01,000 --> 00:10:04,000
Original: "Like a deer in headlights"
Translation: [Equivalent local expression]
Technical guidelines
File naming conventions:
movie_title.srt # Original
movie_title.es.srt # Spanish
movie_title.fr-CA.srt # French Canadian
movie_title.zh-CN.srt # Simplified Chinese
Quality assurance checklist:
-
✅ Sequence numbering — Consecutive and unique
-
✅ Timing format — Proper HH:MM:SS,mmm format
-
✅ Reading speed — Appropriate for target audience
-
✅ Line length — Within character limits
-
✅ Synchronization — Matches audio/video content
-
✅ Encoding — UTF-8 for international characters
Common translation challenges
Humor and wordplay:
# Challenge: Maintaining comedic timing
70
00:11:00,000 --> 00:11:02,500
Original: "I'm reading a book about anti-gravity.
It's impossible to put down!"
# Solution: Adapt the joke structure
70
00:11:00,000 --> 00:11:03,500
Spanish: "Estoy leyendo un libro sobre la gravedad.
¡No puedo soltarlo!"
Technical terminology:
# Maintain accuracy while being accessible
75
00:12:00,000 --> 00:12:03,000
Original: "Initialize the database connection"
Technical: "Inicializar la conexión de base de datos"
Simplified: "Conectar con la base de datos"
Names and proper nouns:
# Decide on transcription vs. translation
80
00:13:00,000 --> 00:13:02,500
Original: "Welcome to New York"
Options:
- "Bienvenidos a New York" (transcription)
- "Bienvenidos a Nueva York" (translation)
Troubleshooting common issues
Format errors
Invalid timestamp format:
❌ Wrong:
85
0:1:30,500 --> 0:1:33,000 # Missing leading zeros
Text here
✅ Correct:
85
00:01:30,500 --> 00:01:33,000
Text here
Missing separators:
❌ Wrong:
90
00:02:00,000->00:02:03,000 # Missing spaces around arrow
Text without proper spacing
✅ Correct:
90
00:02:00,000 --> 00:02:03,000
Text with proper spacing
Encoding issues
Character display problems:
# Ensure UTF-8 encoding for international characters
95
00:03:00,000 --> 00:03:03,000
Café, naïve, résumé # Requires UTF-8
# Test special characters
96
00:03:04,000 --> 00:03:07,000
中文字符 # Chinese characters
العربية # Arabic script
Русский # Cyrillic script
Synchronization issues
Overlapping timestamps:
❌ Problem:
100
00:04:00,000 --> 00:04:05,000
First subtitle
101
00:04:03,000 --> 00:04:08,000 # Overlaps with previous
Second subtitle
✅ Solution:
100
00:04:00,000 --> 00:04:02,500
First subtitle
101
00:04:03,000 --> 00:04:08,000
Second subtitle