What Is an SRT File? Format Explained + Sample + How to Create One (2026)

An SRT file (SubRip Subtitle) is a plain text file that stores subtitles for a video — sequence numbers, timecodes, and text. It's the most universally supported subtitle format, used by YouTube, Vimeo, Netflix, Premiere Pro, DaVinci Resolve, VLC, and virtually every video editor. Format spec, annotated sample, and how to create one below.

Published July 3, 2026Format spec + annotated sampleSRT vs VTT vs ASS decision table
Home/What Is an SRT File

TL;DR

An SRT file (SubRip Subtitle) is a plain text file that stores subtitles for a video. Each subtitle is a block containing a sequence number, start-and-end timecodes (hours:minutes:seconds,milliseconds), and one or two lines of text. SRT is the most universally supported subtitle format — it works on YouTube, Vimeo, Netflix, Premiere Pro, DaVinci Resolve, VLC, and virtually every video editor. You can open one with Notepad or TextEdit.

SRT Format: Anatomy of a Subtitle Block

An SRT file is a sequence of subtitle blocks separated by blank lines. Every block has exactly four parts: a sequence number, a timecode range, one or two lines of text, and a trailing blank line. There is no header, no XML wrapper, and no metadata — just this simple pattern repeated for every subtitle in the video.

Here's a real, valid SRT sample you can copy into a text file and load in VLC:

1
00:00:00,000 --> 00:00:04,500
Welcome to the podcast. Today we're
talking about productivity tips.

2
00:00:04,500 --> 00:00:08,750
Thanks for having me on. I've been
working remotely for five years.

3
00:00:08,750 --> 00:00:12,000
Great to have you. What's your
number one tip?

Breaking down the anatomy

Line 1 — Sequence number: a plain integer starting at 1 and incrementing. Most players tolerate gaps or duplicates, but a clean file uses sequential integers.
Line 2 — Timecode range: HH:MM:SS,mmm --> HH:MM:SS,mmm. The comma before milliseconds is mandatory in SRT — not a period. The separator is a literal arrow --> (two hyphens, one greater-than) with a space on either side.
Lines 3–4 — Subtitle text: one or two lines of text. Max 42 characters per line is the broadcast standard. Some players accept more, but readability drops fast beyond that.
Blank line — Block separator: exactly one blank line before the next sequence number. Miss this and most players will merge the two blocks or refuse to parse the file.

What's allowed inside the text

The original SubRip spec is minimal — just plain text. In practice, a small set of inline HTML-like tags are widely supported:

  • <i>italic</i> — supported by VLC, MPV, YouTube, Premiere
  • <b>bold</b> — widely supported
  • <u>underline</u> — widely supported
  • <font color="#ffcc00"> — partial support; ignored by YouTube

For anything beyond basic emphasis — positioning, karaoke effects, per-word timing — you need VTT or ASS instead. See the format comparison below.

Reference: Library of Congress: SubRip Subtitle File Format (FDD000569).

SRT vs VTT vs ASS vs SUB: Which Subtitle Format to Use

Four formats dominate. Pick based on where the subtitles will play, how much styling you need, and what tools consume them downstream.

FormatBest ForStylingPlayer SupportSize
SRTMax compatibility, YouTube, video editorsMinimal (basic <i>, <b> tags — spotty support)All players, all editorsSmallest
VTT (WebVTT)HTML5 web video, custom playersCSS + positioning + cue settingsNative in modern browsersSmall
ASS / SSAAnime, karaoke, advanced stylingFull — color, position, fonts, effectsMedia players + advanced editorsMedium
SUBLegacy DVD-era workflowsNone (or image-based, .idx pair)Aging players onlySmall (text) / Large (image)

Which one to pick

Pick SRT if: you're uploading to YouTube, Vimeo, LinkedIn, TikTok, or Instagram; delivering to a video editor (Premiere Pro, DaVinci Resolve, Final Cut, CapCut); handing off to a client; or you just want the file to work everywhere. This is the default. If you don't have a specific reason to choose another format, use SRT.

Pick VTT if: you're serving video through a native HTML5 <video> element with a <track> tag, or using a web player that needs positioning, styling, or per-cue metadata. VTT is the modern web subtitle standard and lets you do things like place captions in a specific screen region or style them with CSS.

