VocalFuse is a Fuse Intelligence product.

SUBTITLES · HOW-TO · 2026

How to create an SRT file — three routes that actually work

An SRT file is plain text with four moving parts: a sequence number, a timecode range, the caption text, and a blank line. That simplicity is why it became the universal subtitle format — and why it is easy to create almost right. This page covers all three creation routes (by hand, timed on a waveform, generated from the audio), the platform limits that decide how you format it, and the handful of traps that make a correct-looking file fail silently.

The format in one block

SRT (SubRip) dates to the early-2000s Windows program of the same name, which ripped subtitles from DVDs with OCR. The format it wrote was so simple it escaped the program: no formal standards body, no binary container — just numbered blocks of plain text. It is now the most widely distributed subtitle format on the internet, and every editor, player, and upload form reads it.

1
00:00:01,000 --> 00:00:04,500
Welcome to the demo.

2
00:00:05,200 --> 00:00:09,800
Each block is: a sequence number,
a timecode line, then the text.

The rules hiding inside that block: timestamps are HH:MM:SS,mmm with a comma before the milliseconds (a period makes it a VTT-style time that strict SRT parsers choke on); the arrow is exactly --> with a space on each side; blocks separate with one blank line; and numbering runs sequentially from 1. Text sits on one or two lines — two lines, ~42 characters each, is the readability standard. There is no header line (that is VTT) and no metadata of any kind.

Method 1: write it by hand (few cues, or learning the format)

For a handful of cues, a text editor is the whole toolchain. The steps are identical on every OS; only the save dialog differs:

  • Open a plain-text editor. Notepad (Windows), TextEdit in plain-text mode (Mac), or VS Code everywhere. Word processors are disqualified — Word and Google Docs inject formatting and smart quotes that break parsers.
  • Type the first block. 1, Enter, 00:00:01,000 --> 00:00:04,500, Enter, the caption text, then Enter twice — the blank line is the block separator, not decoration.
  • Repeat with incrementing numbers. Cue 2, cue 3, and so on; the number is part of the format, not a bullet you can skip.
  • Save with the right name and encoding. Extension .srt, encoding UTF-8 (without BOM). This is where both platforms bite — see below.
  • Test before shipping. Drag the file onto a playing video in VLC (Subtitle > Add Subtitle File), spot-check the opening minute, a middle cue, and the final cue.

Windows: the .txt ambush

Notepad’s Save As defaults to “Text Documents (*.txt)” and silently appends .txt behind your typed name — producing captions.srt.txt, which every import form rejects. Change Save as type to All Files, type the full name.srt yourself, and set Encoding to UTF-8. (Older Notepad defaults to ANSI/Windows-1252: accented characters come back as mojibake.)

Mac: the .rtf ambush

TextEdit saves rich text by default — an .rtf with styling markup no parser accepts. First run Format > Make Plain Text (⌘Shift+T), then save with the extension typed explicitly and “hide extension” unchecked, or you get captions.srt.rtf. VS Code sidesteps both traps on both platforms.

The honest cost: hand-writing a 60-minute video takes 2–4 hours — you are listening, timestamping, and typing in one pass. Past five minutes of video, the next two methods are dramatically faster.

Method 2: time it on a waveform (the craft route)

Subtitle Edit (Windows, open source) and Aegisub (cross-platform) import the video, show its audio waveform, and let you set cue boundaries visually or by keyboard: start a cue where the line begins, end it at the pause, type the text, move on. Both write UTF-8 SubRip by default and display a live reading-speed check per cue. For a 60-minute video, expect 30–60 minutes of work — the accuracy of human timing at a fraction of the manual cost, and still the route of choice for translation and short-form work.

Whichever tool times the cues, the readability specs are the same: keep captions on screen 1–6 seconds, hold reading speed around 15–20 characters per second, break lines at natural clause boundaries, and never split a name or key phrase across cues. Conversational footage with cross-talk is where timing quality actually shows — tighten cue breaks around interruptions and late entrances, because viewers use captions to track who said what.

Method 3: generate the SRT from the audio (the default route)

For anything longer than a minute, generating the first draft from the audio is the practical move: a speech engine transcribes and timestamps in the same pass, you correct words and timing in an editor, then export SRT. Free web generators differ wildly in what “free” covers — the 2026 free subtitle generator comparison ranks every free tier by its fine print. Check it before uploading client footage:

Tool Free reality Notes
FreeSubtitlesFully free, browser-onlyWeb Speech API runs in-browser — files never upload; 15 languages; SRT/VTT/TXT export
CaptionXFree, no account25 MB file cap; SRT downloads automatically; 100+ languages
Kapwing10 minutes of subtitlesThen Pro for unlimited + no watermark; SRT/VTT/TXT export; full editor
VEEDFree to try, download gatedSubtitle-file downloads need a paid plan (~$20/mo Creator); burning in is free
MaestraLimited portion free125+ languages; full-length exports on paid plans
Subanana15-minute preview, 3 files/moWhisper-based, speaker labels, 95+ language translation, up to 8h/30GB files

