SUBTITLES · FORMAT GUIDE · 2026
What is an SRT file?
An SRT file is a plain-text subtitle file — the “SubRip” format. It stores captions as numbered blocks, each with a start-and-end timecode and the text to display during that window. Because it is nothing but text, any editor can open it and any video tool can read it — which is exactly why it became the universal subtitle format. This page covers what is inside one, what opens an SRT file on every platform, a sample file you can copy, and the fixes for the ways it breaks.
What is inside an SRT file
SRT stands for SubRip Text, named after the late-1990s Windows program that ripped subtitles off DVDs with OCR. The program is a historical footnote; the format it wrote conquered the world. There is no official standards document — unlike WebVTT (a W3C standard), SRT is a de facto standard that won by simplicity: a human can fix a typo in Notepad, a script can generate one in three lines of Python, and every player, editor, and upload form accepts it.
Each cue block has exactly four parts:
- Sequence number — a plain integer starting at 1 and incrementing. Most players tolerate gaps or duplicates; clean files count sequentially.
- Timecode line —
HH:MM:SS,mmm --> HH:MM:SS,mmm: start, arrow, end. The comma before the milliseconds is mandatory in SRT (a period makes it a VTT time, which strict parsers reject). - Caption text — one or two lines; two lines of ~42 characters each is the broadcast readability convention. Minimal inline tags (
<i>,<b>,<u>,<font>) survive in most parsers; positioning, styling, and speaker labels do not exist in SRT. - Blank line — the block separator. Miss it and most parsers merge two cues into one.
Two properties define the format's character: it is tiny (a feature film's subtitles
are a few dozen kilobytes of text) and it is encoding-agnostic — the format sets
no character encoding, so modern files are written UTF-8 while DVD-era files arrive in Windows-1252 or
regional encodings, which is where the famous mojibake (garbled accented characters) comes from. There
is no header line (that is VTT's WEBVTT), no metadata, and no frame-rate declaration —
millisecond precision means you convert frames to milliseconds yourself if a tool needs that.
What opens an SRT file
The answer depends on the job: read and fix the text, watch the subtitles on the video, or edit timing on a waveform. Any editor opens an SRT instantly; a player shows it timed with the video; a subtitle editor does both.
| Tool | Platform | What you get | Watch for |
|---|---|---|---|
| Notepad | Windows | Instant text view and edit | Save As appends .txt behind your back; old versions default to ANSI |
| Notepad++ / VS Code | Windows, Mac, Linux | Text edit with an encoding indicator in the status bar — the fastest mojibake diagnosis | Save as UTF-8 (without BOM); some older players choke on a BOM |
| TextEdit | Mac | Text view and edit | Rich text (.rtf) by default — Format > Make Plain Text first, or you save captions.srt.rtf |
| VLC / MPV | All | Subtitles displayed on the video, timed | Auto-load needs the SRT next to the video with a matching filename; garbled text means a wrong encoding setting |
| Subtitle Edit | Windows (open source) | Waveform-timed editing, sync, format conversion | Free but Windows-focused — the serious-editing default |
| Aegisub | All (open source) | Waveform + spectrogram timing, styling | Styling features belong to the ASS world; export back to plain SRT |
| Premiere / DaVinci / FCP / CapCut | All | Import SRT as a caption track | Each has its own import menu — but all read SRT without conversion |
The double-click trap: Windows has no built-in SRT association — double-clicking a downloaded subtitle file opens an app-picker or nothing, because the OS does not know which tool claims a subtitle file. It is not a video (players will not grab it) and not a document (word processors open it with formatting damage). Right-click → Open with → Notepad for text, or drop it on a playing VLC window for the timed view.
VLC specifics (the most-asked variant of this question): put the SRT in the same
folder as the video with the same base name — Movie.mp4 next to
Movie.srt — and VLC auto-loads it. If nothing shows, press V to cycle
subtitle tracks (VLC remembers if you disabled tracks last session), or use Subtitle → Add
Subtitle File. Boxes and question marks instead of characters mean the encoding setting: Tools →
Preferences → Subtitles/OSD → Default encoding, matched to the file (UTF-8 for anything
modern). Drift is Tools → Track Synchronization, in milliseconds.
iPhone and Android: mobile players are the weakest SRT surface — iOS's built-in video playback makes attaching external subtitle files awkward (VLC's iOS app is the practical route), while Android's MX Player and VLC auto-load an SRT that sits beside the video with a matching name, same as desktop. On phones, a downloaded subtitle's encoding more often shows as boxes — fix it on a desktop first.
A sample SRT file you can copy
This is a complete, valid SRT file — two cues, every rule applied. Save it as
sample.srt and drop it next to any video renamed
sample.mp4 to see it work in VLC, or upload it to YouTube's
caption editor as a first test:
1 00:00:01,000 --> 00:00:04,500 Welcome to the sample subtitle file. 2 00:00:05,200 --> 00:00:09,800 Each block is a sequence number, a timecode line, then the text.
For a large realistic file (a 45-minute talk is roughly 500–800 cues and 40–70 KB),
public sample repositories offer test files in several sizes — SampleFile.com hosts
SHA256-verified SRT samples from 50KB to 1MB with a stable manifest for test pipelines, ConvertICO
offers small themed samples (dialogue, lyrics, multilingual unicode), and the
andreyvit/subtitle-tools GitHub repo carries the classic two-cue
sample.srt that tools use in their own docs. These matter more than they look: a known
good file is the fastest way to prove the player is the problem, not your subtitle file.
Generating a file for real video? That is the how-to-create-an-SRT-file guide — hand-writing, waveform timing, and generating from audio, with the Notepad and TextEdit save traps.
When an SRT file breaks (and the fix)
SRT fails silently — the parser skips or mis-renders cues without an error. The recurring break modes and their fixes:
- Garbled characters (mojibake). The file is legacy-encoded (Windows-1252, Latin-1) and the tool read it as UTF-8. Open in VS Code or Notepad++ (the encoding indicator shows what you have), re-save as UTF-8 without BOM. The file itself is fine — the encoding interpretation is what changed.
- VLC shows no subtitles. Track disabled last session (press V), filename mismatch (base names must match exactly), or the file is not really SRT — TVs and converters silently deliver renamed image-based SUP/PGS tracks, which VLC reports under Tools → Codec Information → Subtitle. Convert those with OCR; renaming cannot.
- Subtitles drift out of sync. Frame-rate mismatch or player delay: Tools → Track Synchronization in VLC, or shift timestamps in Subtitle Edit. A constant offset is one number; progressive drift is a frame-rate conversion problem.
- Cues skipped or merged. The comma-vs-period timecode (a VTT-style time in an SRT), a missing blank line between blocks, or overlapping cues. Each is a one-pass fix in Subtitle Edit, which validates on open.
- Dropped on upload. Extension hidden behind .txt or .rtf from the save dialog (the classic
captions.srt.txt), or encoding rejected — YouTube wants plain UTF-8 and caps files at 10MB / 10,000 cues.
The SRT vs VTT guide
covers the format-decision side of these traps — where VTT is required instead (any HTML5
<track> element), and the one-line ffmpeg conversions between the two.
Turning an SRT file into plain text
The reverse job — you have an SRT and want the transcript — is a text filter: keep the
caption lines, drop the numbers and timecodes. Browser-local converters do it in one paste
(SubtitleKit keeps or strips timecodes, files never leave your device); for scripts, Python's
srt library (pip install srt) parses cue objects you can join into text, and one-liner
gists handle the common “strip timestamps into one paragraph” case in ten lines.
VocalFuse inverts the pipeline: instead of extracting text from subtitles that already exist, it runs a local Whisper-class engine on the audio itself — no captions required — and exports SRT, VTT, or TXT from one pass. When the source video never had captions (the ~1-in-10 case), there is no SRT to open; the transcript has to come from the audio. Nothing uploads, and there is no per-minute meter: free tier, Basic $5/mo dictation, Pro $10/mo adds AI notes and summaries.
Related reading
How to create an SRT file
Three working creation routes and the Notepad/TextEdit save traps.
Creation guideSRT vs VTT
Which format each destination requires, and one-line ffmpeg conversions.
Format decision guideTranscribe video files locally
The local Whisper pipeline vs cloud converters: cost, formats, privacy.
Video transcription guideYouTube transcripts & timestamps
Extract, keep or strip timestamps, and re-upload SRT to Studio.
Timestamps guideExplore related AI note taking guides
SRT file — FAQ
What does SRT stand for?
SubRip Text (or SubRip Subtitle) — named after the late-1990s Windows program SubRip that ripped subtitles off DVDs with OCR. The program is history, but the plain-text format it wrote became the de facto universal subtitle standard. There is no official specification document; unlike WebVTT (a W3C standard), SRT won by simplicity.
What opens an SRT file?
Three tool classes, by job. Text editors: Notepad, VS Code, Notepad++ (Windows), TextEdit in plain-text mode (Mac) — instant view and edit, since the file is plain text. Video players: VLC and MPV display the subtitles timed over the video when the SRT sits next to it with a matching filename. Subtitle editors: Subtitle Edit (Windows) and Aegisub (all platforms) add waveform timing, sync, and conversion. Editors like Premiere, DaVinci Resolve, and Final Cut import SRT directly as caption tracks.
How do I play an SRT file with my video?
In VLC, put the SRT in the same folder as the video with the same base name (Movie.mp4 next to Movie.srt) and it auto-loads. If nothing shows, press V to cycle subtitle tracks, or use Subtitle > Add Subtitle File. Garbled characters mean a wrong encoding setting (Tools > Preferences > Subtitles/OSD > Default encoding — set UTF-8); drift is fixed under Tools > Track Synchronization.
What is an example of an SRT file?
A valid two-cue file: cue 1 is the line "1", then "00:00:01,000 --> 00:00:04,500", then the caption text, then a blank line; cue 2 repeats with the next number and times. The timecode uses a comma before the milliseconds (a period makes it VTT-style), the arrow is --> with spaces on each side, and blocks always separate with one blank line. Save it as UTF-8 with the .srt extension.
Can I convert an SRT file to plain text?
Yes — it is a text filter: keep the caption lines, drop the sequence numbers and timecode lines. Browser-local converters like SubtitleKit do it in one paste with or without timecodes and never upload the file; in Python, the srt library (pip install srt) parses cues you can join into a paragraph. Note the text comes from whatever captions exist — if a video has no subtitle track, there is no SRT to extract and you need speech recognition on the audio instead.
Why does my SRT file show garbled characters?
Encoding mismatch (mojibake). The SRT format sets no character encoding, so DVD-era files arrive in Windows-1252 or Latin-1 while modern tools read them as UTF-8. The file itself is fine: open it in VS Code or Notepad++ (the status bar shows the actual encoding), then re-save as UTF-8 without BOM. Some older players also choke on a UTF-8 BOM — the without-BOM variant is the safe default.
Why does double-clicking an SRT file do nothing on Windows?
Windows has no built-in file association for .srt — it is not a video (players do not grab it) and not a document (word processors open it with formatting damage), so the OS shows an app picker or nothing. Right-click, Open with, and pick Notepad for the text view, or drag the file onto a playing VLC window for the timed view.
Is SRT better than VTT?
They have different jobs. SRT is the universal interchange format — every player, editor, and upload form (YouTube, Vimeo, Premiere, VLC) accepts it. VTT is the web format: the HTML5 <track> element requires it, and SRT is silently ignored there. Keep SRT as the master file and convert to VTT with one ffmpeg command when a web player needs it; the full destination-by-destination comparison is in our SRT vs VTT guide.