Pick ASS/SSA if: you're working on anime, karaoke, or content that needs typographic effects — colored text, per-character animation, precise font positioning. Aegisub is the standard editor. Most Western video platforms will ignore or strip the styling, so ASS is really a niche format for hardsub workflows.

Pick SUB only if: a legacy system explicitly requires it. SUB comes from the DVD era and comes in two flavors — text-based (usually paired with an .idx file) or image-based. Both are aging out. If you have a choice, don't pick SUB.

Character and Timing Limits That Actually Matter

The SRT spec itself doesn't enforce character or timing limits, but the broadcast and streaming industry has settled on a set of readability rules. Follow these or your subtitles will be rejected by professional QC, fail accessibility review, or simply be hard to read.

RuleSource / rationale
Max 42 characters per lineNetflix Timed Text Style Guide, BBC subtitle guidelines
Max 2 lines per subtitleBroadcast + streaming standard
Reading speed: 15–20 characters per secondWCAG 2.1 recommendation for cognitive load
Minimum duration: 1 second per subtitleBelow 1s viewers can't finish reading
Maximum duration: 7 seconds per subtitleAbove 7s viewers lose sync with speech
Minimum 2-frame gap between subtitlesPrevents subtitles from bleeding together on screen

Why the limits matter

A viewer's reading speed caps around 15–20 characters per second — the WCAG 2.1 recommendation for accessible captions. A 42-character line takes roughly 2.1–2.8 seconds to read. Push above that and viewers either miss the caption or stop watching the video to read.

The minimum duration of one second prevents flash-frame captions viewers can't parse. The maximum of seven seconds prevents a caption from lingering long after the speaker has moved on — which breaks the perceived sync between text and audio.

These rules are why every professional subtitling tool ships with automatic cue-splitting. If you want them enforced for you, our subtitle generator applies the 42-char / 15–20 cps / 1–7s limits automatically at export time.

References: Netflix Timed Text Style Guide (English Timed Text), BBC Subtitle Guidelines, WCAG 2.1 SC 1.2.2 Captions (Prerecorded).

How to Open, Edit, or Create an SRT File

SRT is a plain text format, so every workflow starts with a text editor. Beyond that, tooling scales up with your needs.

Opening an SRT file

Any text editor works. On Windows: Notepad or Notepad++. On Mac: TextEdit (Format → Make Plain Text first) or BBEdit. Cross-platform: VS Code, Sublime Text, or Atom. VLC also opens SRT files directly if you drop them into a video's folder with a matching filename — the subtitles appear on screen when the video plays.

Editing an SRT file

For small text fixes — typos, wording — use a text editor. For retiming, resyncing, or restructuring cues, use a dedicated subtitle editor. Subtitle Edit (Windows, free, actively maintained) is the industry standard for cleanup work. Aegisub (cross-platform, free) is the go-to for advanced styling and karaoke-style timing. Both give you a waveform view so you can align cues to speech visually.

Creating an SRT file manually

Fine for a short clip or a demo. Painful past a few minutes of video.

  1. Open a new plain text file in Notepad, TextEdit, or VS Code.
  2. Type 1 and press Enter.
  3. Type the timecode range, for example 00:00:00,000 --> 00:00:04,500, and press Enter.
  4. Type the subtitle text — max 2 lines, 42 characters each.
  5. Press Enter twice to leave a blank line.
  6. Repeat for each subtitle, incrementing the sequence number.
  7. Save with a .srt extension (not .txt) and UTF-8 encoding without BOM.

Generating an SRT file with AI

The realistic option for anything longer than a few minutes. An AI transcription tool listens to the audio, produces word-level timestamps, and formats the result as SRT — all in the time it would take you to type a single block by hand.

  • VexaScribe — paste an audio or video file, get an SRT with word-level timing, character-limit-aware cue splits, and multi-language support. 30 minutes free on signup. See our SRT generator page.
  • Whisper (local) — free, MIT-licensed, requires Python + a decent GPU or several minutes on CPU. Use with the --output_format srt flag.
  • Descript, Rev — commercial alternatives with editor UIs. Descript is video-editor-first; Rev is transcription-first.

Extracting SRT from an existing video

If the video already has embedded captions or an accompanying subtitle track, you can pull them out without re-transcribing. For YouTube videos, yt-dlp --write-auto-subs --sub-format srt downloads the auto-generated captions. For MP4/MKV containers with an embedded subtitle stream, ffmpeg -i input.mkv -map 0:s:0 output.srt extracts the first subtitle track. NLEs (Premiere, DaVinci Resolve, Final Cut) can also export captions to SRT via their subtitle timeline.