Two things worth doing before and after generation: preload your custom vocabulary (product names, guest names, acronyms — tools like Transcrever accept a term list that guides recognition, and AI otherwise mishears exactly the words that matter most), and edit before export, because fixing a wrong name in the transcript is one edit while catching it after the file reaches an editor or upload form is a re-export.

The privacy-first variant runs the same pipeline locally: a Whisper-class engine on your own machine transcribes the file and exports SRT with nothing leaving the disk — the local video transcription guide covers the toolchain, and video-to-text converter pricing shows what the cloud equivalents meter.

When your SRT file is not working: the seven-trap checklist

An SRT that looks fine in a text editor can still fail in a player. Work down this list — the first three account for most broken files:

  • Periods instead of commas. 00:00:01.000 --> is VTT syntax. Strict SRT parsers hit the timestamp, fail to read it, and skip cues — or the whole file — with no error. One character, invisible until you look for it.
  • The .txt or .rtf double extension. captions.srt.txt from Notepad’s save dialog, captions.srt.rtf from TextEdit’s rich-text default. Check the real extension in Explorer/Finder (show extensions) before blaming the import form.
  • Encoding problems. ANSI-saved files turn accented characters into mojibake; UTF-8 with BOM makes some players drop cue 1 (the invisible byte-order mark parses as text). Re-save UTF-8 without BOM — VS Code and Notepad++ both expose the toggle.
  • Sequence numbers broken. Numbers out of order, duplicated, or skipped make strict parsers bail mid-file. They must run 1, 2, 3… in order.
  • Missing blank lines. The blank line between blocks is the only delimiter SRT has; two blocks butted together parse as one garbled cue.
  • Overlapping cues. Cue 2 starting before cue 1 ends is technically legal and still glitches or drops in some players. Re-time so each cue starts where the previous ends (Subtitle Edit does this in one pass).
  • Styling markup. Font tags, ASS/SSA color codes, positioning braces — YouTube’s caption importer accepts only basic versions and ignores everything else; some players reject the file outright. SRT carries text and timing, nothing more.

If timing is off by a constant amount everywhere, the file is valid — the export carried a global offset. Shift the whole file once (Subtitle Edit’s synchronization tool) instead of re-timing cues; drift that grows over the video means the file came from a different edit of the footage and needs a re-export from the final cut. For the format-level comparison behind these traps — and the one-line ffmpeg conversions — see SRT vs VTT.

Platform limits that shape the file you make

Platform Formats Hard limits Line rules
YouTubeSRT, VTT, SBV, TTML10 MB file, 10,000 cuesNo enforced line limit; ~42 chars/line renders cleanly on mobile; plain UTF-8, markup ignored
Netflix (delivery spec)TTML/DFXP, SCCPer-title specs42 characters per line, 2 lines — the strictest standard in the field
VimeoSRT, VTT, DFXP, SCCNone documented2 lines max; standard readability specs apply
Course platformsSRT (Teachable, Kajabi, Thinkific + VTT)~50 MB10,000-cue caps common; never reached in practice

Practical read: format every file to the ~42-character, two-line, 1–6-second spec and it passes everywhere. YouTube is the destination with the most fine print worth knowing — its timestamp and chapter rules and the three ways to get a transcript from a YouTube video are covered separately.

Can I turn a plain-text transcript into an SRT?

Not by renaming, not by reformatting — a .txt changed to .srt is rejected by every player, because SRT requires timing data plain text does not contain. Your options depend on what you still have:

Have the audio? Re-transcribe with a tool that keeps timestamps and export SRT directly — the transcript itself gives the engine a vocabulary head start, so accuracy improves on the second pass.

Only the text? Force-align it: WhisperX or aeneas (both free, command-line) compute timestamps for an existing transcript against the source audio and emit a timed file. If the text carries per-line timestamps in a parseable format, Subtitle Edit can import and rebuild valid SRT structure. What no tool can do is recover timing that was never captured from nothing.

One pass, every format, nothing uploaded

VocalFuse runs a Whisper-class speech engine locally on your Windows machine: drop in any audio or video file and get a timestamped, punctuated transcript with speaker labels — then export SRT, VTT, or TXT from the same pass, so format choice becomes a download-menu decision. Nothing uploads: the engine runs on your PC, which is also why there is no per-minute meter (free tier, Basic $5/mo dictation, Pro $10/mo adds AI notes and summaries).

