SRT Generator: How to create subtitle files that actually work

Everything you need to know about SRT files, and the four ways to make one.

An SRT (SubRip) file is a plain-text subtitle format with numbered cues, timecodes, and dialogue — universally compatible with YouTube, Vimeo, Premiere, Final Cut, DaVinci, VLC, and most HTML5 video players. DeluxeScribe generates SRT files from any audio or video you upload, in 99 languages, with timestamps to the millisecond. A 60-minute file completes in 5–10 minutes. Free tier is 60 minutes; paid plans start at $10/month. Below: the format anatomy, the timing rules Netflix and BBC use, when SRT beats VTT, and how to fix the most common breakage (encoding, frame rate, line length).
  • 60 minutes free
  • No credit card
  • 99 languages
  • Speaker labels

Last verified June 23, 2026

What is an SRT file?

An SRT file is timed text. Each “cue” has four parts: a sequence number, a start and end timestamp separated by -->, the dialogue line (one or two lines), and a blank line before the next cue. That’s the entire format.

1
00:00:01,200 --> 00:00:03,800
First line of subtitle text.

2
00:00:04,000 --> 00:00:06,500
Second cue, optionally on
two lines maximum.

The .srt extension dates to 2001, when SubRip — a Windows tool that extracted subtitles from DVDs by OCR — saved its output in this layout. The format was never formally standardised, which is why edge cases (line breaks, character encoding, milliseconds vs commas) vary slightly across players.

The 4 ways to generate an SRT (ranked by use case)

There’s no single “best” tool — it depends on how much you’re subtitling, what languages you need, and how much time you’re willing to spend on the terminal.

MethodCostQualitySpeedTechnical level
YouTube auto-caption + downloadFreeLow–mediumSlow (wait for processing)None
Subtitle Edit (desktop)FreeMediumMedium (manual sync)Some
Self-hosted WhisperFreeHighSlow on CPU, fast on GPUHigh (terminal)
DeluxeScribe (or similar service)$10/moHighFast (5–10 min per hour)None

1. YouTube auto-caption + download

Upload your video to YouTube as unlisted, wait 5–30 minutes for auto-captions to finish, then download the .srtfrom Subtitles → the three-dot menu → Download. Free, no account needed beyond a Google login. Quality is mediocre on anything noisier than a clean voiceover, and “unlisted” is not private — anyone with the URL can watch.

2. Subtitle Edit (desktop)

Subtitle Edit is a free Windows app (Mac/Linux via Wine) that loads audio, shows a waveform, and lets you type subtitles cue-by-cue. It also has built-in support for offline Whisper inference if you install the model. Best for fine-tuning timing on an existing SRT, not for generating from scratch.

3. Self-hosted Whisper

OpenAI’s Whisper model runs locally with one command if you have Python:

pip install openai-whisper
whisper input.mp4 --model large-v3 --output_format srt

Free, fully private, and accurate. The catch: on a CPU, expect 10–30× real-time (a 1-hour file takes 10–30 hours). On a recent GPU it’s real-time or faster. Worth it for sensitive content; not worth it for a single 5-minute clip.

4. AI transcription with native SRT export

Services like DeluxeScribe upload, transcribe, and export SRT in one flow. You get accurate timing because the model produces word-level timestamps the SRT generator can group into properly sized cues. Cost is the obvious tradeoff against free options.

The rules that make an SRT actually usable

A “valid” SRT (one your player accepts) and a readable SRT are different things. Netflix, the BBC, and most major broadcasters share a small set of rules that distinguish professional captions from auto-generated ones.

Reading speed: 17 CPS (adult), 20 CPS (children)

Characters per second. Netflix uses 17 CPS for adult-targeted content; the BBC allows up to 20 CPS for shorter on-screen durations. Above ~25 CPS, viewers can’t finish reading before the cue disappears. Auto-caption tools usually ignore this and dump entire sentences into 1.2 seconds.

Line length: 42 characters maximum

42 characters is the Netflix standard; the BBC uses 37–39 for broadcast. Going wider risks wrapping mid-word, getting clipped at the edges of widescreen TVs, or overlapping with on-screen graphics.

Two lines per cue, maximum

Three-line cues exist but they’re a sign something else is wrong — usually a cue duration that should have been split into two. Modern guides treat two lines as a hard ceiling.

Minimum 2-frame gap between cues

Cues that touch (one ends, the next starts the same frame) cause visual flicker on broadcast and some video players. The BBC mandates at least 2 frames of gap (~83ms at 24fps). For web video this is less critical but still cleaner.

Why these matter even if your player accepts the file: YouTube’s caption review will flag cues that exceed reading speed. Broadcasters reject submissions that violate them. And even on platforms with no validation, viewers complain about unreadable captions long before they file format-spec bugs.

SRT vs VTT: when to pick which

WebVTT (Web Video Text Tracks)is the W3C-blessed sibling of SRT, designed for HTML5 video. The differences are small but matter when you’re picking one.

SRTWebVTT
HTML5 <track> nativeNo (most browsers reject)Yes
Styling (CSS, positioning)Limited HTML tags onlyFull CSS pseudo-element support
Chapters / metadata cuesNoYes
Time separatorComma (00:00:01,200)Period (00:00:01.200)
Required header lineNoWEBVTT
YouTube, Vimeo, Premiere, FCPYesYes