Common SRT Problems and How to Fix Them

Seven problems account for almost every broken SRT file we've seen. Here's how to spot and fix each.

Garbled accented characters (é, ñ, ü)

Cause: File saved as ANSI, Windows-1252, or ISO-8859-1 instead of UTF-8

Fix: Re-save as UTF-8 without BOM. In VS Code: click the encoding menu in the bottom-right → 'Save with Encoding' → 'UTF-8'. In Notepad, use the encoding dropdown in the Save As dialog.

CRLF vs LF line endings

Cause: Windows line endings (CRLF) can trip strict SRT parsers

Fix: Use LF (Unix) line endings for max compatibility. VS Code shows the line-ending mode in the status bar and lets you switch with a click.

Timecode uses period instead of comma

Cause: Some tools export in VTT format (00:00:04.500) mislabeled as .srt

Fix: SRT timecodes must use a COMMA before milliseconds: 00:00:04,500 — not 00:00:04.500. Period is VTT.

Special characters need escaping

Cause: Angle brackets and ampersands inside subtitle text collide with tag parsing

Fix: Use UTF-8 directly. If you must escape, &amp; &lt; &gt; are the widely-supported HTML entities.

Player shows 'no subtitles available'

Cause: Filename mismatch or wrong MIME type when served over HTTP

Fix: Match the filename: video.mp4 pairs with video.srt (same base name). For HTTP delivery, serve with MIME type application/x-subrip.

YouTube rejects the upload

Cause: Invalid timestamps (end before start), non-UTF-8, or missing sequence numbers

Fix: Validate with an online SRT checker before uploading. YouTube tolerates minor formatting drift but rejects end-before-start timestamps outright.

Subtitles are out of sync with speech

Cause: Global offset (audio was re-cut) or drift (frame-rate mismatch)

Fix: For a constant offset, bulk-shift all timestamps in Subtitle Edit or Aegisub. For drift, resample against a reference frame rate.

Real Use Cases for SRT Files

YouTube upload

Upload one .srt per language in YouTube Studio → Subtitles → Add Language. Viewers can toggle between languages in the CC menu.

Podcast video export

Turn a podcast episode into a captioned video for LinkedIn, X, TikTok, Instagram Reels. Auto-play with captions on is the default on most social feeds.

Accessibility compliance

WCAG 2.1 SC 1.2.2 requires captions for prerecorded video. SRT is the format most compliance tooling accepts.

Multilingual video

One .srt per language target — video-en.srt, video-es.srt, video-fr.srt. Ship the video once, layer captions per audience.

Educational content

Lecture videos with captions improve retention and let students search transcripts. LMS platforms (Canvas, Moodle, Kaltura) all accept SRT.

Video editor import

Premiere Pro, DaVinci Resolve, and Final Cut Pro all import SRT as an editable subtitle track — including timing, so you don't have to hand-place anything.

Generate an SRT from your audio or video

Upload an audio or video file, get a valid SRT with word-level timestamps, cue splits at 42 characters, and UTF-8 encoding by default. 30 minutes free on signup — no credit card.

Try the SRT generator

Frequently Asked Questions

Can I open an SRT file with Notepad?

Yes. SRT files are plain text — Notepad (Windows), TextEdit (Mac), VS Code, or any text editor can open, view, and edit them.

What's the difference between SRT and VTT?

SRT is the older, more universally supported format. VTT (WebVTT) is designed for HTML5 web video and supports more metadata (styling, positioning, cue settings). For YouTube, either works; for a custom HTML5 player, use VTT.

Does YouTube prefer SRT or VTT?

YouTube accepts both. SRT is more common because it's supported everywhere else, so uploading SRT keeps your file portable.

Can I edit an SRT file in Word?

Technically yes, but Word may add invisible formatting or change encoding that breaks the file. Use a plain-text editor (Notepad, VS Code, Sublime).

How do I create an SRT file for free?

Manually: type it in a text editor following the format spec. Automatically: generate from audio/video with an AI tool like VexaScribe (30 min free at signup) or Whisper locally.

Why is my SRT file showing garbled characters?

Usually an encoding issue. Save the file as UTF-8 (without BOM) and non-Latin characters will display correctly. If you saved from Windows Notepad, check the encoding dropdown when saving.