Because timing comes from the audio itself, the exported SRT arrives with subtitle-grade cue timing and real punctuation — the two things auto-captions most often get wrong — with the vocabulary already right on names the cloud engines mishear.

Related reading

SRT vs VTT

Which format each destination requires, the comma-vs-period trap, and one-line ffmpeg conversions.

Subtitle format decision guide

Transcribe video files locally

The local Whisper pipeline vs cloud converters: cost per hour, formats, and privacy.

Video transcription guide

YouTube transcripts & timestamps

Keep or strip timestamps, chapter rules, and re-uploading SRT to Studio.

Timestamps guide

Podcast chapters from transcripts

Turn a timestamped transcript into navigation players can use.

Podcast chapters guide

Explore related AI note taking guides

How to create an SRT file — FAQ

How do I create an SRT file?

Three routes. Hand-write it in a plain-text editor for a few cues: per block, a sequence number, a 00:00:01,000 --> 00:00:04,500 timecode line (comma before the milliseconds), one or two caption lines, and a blank line — saved as UTF-8 with the .srt extension. Time cues on a waveform in Subtitle Edit or Aegisub for short clips and translation work. Or generate the timestamps automatically: a speech engine transcribes and timestamps the audio in one pass, you correct the draft, and export SRT — the practical route for anything longer than a minute.

How do I save a Notepad file as SRT?

In the Save As dialog, change "Save as type" from "Text Documents (*.txt)" to All Files, type the full filename with the .srt extension yourself, and set Encoding to UTF-8. Notepad otherwise appends .txt behind your back (captions.srt.txt), which every import form rejects. Older Notepad versions default to ANSI encoding, which turns accented characters into mojibake — UTF-8 without BOM is the safe target.

How do I save a TextEdit file as SRT on Mac?

TextEdit saves rich text (.rtf) by default, which no subtitle parser accepts. Convert the document first with Format > Make Plain Text (Shift-Command-T), then save with the .srt extension typed explicitly and "hide extension" unchecked — otherwise you get captions.srt.rtf. VS Code avoids both traps on Mac and Windows alike.

Why is my SRT file not working?

Work the seven-trap checklist in order: periods instead of commas in the timestamps (VTT syntax — strict SRT parsers silently skip the cues); a hidden .txt or .rtf double extension; encoding (ANSI mojibake, or UTF-8 with BOM dropping cue 1); sequence numbers out of order or skipped; missing blank lines between blocks; overlapping cues (legal but glitch-prone — re-time so each cue starts where the previous ends); and styling markup (font tags, ASS codes) that importers ignore or reject. If timing is off by a constant everywhere, the file is valid — shift the whole file once rather than re-timing cues.

Can I convert a plain-text transcript to SRT?

Not by renaming or reformatting — SRT requires timing data plain text does not have, and a .txt renamed to .srt is rejected by every player. If you still have the audio, re-transcribe with a tool that outputs timed formats (accuracy improves, since the engine gets a vocabulary head start). If you only have text, force-align it to the audio with WhisperX or aeneas (both free, command-line) to compute timestamps. Per-line timestamped text can also be imported and rebuilt into valid SRT by Subtitle Edit.

What are the rules for SRT files on YouTube?

YouTube accepts SRT, VTT, SBV, and TTML caption files up to 10 MB and 10,000 cues per file, in plain UTF-8 — style markup is ignored. There is no enforced per-line character limit, but ~42 characters per line and two lines maximum render cleanly on mobile. Upload path: YouTube Studio > Content > your video > Subtitles > Upload file > With timing, pick the language, publish, then spot-check playback. Netflix-style 42-character limits are delivery-spec rules, not YouTube rules.

What is the best free subtitle generator?

Depends on what free has to cover. FreeSubtitles is fully free and browser-only (Web Speech API, files never upload, 15 languages, SRT/VTT/TXT export). CaptionX needs no account and downloads SRT automatically up to 25 MB. Kapwing includes 10 minutes of subtitles free, VEED lets you generate free but gates file downloads behind a paid plan, Maestra processes a limited portion free, and Subanana previews the first 15 minutes of 3 files a month. For privacy or volume, a local Whisper-class engine produces SRT with nothing uploaded and no meter.

Is VocalFuse good for creating SRT files?

Yes — VocalFuse transcribes audio and video locally on Windows with a Whisper-class engine and exports TXT, SRT, and VTT from the same transcript, so creating an SRT is a download-menu choice. Nothing uploads: the engine runs on your PC, which is why there is no per-minute meter. The free tier covers transcription; Basic ($5/mo) adds dictation and Pro ($10/mo) adds AI notes and summaries. Timing comes from the audio itself, so the SRT carries subtitle-grade cues with real punctuation.