
How to Create an SRT File: Complete Guide to Subtitle Files
The SRT file is the most widely used subtitle format in the world. Whether you're adding captions to a YouTube video, subtitling a film, or making your online course accessible, chances are you'll need an SRT file at some point.
Despite being everywhere, the SRT format is surprisingly simple. It's a plain text file that anyone can create, edit, and understand. In this guide, we'll cover everything — the exact format specification, how to create SRT files manually and automatically, and how to convert between subtitle formats.
What Is an SRT File?
SRT stands for SubRip Text (sometimes SubRip Subtitle). It was originally developed for the SubRip software, which extracted subtitles from DVDs. The format caught on because of its simplicity, and it's now supported by virtually every video platform and player.
An SRT file is a plain text file with the .srt extension. It contains a sequence of subtitle blocks, each with three pieces of information:
- A sequence number
- A timecode range (when the subtitle appears and disappears)
- The subtitle text
That's it. No binary encoding, no proprietary format, no special software needed. You can open and edit an SRT file in any text editor.
The SRT Format Specification
Here's the exact syntax of an SRT file:
1
00:00:01,000 --> 00:00:04,500
Welcome to our complete guide
on creating subtitle files.
2
00:00:05,000 --> 00:00:08,200
In this video, we'll cover everything
you need to know about SRT files.
3
00:00:09,000 --> 00:00:12,800
Let's start with the basics
of the SRT format.
Let's break down each component.
Sequence Number
Each subtitle block starts with a sequential integer. The first subtitle is 1, the second is 2, and so on. These numbers must be in order and shouldn't have gaps (although most players are forgiving about this).
Timecode Line
The timecode line specifies when the subtitle appears and when it disappears:
00:00:01,000 --> 00:00:04,500
The format is: HH:MM:SS,mmm --> HH:MM:SS,mmm
- HH — Hours (00-99)
- MM — Minutes (00-59)
- SS — Seconds (00-59)
- mmm — Milliseconds (000-999)
- --> — The arrow separator (with spaces on both sides)
Important details:
- Use commas for the millisecond separator, not periods. This is the most common mistake when creating SRT files manually.
00:00:01,500is correct;00:00:01.500is wrong (though some players accept it). - The arrow
-->must have exactly one space on each side. - End time must be after start time.
Subtitle Text
The actual text to display. SRT supports:
- Multiple lines — Most subtitles use 1-2 lines. Two lines is the standard maximum.
- Basic HTML tags —
<b>bold</b>,<i>italic</i>,<u>underline</u>, and<font color="#FFFFFF">colored text</font>(player support varies). - UTF-8 encoding — Full Unicode support for any language.
Blank Line Separator
Each subtitle block must be separated by a blank line. The blank line tells the parser where one subtitle ends and the next begins. The file should also end with a blank line after the last subtitle.
How to Create an SRT File Manually
Creating an SRT file by hand is straightforward. Here's the step-by-step process.
Step 1: Open a Plain Text Editor
Use a plain text editor, not a word processor. Word processors (Microsoft Word, Google Docs) add hidden formatting that breaks SRT files.
Recommended editors:
- Windows: Notepad, Notepad++, VS Code
- Mac: TextEdit (set to plain text mode), VS Code, Sublime Text
- Linux: gedit, nano, VS Code
- Any platform: VS Code (free, excellent for this purpose)
If you're using TextEdit on Mac, go to Format > Make Plain Text before you start typing.
Step 2: Write Your Subtitle Blocks
Follow the format exactly. Here's a real-world example for a 30-second video intro:
1
00:00:00,500 --> 00:00:03,000
Hello and welcome to today's tutorial.
2
00:00:03,500 --> 00:00:06,800
My name is Sarah, and I'll be
walking you through the process.
3
00:00:07,200 --> 00:00:10,500
Before we begin, make sure you have
your project files downloaded.
4
00:00:11,000 --> 00:00:14,200
You can find the link in the
description below this video.
5
00:00:15,000 --> 00:00:18,500
Alright, let's get started
with the first step.
Step 3: Save with the Correct Extension and Encoding
Save the file with:
- Extension:
.srt - Encoding: UTF-8 (critical for non-English characters)
In most text editors, you can choose the encoding when saving. Select UTF-8 or UTF-8 without BOM.
If your editor saves as .txt by default, rename the file and change the extension from .txt to .srt.
Step 4: Test Your SRT File
Open any video in VLC Media Player, then drag your SRT file onto the video window (or go to Subtitle > Add Subtitle File). If the timecodes are correct, you should see your subtitles appear at the right moments.
How to Auto-Generate SRT Files from Video
Creating SRT files manually is fine for short videos, but for anything longer than a few minutes, it becomes tedious. Timing each subtitle to match the audio precisely requires watching and rewatching the video repeatedly.
AI-powered tools can generate SRT files automatically in minutes. Here's how to do it with ConvertAudioToText's Subtitle Generator.
Step 1: Upload Your Video
Go to the Subtitle Generator and upload your video file. The tool accepts all common formats — MP4, MOV, AVI, MKV, WebM, and more.
Step 2: Wait for Processing
The AI extracts the audio, transcribes it using speech recognition, and automatically generates timed subtitle blocks. This typically takes 1-3 minutes for a 10-minute video.
Step 3: Review and Edit
The generated subtitles appear in an editor where you can:
- Fix any transcription errors
- Adjust timecodes
- Split or merge subtitle blocks
- Change line breaks
ConvertAudioToText's Subtitle Editor provides a waveform display that makes timing adjustments intuitive — you can see exactly where speech starts and stops.
Step 4: Export as SRT
Download the finished subtitles as an SRT file. You can also export as VTT, ASS, or plain text if needed.
SRT Best Practices
Following these guidelines will make your subtitles more readable and professional.
Timing
- Minimum display time: 1 second per subtitle. Anything shorter is impossible to read.
- Maximum display time: 7 seconds. Longer than this and viewers forget they're reading a subtitle.
- Ideal display time: 2-4 seconds for most subtitle blocks.
- Lead-in time: Subtitles should appear 0.1-0.25 seconds before the speech starts. This gives the viewer's eye time to find the text.
- Gap between subtitles: Leave at least 0.08 seconds (80ms) between consecutive subtitles. This creates a visual "blink" that tells the viewer a new subtitle has appeared.
Text Length
- Maximum characters per line: 42 characters. This is the broadcast standard and ensures readability on small screens.
- Maximum lines per subtitle: 2 lines. Three or more lines cover too much of the video.
- Words per subtitle block: Aim for 12-15 words maximum.
- Line breaks: Break at natural linguistic boundaries — between clauses, after commas, or at phrase boundaries. Never break in the middle of a word.
Good line break:
We're going to start with
the first configuration step.
Bad line break:
We're going to start with the
first configuration step.
The first example breaks between the prepositional phrase and its object. The second breaks in the middle of a noun phrase ("the first configuration step"), which is harder to read.
Reading Speed
Professional subtitles target a reading speed of 15-20 characters per second (about 150-200 words per minute). This is comfortable for most adults. Children's content or educational material should be slower (12-15 characters per second).
To check your reading speed: divide the total characters in a subtitle by the display duration in seconds.
Example: "Welcome to our complete guide on subtitles" (44 characters) displayed for 3 seconds = 14.7 characters per second. That's a comfortable pace.
Punctuation and Grammar
- Use standard punctuation. Subtitles should be grammatically correct.
- Use sentence case (capitalize the first word and proper nouns only). ALL CAPS is harder to read and implies shouting.
- Don't end subtitles with ellipses (...) unless the sentence genuinely trails off. Use them at the start of the next subtitle if a sentence continues across subtitle blocks.
- Include question marks and exclamation points where appropriate — they convey tone that the viewer might miss.
Sound Descriptions
For accessibility subtitles (also called SDH — Subtitles for the Deaf and Hard of Hearing), include descriptions of relevant non-speech sounds:
14
00:01:23,000 --> 00:01:25,500
[phone ringing]
15
00:01:26,000 --> 00:01:28,500
[door opens]
Hello, is anyone home?
Use square brackets for sound descriptions and italics (if supported) to distinguish them from dialogue.
Converting Between Subtitle Formats
SRT is the most common format, but it's not the only one. You may need to convert SRT to another format or vice versa.
SRT vs VTT (WebVTT)
VTT (Web Video Text Tracks) is the standard for HTML5 web video. It's very similar to SRT with a few differences:
WEBVTT
1
00:00:01.000 --> 00:00:04.500
Welcome to our complete guide
on creating subtitle files.
2
00:00:05.000 --> 00:00:08.200
In this video, we'll cover everything
you need to know about SRT files.
Key differences:
- VTT uses periods for milliseconds (
.000), not commas - VTT files start with the text
WEBVTTon the first line - VTT supports CSS-like styling and positioning
- VTT sequence numbers are optional
SRT vs ASS/SSA (Advanced SubStation Alpha)
ASS is a more powerful subtitle format that supports:
- Font styling (size, color, bold, italic per subtitle)
- Positioning (place subtitles anywhere on screen)
- Animation effects (fade, move, rotate)
- Multiple subtitle tracks
The format is more complex and usually generated by tools like Aegisub rather than written by hand. It's popular in anime fansubbing and advanced video editing.
SRT vs SBV (YouTube SubViewer)
SBV is YouTube's older subtitle format. It uses a simpler timecode format:
0:00:01.000,0:00:04.500
Welcome to our complete guide
on creating subtitle files.
0:00:05.000,0:00:08.200
In this video, we'll cover everything
you need to know about SRT files.
YouTube now fully supports SRT uploads, so there's no reason to use SBV unless you're working with legacy files.
How to Convert
ConvertAudioToText's Subtitle Converter handles conversions between all major subtitle formats — SRT, VTT, ASS, SBV, and more. Upload your subtitle file, select the target format, and download the converted version.
For manual conversion between SRT and VTT (the most common conversion), the changes are minimal:
- Add
WEBVTTas the first line - Replace commas with periods in the timecodes (
00:00:01,000becomes00:00:01.000) - Save with a
.vttextension
Where to Upload SRT Files
Once you have your SRT file, here's how to use it on major platforms.
YouTube
- Go to YouTube Studio > Content
- Click the video > Subtitles
- Click "Add Language" and select the language
- Click "Add" under Subtitles, then "Upload file"
- Choose "With timing" and upload your SRT file
YouTube also accepts VTT and SBV formats.
Vimeo
- Go to your video's settings
- Click "Distribution" > "Subtitles"
- Click the "+" button
- Select the language and upload your SRT file
- Go to your video post
- Click "Edit Video" > "Captions"
- Click "Upload SRT File"
- Name the file in the format:
filename.en_US.srt(language code required)
HTML5 Video
For web-based video players, use VTT format with the <track> element:
<video controls>
<source src="video.mp4" type="video/mp4">
<track src="subtitles.vtt" kind="subtitles" srclang="en" label="English" default>
</video>
Convert your SRT to VTT first, or use a Subtitle Converter for instant conversion.
Video Editing Software
Most video editors (Premiere Pro, Final Cut Pro, DaVinci Resolve, iMovie) can import SRT files directly. Look for an "Import Subtitles" or "Import Captions" option in the timeline or text menu.
Common SRT Errors and How to Fix Them
If your SRT file isn't displaying correctly, check for these common issues.
Period instead of comma in timecodes. SRT uses commas (00:00:01,000), not periods. VTT uses periods. If your subtitles don't appear, this is the most likely culprit.
Missing blank lines between blocks. Each subtitle block must be separated by exactly one blank line. Missing separators cause the parser to merge blocks together.
Wrong encoding. If you see garbled characters (especially for non-English text), the file isn't saved as UTF-8. Re-save with UTF-8 encoding.
Overlapping timecodes. If subtitle 1 ends at 00:00:05,000 and subtitle 2 starts at 00:00:04,500, they overlap. Some players handle this gracefully; others show both simultaneously or skip one. Fix by ensuring each subtitle's end time is before the next subtitle's start time.
Sequence number gaps. While most modern players ignore sequence numbers entirely (relying on timecodes for ordering), some older players get confused by gaps or out-of-order numbers. Keep them sequential.
Extra spaces or characters. Invisible characters (like BOM markers, trailing spaces, or Windows carriage returns on Mac) can sometimes cause issues. If your file looks correct but doesn't work, open it in a code editor that shows invisible characters and clean them up.
Frequently Asked Questions
Can I add styling (bold, color, font) to SRT files?
The SRT format supports basic HTML tags: <b> for bold, <i> for italic, <u> for underline, and <font color="#FFFFFF"> for color. However, support varies by player. YouTube ignores all styling in SRT files. VLC supports bold and italic. If you need reliable styling, consider using the ASS subtitle format, which has robust styling support. For most use cases, plain unstyled text is the safest choice.
What's the maximum number of subtitles an SRT file can contain?
There's no technical limit. SRT files for feature-length films routinely contain 1,500-2,500 subtitle blocks. The format is plain text, so even a file with 10,000 blocks is only a few hundred kilobytes. Any modern player or platform can handle files of any reasonable size.
How do I sync subtitles that are out of time?
If all your subtitles are consistently early or late by the same amount, you can shift all timecodes by a fixed offset. Tools like the Subtitle Editor let you do this with a single adjustment. If the timing drift is inconsistent (subtitles start correct but gradually get more out of sync), you'll need to adjust individual timecodes or regenerate the subtitles from scratch using a Subtitle Generator.
Should I use SRT or VTT for my website?
For web-based video players (HTML5 <video> elements), VTT is the standard. Browsers natively support VTT through the <track> element but don't natively support SRT. That said, most JavaScript-based video players (Video.js, Plyr, JW Player) support both formats. If you're building for the web, VTT is the safer choice. If you're distributing for general use (YouTube, social media, video editors), SRT has broader compatibility. You can always convert between the two formats using a Subtitle Converter since the conversion is trivial.
Try transcription free
Convert any audio or video to accurate text in seconds. Speaker labels, timestamps, and AI summaries included. No account required.
Related Articles

How to Add Subtitles to a Video: 2026 Step-by-Step Guide
Add subtitles to any video in 2026 with AI tools or manual SRT files. Covers burning, soft subs, multi-language exports, and YouTube/TikTok specifics.

Subtitle Translation for Video: SRT Workflow and Best Tools in 2026
How to translate video subtitles across SRT, VTT, and other formats. Timing adjustments, language-specific quirks, AI tools, and the complete workflow for 2026.