Plain rule: if you’re embedding an HTML5 <video> on a website, use VTT. For anything else — YouTube uploads, Premiere imports, DaVinci, broadcast, video-on-demand platforms — SRT is more universal.

Translating an SRT without breaking the timing

The wrong way: paste the entire .srt into Google Translate. It mangles the timecodes and cue numbers because translation models rewrite numbers, drop blank lines, and sometimes merge cues. You end up with a broken file.

The right way: translate only the text content, preserving the structure. Tools that do this properly (Subtitle Edit’s built-in translate, DeluxeScribe’s SRT export with translateTo, dedicated tools like SubtitleCat) parse the SRT, send each text segment separately for translation, then reassemble with the original timecodes intact.

One catch: character expansion. German is ~30% longer than English; Arabic is ~25% shorter. If your reading speed was 17 CPS in English, the German translation may exceed 25 CPS in the same cue duration. The professional fix is to split long cues into multiple shorter ones — the lazy fix is to extend cue durations until they overlap the next one.

Why your SRT looks broken (5 common fixes)

Garbled accented characters (é shows as é)

The file was saved as Windows-1252 or UTF-8 with a BOM. Open it in VS Code, look at the bottom-right corner for the encoding, and resave as UTF-8 without BOM. This fixes ~80% of foreign-language SRT problems.

Subtitles drift off-sync after a few minutes

Frame-rate mismatch. The SRT was generated for 23.976 fps but you’re playing 24 fps (or vice versa). Use Subtitle Edit’s “Change frame rate” tool, or recalculate with ffmpeg: ffmpeg -i in.srt -r 23.976 out.srt.

VLC doesn’t show subtitles automatically

VLC auto-loads SRT files only when they share the video’s base name. my-video.mp4 needs my-video.srt in the same folder. Otherwise, drag the SRT onto VLC after starting playback.

YouTube rejects the upload

Usually one of three things: missing blank line between cues, no trailing newline at the end of the file, or a Byte Order Mark on the first cue. Open in a text editor with visible whitespace and check.

Long lines wrap mid-word in the player

You’ve got cues longer than 42 characters per line. Either insert manual \n line breaks at sensible word boundaries, or regenerate with a tool that respects line length limits. Avoid trying to fix this with CSS — most players ignore it.

When DeluxeScribe is the right tool

The right answer is us when you have multiple files, need translated subtitles in several languages, want SRT output that respects timing standards out of the box, or care about speaker labels in addition to captions. We generate SRT with millisecond timing, automatically cap lines at sensible lengths, and you can re-download translated versions of the same file without re-uploading.

The right answer isn’t uswhen you have a single 5-minute YouTube video — just use YouTube’s auto-caption. Or when the content is sensitive enough that even an encrypted upload is too much risk — run Whisper locally. We’d rather you used the right tool than the most convenient one.

Generate SRT files in 99 languages

60 minutes free, no credit card. Word-level timestamps, automatic line-length capping, multi-language re-export.

How this page was verified

We tested SRT generation across the four methods listed below on the same source files (a 5-min studio podcast, a 22-min Zoom export, and a 4-min phone-recorded interview). Format spec references are from the original SubRip documentation and the SubRip Wikipedia article. Timing-standard claims cite the publicly available Netflix Timed Text Style Guide and the BBC Subtitle Guidelines v1.2.0. Accessibility framing comes from WCAG 2.1 Success Criterion 1.2.2. We don’t cite the often-repeated “85% of viewers watch with subtitles on” statistic — it traces back to a mobile-only Verizon Media survey and isn’t representative.

Frequently Asked Questions

Can I edit an SRT file in Notepad?

Yes — SRT is plain text. Use any text editor (Notepad, VS Code, Sublime Text). Save it as UTF-8 without a BOM so accented characters render correctly across players.

Does SRT support styling (bold, italic, colors)?

SRT officially supports a small subset of HTML-like tags (<b>, <i>, <u>, <font color="">). Support varies by player — YouTube and VLC honor them, but many platforms strip them. For reliable styling, use WebVTT instead.

What's the maximum length of an SRT file?

There is no formal size limit in the format itself. In practice, players slow down past ~10,000 cues. For very long content, split by chapter or use a streaming-friendly format like WebVTT segments.

Do all video players accept SRT?

Most major players do: VLC, YouTube, Vimeo, Premiere Pro, Final Cut, DaVinci Resolve, MPV, and most TV streaming apps. HTML5 <video> with <track> requires WebVTT — convert with one of many free tools.

Is SRT the same as closed captions?

No, but they overlap. Closed captions (CC) include non-speech information (laughter, sound effects, music cues) for deaf and hard-of-hearing viewers. SRT files can contain caption content, but the format itself is just timed text — what you write in it determines whether it's subtitles or captions.

How do I burn SRT subtitles into a video file?

Use ffmpeg: ffmpeg -i video.mp4 -vf "subtitles=subs.srt" out.mp4. This bakes the subtitles into the video frames so they always appear. The downside: viewers can't turn them off. For optional captions, upload the SRT alongside the video instead.

What's the difference between SRT and CC?

SRT is a file format. CC (closed captions) is a viewing concept — captions that can be turned on or off. An SRT file can serve as closed captions. Built-in TV captioning standards (CEA-608, CEA-708) are different binary formats encoded directly into broadcast signals, not separate files.