Updated August 13, 2026

How to Create or Make an SRT File — 3 Methods (Manual, Desktop, AI)

An SRT file is plain text with a specific structure: sequence number, timecode, caption text, blank line. Three ways to create or make one: type it manually in Notepad or TextEdit (free, slow), use a free desktop tool like Subtitle Edit or Aegisub (free, medium), or generate it with AI from your audio, video, or existing transcript (fastest). Includes a copy-paste template and every common error explained below.

Key takeaways

  • SRT format = sequence + timecode + text + blank line. Repeat for each cue. Save as .srt with UTF-8 encoding.
  • Timecode uses comma, not period. HH:MM:SS,mmm — the comma before milliseconds is the SRT rule. Period is WebVTT format. Getting this wrong breaks the file in most players.
  • Three creation paths with real tradeoffs. Manual (2-4 hrs per video hour, free, deep control) → Desktop tool (30-60 min, free, professional) → AI generation (5-15 min, needs review, fastest).
  • UTF-8 encoding is non-negotiable. Notepad's default (Windows-1252) breaks accented characters. Always Save As → Encoding: UTF-8.
  • Line length: 32-42 characters, max 2 lines per cue. Netflix says 42, BBC 37-39. Reading speed: 17 CPS for adults.
  • SRT works everywhere; WebVTT is for HTML5 web only. Use SRT for YouTube, Premiere, DaVinci, CapCut. Convert to VTT only for HTML5 <video> tag usage.

SRT file anatomy — the format in one paragraph

An SRT (SubRip) file is plain text. Each caption cue has four parts: (1) a sequence number starting at 1, (2) a timecode line in the format HH:MM:SS,mmm --> HH:MM:SS,mmm, (3) the caption text (one or two lines), and (4) a blank line. Repeat for each cue. Save the whole thing with a .srt extension and UTF-8 encoding.

Working example (3 cues)

1
00:00:00,000 --> 00:00:03,500
Welcome to the tutorial.

2
00:00:03,500 --> 00:00:07,200
Today we're building an SRT file
from scratch in Notepad.

3
00:00:07,200 --> 00:00:11,000
It's easier than you think — but
the timecode format has quirks.

Copy this into Notepad, save as example.srt with UTF-8 encoding, and it's a valid SRT file you can drag into VLC, YouTube Studio, or Premiere.

That's the entire spec. There's no header, no metadata, no styling markup. SubRip was designed in the late 1990s as a lightweight extract format for DVD ripping, and the simplicity is what made it universal.

Method 1 — Create an SRT manually in a text editor

Works for tiny files, teaches you the format, and requires nothing but Notepad, TextEdit, or VS Code.

Step-by-step (Notepad on Windows)

  1. Open Notepad (Start → Notepad, or Win+R → notepad).
  2. Type sequence number 1 on the first line, press Enter.
  3. Type the timecode line: 00:00:00,000 --> 00:00:03,500 — comma before milliseconds, arrow is --> (two dashes and a right-angle bracket, no space between them), then Enter.
  4. Type the caption text (max 2 lines, 32-42 characters per line), then Enter.
  5. Add a blank line (press Enter once more) — this separates cues.
  6. Repeat for each cue: increment the sequence number (2, 3, 4...) and provide the next timecode and text.
  7. Save the file: File → Save As. Change "Save as type" to All Files. Type the filename with .srt extension (e.g., my-video.srt). Set Encoding to UTF-8. Click Save.

Windows / Mac gotchas. Notepad on older Windows saves as ANSI (Windows-1252) by default — accented characters like é and ñ turn into garbage. Always pick UTF-8 in the encoding dropdown. TextEdit on Mac saves as .rtf by default — use Format → Make Plain Text first, then save as .srt with the extension typed explicitly (uncheck "Hide extension").

How long does this take? Manually creating an SRT for a 60-minute video is 2-4 hours of work: you need to listen to the audio, mark timestamps, type the text, and verify each cue. For anything longer than 5 minutes, Method 2 or Method 3 is dramatically faster.

Method 2 — Use a free desktop tool (Subtitle Edit or Aegisub)

The middle path most guides skip. Two free open-source tools give you proper SRT editing with sync verification, syntax help, and reading-speed enforcement — without the AI cost.

Subtitle Edit

Windows-first (also runs on Linux via Mono/Wine). Free, MIT licensed. nikse.dk/subtitleedit

Best for

Broadcast-grade timing, syntax checking, format conversion (SRT ↔ VTT ↔ ASS ↔ SBV), integrated waveform view.

Workflow

Open Subtitle Edit → File → Import → Select your audio/video → work through cues on the waveform → File → Save as SubRip (.srt).

Aegisub

Cross-platform (Windows/Mac/Linux). Free, BSD licensed. Originally built for anime fan-subtitle communities. aegisub.org

Best for

Precise timing (karaoke, anime), advanced styling (ASS format), macOS users (Subtitle Edit's Mac support is second-class).

Workflow

Open Aegisub → Video → Open Video → Audio → Open Audio from Video → time cues on the audio waveform → File → Export Subtitles as SRT.

Both tools calculate characters-per-second (CPS) per cue and flag violations of the 17 CPS reading-speed limit. Both write UTF-8 by default. For a 60-minute video, expect 30-60 minutes of work — dramatically faster than manual Notepad, without the accuracy variance of AI generation.

Method 3 — AI generation from audio or video

The fastest path. Upload your audio or video to a modern AI transcription tool — VexaScribe, Descript, Rev AI, or comparable — and download a ready-to-use SRT file in minutes. Whisper Large-v3 (the model VexaScribe runs) produces timestamps automatically in the same pass as the transcription.

Workflow (VexaScribe)

  1. Upload your audio or video — MP3, WAV, M4A, MP4, MOV, MKV up to 5 GB. Or paste a YouTube URL directly.
  2. Whisper Large-v3 transcribes the audio at 4-10× real-time — a 60-minute video finishes in 5-15 minutes. Speaker diarization runs in the same pass.
  3. Review the transcript in the built-in editor. Fix proper nouns and technical terms. Rename speakers (Speaker 1 → Sarah) and the change applies everywhere.
  4. Export as SRT — one click. UTF-8, properly formatted, timecodes valid. Also available: VTT, TXT, DOCX, JSON.

When AI wins

  • You have the audio/video and don't have a transcript yet
  • The content is 10+ minutes (AI cost/time savings compound with length)
  • You need to caption in a language you don't speak — Whisper supports 99 languages
  • Fast turnaround matters (podcast episode, meeting recap, marketing video)

When AI struggles

  • Heavy technical or medical vocabulary
  • Multiple overlapping speakers with shared mic
  • Loud music or background noise
  • Broadcast-grade compliance where 99%+ accuracy is required

VexaScribe offers 30 minutes free at signup — no credit card, full SRT export. Enough for one short video or a couple of clips to evaluate quality before committing. See SRT generator for the tool page, and how accurate is Whisper for the underlying accuracy math.

Alternative — burned-in captions. If you want captions permanent in the video pixels (TikTok, Instagram Reels, LinkedIn — where autoplay is silent and users can't toggle CC on/off), skip the SRT sidecar and use caption generator for burned-in output as a single MP4.

Batch SRT creation. For 50+ videos needing SRT files (course platforms, media archives, corporate training libraries), batch SRT generation via bulk transcription processes all files at a flat monthly rate — up to 6,000 minutes/month.

Method comparison — pick the right one

MethodTime / video hourCostBest when
Manual (text editor)2-4 hours per video hourFreeYou have <5 minutes of content, want to learn the format, or need surgical control over one specific cue
Desktop tool (Subtitle Edit, Aegisub)30-60 minutes per video hourFreeYou want free + professional, need precise timing control (broadcast, karaoke), or you're translating existing captions
AI generation (VexaScribe, Descript, Rev AI)5-15 minutes per video hourFree tier + $2-20/mo for volumeYou have the audio/video and want an SRT quickly — most creator, corporate, and podcast workflows

Create an SRT file from an existing transcript (text or Word)

Different starting point: you already have the transcript text (a Word doc, a Google Doc, a plain .txt) but no timestamps. There are three honest paths depending on whether you still have the source audio.

If you have the original audio: use forced alignment

Free open-source tools like WhisperX and aeneas take an existing transcript plus the source audio and align them word-by-word, producing accurate timecodes without re-transcribing. Requires the terminal — see project READMEs. Best when the transcript is manually corrected and you don't want AI to redo the words.

If you have the original audio: re-run through an AI tool

Faster than forced alignment if you don't mind the AI transcribing again. Upload the audio to /srt-generator, get a fresh SRT with timestamps, then paste-edit any words from your original transcript that the AI got wrong. Most workflows converge here — Method 3 above, but starting from a text-first mindset.

If you have text only (no audio): manual timecode entry

No shortcut. Open Subtitle Edit (free), create an empty project, paste your transcript one cue at a time, and enter estimated timecodes by playing back a reference (video, YouTube, live reading). Painful for long content — a 30-minute transcript takes 60-90 minutes of manual work. If you must, budget for it or find the audio.

Converting a Word document specifically: export the .docx to plain text first (File → Save As → Plain Text .txt), then follow one of the three paths above. Word's .docx formatting will otherwise pollute the timing rows if you try to paste directly into an .srt.

Convert TXT or Word (.docx) to SRT

One of the most common searches — “txt to srt” and “convert txt to srt” — and one of the most misunderstood. A plain .txt or .docx file cannot become a valid .srt by renaming or by pasting into a converter. SRT requires timestamps; plain text doesn't have them. But there are three real workflows depending on what your text looks like and whether you still have the audio.

Pattern 1 — Text has timestamps (YouTube copy-paste, Otter export, Rev transcript)

If your .txt or .docx already has time markers (e.g., 0:00, [00:15], 1:23 — Speaker: Hello), Subtitle Edit can parse it directly.

Steps in Subtitle Edit:

  1. File → Import → Plain text — or for Word, first save the .docx as .txt (File → Save As → Plain Text) and import that.
  2. In the Import Text dialog, tell Subtitle Edit how to identify timestamps — usually “split at line breaks” or “merge lines shorter than X characters” work for YouTube-style transcripts.
  3. Preview the cue list. Adjust any that split incorrectly.
  4. File → Save As → SubRip (.srt), UTF-8 encoding.

Pattern 2 — You have the original audio + a text transcript (no timestamps)

This is the common case for corrected transcripts: someone typed or cleaned up a transcript, but the original AI or human transcription lost the timing. Two paths:

Forced alignment (free, technical):

WhisperX and aeneas take your transcript plus the audio file and align them word-by-word. Output: an SRT with accurate timestamps and your exact text. Requires terminal skills — see project READMEs.

Re-transcribe with AI + paste-edit (fast, no terminal):

Upload your audio to /srt-generator, get an AI-generated SRT with fresh timestamps, then in the built-in editor replace any AI-transcribed words with your corrected text. Faster than forced alignment for most people, and no command line.

Pattern 3 — Text only, no audio, no timestamps

No shortcut. You must add timestamps manually in Subtitle Edit or Aegisub against a reference video, live reading, or synthesized audio (TTS). Budget: 60-90 minutes for a 30-minute transcript. If the text is for a video you plan to record, do the recording first and use Pattern 2 — much faster than time-guessing.

Do not paste Word content directly into a .srt file. Word smart-quotes ( “ ” instead of " "), non-breaking spaces, and hidden formatting characters will break SRT parsers. Always route through plain-text export (File → Save As → Plain Text .txt) or through Subtitle Edit's Import wizard.

Full SRT file example — copy-paste template

A working 5-cue SRT file you can copy directly into Notepad, TextEdit, or VS Code. Save with the filename my-video.srt and UTF-8 encoding. This template works in YouTube, VLC, Premiere Pro, DaVinci Resolve, and CapCut without modification.

1
00:00:00,000 --> 00:00:03,500
Welcome to the tutorial. Today we'll cover
three ways to make an SRT file.

2
00:00:03,600 --> 00:00:07,200
Method one is manual — you type each cue
by hand in a text editor like Notepad.

3
00:00:07,300 --> 00:00:11,000
Method two uses Subtitle Edit or Aegisub,
free desktop tools that show a waveform.

4
00:00:11,100 --> 00:00:14,500
Method three uses AI — upload your audio
and get back a fully-timed SRT in minutes.

5
00:00:14,600 --> 00:00:18,000
Whichever path you pick, always save the
file with the .srt extension in UTF-8.

Structure per cue: (1) sequence number starting at 1, (2) timecode line HH:MM:SS,mmm --> HH:MM:SS,mmm, (3) caption text (1-2 lines, 32-42 chars per line), (4) blank line separating cues. No BOM, no header, no closing tag — SRT is intentionally minimal.

SRT encoding — always UTF-8 (without BOM)

The single most common source of “my SRT is broken” support tickets is wrong encoding. SRT itself has no formal specification, but every mainstream player and platform — YouTube Studio, VLC, Premiere Pro, DaVinci Resolve, CapCut, HTML5 <track> — expects UTF-8 without BOM. Two encoding-related bugs cover ~95% of “captions display as garbage” and “cue 1 is missing” reports.

Bug 1 — Mojibake (accented characters look like é or ’)

Symptom: Café displays as Café. Japanese, Arabic, or Chinese text shows as empty boxes or question marks. Cause: the file was saved as Windows-1252 (Notepad's legacy default), ANSI, or ISO-8859-1 instead of UTF-8. The player decoded the bytes wrong.

Fix — re-save as UTF-8:

  • VS Code: bottom-right encoding label (e.g., “Windows-1252”) → Save with EncodingUTF-8
  • Notepad++: Encoding menu → Convert to UTF-8 (not “Encode in UTF-8” — that only marks the file, doesn't convert bytes)
  • Notepad (Windows 11): File → Save As → Encoding dropdown → UTF-8
  • Subtitle Edit: File → Save As → Encoding dropdown → UTF-8
  • Sublime Text: File → Save with Encoding → UTF-8
  • Command line (macOS/Linux): iconv -f WINDOWS-1252 -t UTF-8 input.srt > output.srt

Bug 2 — UTF-8 BOM breaks cue 1

Symptom: the first cue is missing from the video, or the player displays a strange invisible prefix (1) on cue 1's sequence number. Cause: the file starts with a UTF-8 Byte Order Mark (BOM) — a three-byte prefix (0xEF 0xBB 0xBF) that Windows-era tools sometimes prepend. Some SRT parsers (older VLC, embedded TV firmware, some CDN caption ingestion) read the BOM as text and drop cue 1.

Fix — save WITHOUT BOM:

  • VS Code: bottom-right encoding label → Save with EncodingUTF-8 (VS Code's “UTF-8” is BOM-less; “UTF-8 with BOM” is the other option — pick the plain one)
  • Notepad++: Encoding menu → UTF-8 (the version without BOM is the default; “UTF-8-BOM” is the BOM version)
  • Subtitle Edit: Save As dialog → “Save without BOM” checkbox → check it
  • Command line: sed -i '1s/^//' input.srt (macOS/Linux — strips a leading BOM if present)

Notorious BOM culprits: Excel (Save As CSV/TXT), older Notepad (pre-Windows 10 build), Word Save As Plain Text on some versions.

How to verify your encoding

Open the .srt in VS Code — the bottom status bar shows the encoding (bottom right, e.g. “UTF-8” or “Windows-1252”). Or run in a terminal:

# macOS / Linux
file -I your-file.srt
# Output: your-file.srt: text/plain; charset=utf-8

# Windows PowerShell
Get-Content your-file.srt -Encoding Byte -TotalCount 3 |
  ForEach-Object { '{0:X2}' -f $_ }
# If output is "EF BB BF" the file has a UTF-8 BOM

Why UTF-8 and not UTF-16 or another encoding? UTF-8 is the only encoding all major SRT parsers agree on. UTF-16 (which some Windows tools default to for “Unicode”) doubles the file size and confuses YouTube's and Premiere's ingestion. Latin-1 / Windows-1252 works for English-only files but silently breaks the moment you add é, ñ, ü, or any non-Latin script. Just always use UTF-8 without BOM — it's the safe default that works everywhere.

If you're generating SRT with an AI tool like VexaScribe's SRT generator or a subtitle editor like Subtitle Edit, the file is already UTF-8 without BOM — encoding issues only appear when you manually edit or open the file in a tool that changes the encoding on save. If you have to hand-edit, use VS Code or Notepad++ (never Excel, never Word for the final save).

Timecode format — the details that trip people up

Most broken SRT files fail on the timecode format. Four rules that matter:

Comma, not period

SRT uses a comma before milliseconds: 00:01:23,500. WebVTT uses a period: 00:01:23.500. Mixing them up breaks the file in most players — VLC and YouTube will either silently fail or display nothing. If you already have a .vtt file, our VTT to SRT converter swaps them automatically.

The arrow: exactly -->

Two dashes and a right-angle bracket, no space between them. Common mistakes: single dash (->), three dashes (--->), Unicode arrow characters (). All of these break parsing. Spaces before and after the arrow are fine and standard.

Milliseconds are always 3 digits

00:01:23,5 is invalid. 00:01:23,500 is correct. Zero-pad the milliseconds: 500 not 5, 050 not 50, 005 not 5. Hours, minutes, and seconds are always 2 digits: 01 not 1.

No overlapping cues

If Cue 1 ends at 00:01:27,000, Cue 2 must start at or after 00:01:27,000. Overlapping cues are technically valid SRT syntax but most players display only one cue at a time — the overlap produces visible glitches or silently drops one of them. Subtitle Edit and Aegisub flag overlaps automatically.

Attach your SRT to YouTube, Premiere, DaVinci, CapCut

Once you have a valid SRT file, attaching it depends on the platform. The five most common workflows:

YouTube Studio

Steps: Content → click your video → Subtitles → Add language → click the language you want → Add → Upload file → Choose "With timing" → select your .srt → Publish

Notes: YouTube indexes uploaded SRT text for search — better SEO than auto-captions. UTF-8 is required.

Premiere Pro

Steps: File → Import → select your .srt → drag from Project panel onto a Caption track above your video (right-click the timeline → New Layer → Captions if the track doesn't exist yet). Window → Text → Captions tab to edit inline. On export: check Captions in Export Settings → "Create Sidecar File" for a separate .srt output, or "Burn Captions Into Video" for permanent on-screen text.

Notes: Adobe converts to their internal caption format (CEA-608 or Open Caption) on import — the visible timecodes in your SRT are preserved but Premiere reformats them behind the scenes. For pure SRT re-export unchanged, keep the original file alongside your project. Note: "import" and "attach" mean the same thing in Premiere — the term "import an SRT file" is common Adobe terminology.

DaVinci Resolve

Steps: File → Import → Subtitle → select .srt → drag to the Edit page timeline as a Subtitle track.

Notes: Free tier supports SRT import. Delivery page can burn in or export as separate track.

CapCut (desktop + mobile)

Steps: Import your video → Captions → Import subtitles → select .srt file. On mobile: Captions → Import → pick .srt from Files.

Notes: CapCut also has built-in auto-captions if you want to generate rather than import.

HTML5 web video

Steps: Use <track kind="captions" src="captions.vtt" srclang="en" label="English"> inside your <video> element. Convert SRT to VTT with a free converter or Subtitle Edit.

Notes: HTML5 <track> officially supports WebVTT, not SRT. Same content, different timecode separator (period vs comma).

For platform-by-platform depth including iPhone Photos, Instagram Reels burn-in, and TikTok, see how to add subtitles to a video.

Common SRT creation errors (and how to fix them)

Seven mistakes that break SRT files, in rough order of frequency. If your file won't play or the captions look wrong, this is where to look first.

ErrorQuick fix
Period instead of comma in timecodeUse a comma: 00:01:23,500 --> 00:01:27,000.
Missing blank line between cuesAdd a blank line between every cue.
File saved as .txt instead of .srtIn Notepad: File → Save As → "Save as type" = All Files, then type captions.
Wrong encoding — accented characters breakSave as UTF-8.
Overlapping timecodesCue 2 must start at or after Cue 1's end time.
Cue duration too short to readGive each cue at least 1 second (Netflix minimum).
More than 2 lines per cueMax 2 lines per cue at 32-42 characters per line (Netflix 42, BBC 37-39).

Full detail with examples for each error:

1.Period instead of comma in timecode

Example

00:01:23.500 --> 00:01:27.000 (WRONG — this is WebVTT format)

Fix: Use a comma: 00:01:23,500 --> 00:01:27,000. Period is the WebVTT separator; SRT uses comma.

2.Missing blank line between cues

Example

Cue 1 text\n2\n00:01:27,000 --> 00:01:30,000\nCue 2 text (WRONG — no blank line before "2")

Fix: Add a blank line between every cue. The blank line is what tells the parser where one cue ends and the next begins.

3.File saved as .txt instead of .srt

Example

captions.txt (WRONG — Windows/Mac added the extension automatically)

Fix: In Notepad: File → Save As → "Save as type" = All Files, then type captions.srt explicitly. In TextEdit: uncheck "Hide extension" and type .srt.

4.Wrong encoding — accented characters break

Example

"Caf\uFFFD" appears instead of "Café" in the player

Fix: Save as UTF-8. Notepad: File → Save As → Encoding: UTF-8. TextEdit: Format → Make Plain Text first, then save. VS Code: bottom-right encoding indicator → Save with Encoding → UTF-8.

5.Overlapping timecodes

Example

Cue 1 ends 00:01:27,000; Cue 2 starts 00:01:26,500 (WRONG — 500ms overlap)

Fix: Cue 2 must start at or after Cue 1's end time. Many players display only one cue at a time; overlaps produce visible glitches.

6.Cue duration too short to read

Example

Cue text 42 characters, duration 800ms — reading speed 52.5 chars/second, way over Netflix's 17 CPS

Fix: Give each cue at least 1 second (Netflix minimum). Aim for 17 chars/second or fewer for accessibility.

7.More than 2 lines per cue

Example

3-line cue with 42 characters each — blocks too much of the video frame

Fix: Max 2 lines per cue at 32-42 characters per line (Netflix 42, BBC 37-39). Split into two cues if needed.

Broadcast line-length & reading-speed standards

Every mainstream player displays SRT the same way, but broadcasters enforce different readability limits. If you're producing captions for a streaming platform, match the target platform's spec.

PublisherMax characters per lineMax reading speedLines per cue
Netflix (adult, English)4217 CPS2
Netflix (children's, English)4220 CPS2
BBC37160–180 WPM (~15 CPS)2
YouTube (community best practice)32–42 recommendedNo hard limit2

Sources: Netflix English (USA) Timed Text Style Guide, BBC Subtitle Guidelines. YouTube publishes no hard cap — 32–42 CPL reflects creator-community consensus and matches most player defaults. Reading-speed conversions are approximate: 1 English word ≈ 5 characters + 1 space, so 180 WPM ≈ 15 CPS.

Frequently asked questions

What's the fastest way to create an SRT file?

AI generation. Upload your audio or video to an AI transcription tool (VexaScribe, Descript, Rev AI) — the tool transcribes the audio with Whisper Large-v3 or a comparable model and exports a ready-to-use SRT file in minutes. A 60-minute video produces a valid SRT file in 5-15 minutes at 90-95% accuracy on clean audio. Compare that to manual creation in a text editor (2-4 hours for the same video) or manual timing in a desktop tool like Subtitle Edit (30-60 minutes for the same video).

Can I create an SRT file for free?

Yes, three paths. (1) Manual — write the SRT in Notepad, TextEdit, or VS Code for free. Time-intensive but zero cost. (2) Free desktop tools — Subtitle Edit (Windows, free, open source) and Aegisub (Windows/Mac/Linux, free, open source) provide proper SRT editing with sync verification and syntax checking. (3) Free AI tier — VexaScribe offers 30 minutes of AI transcription free at signup with no credit card, enough to generate a proper SRT from a short video. Kapwing and Happy Scribe also have free tiers with different limits.

What does the timecode format in an SRT file look like?

HH:MM:SS,mmm — hours, minutes, seconds, and milliseconds separated by a comma (not a period). Example: 00:01:23,500 means 1 minute, 23.5 seconds into the video. Two timecodes are joined by a specific arrow: 00:01:23,500 --> 00:01:27,000. The arrow has two dashes and a right-angle bracket, no spaces around the dashes. Using a period instead of a comma (00:01:23.500) is the WebVTT format, not SRT — a common mistake that breaks the file in most players.

What encoding should I save my SRT file in?

UTF-8. This is the most common source of broken SRT files: Notepad on Windows defaults to Windows-1252 (ANSI), which fails on accented characters, non-Latin scripts, or emoji. YouTube, Premiere, and DaVinci all expect UTF-8. In Notepad, use File → Save As → Encoding: UTF-8. In TextEdit on Mac, use Format → Make Plain Text before saving. VS Code uses UTF-8 by default. Subtitle Edit and Aegisub write UTF-8 by default.

Do I need a special extension when saving?

Yes — the file must end in .srt. In Notepad, use File → Save As, set "Save as type" to All Files (not Text Documents), and type the filename with the .srt extension explicitly: my-video.srt. If you save as "my-video" with type Text Documents, Windows adds .txt and creates my-video.txt, which won't work as an SRT file. TextEdit on Mac has the same trap — use "Hide extension" checkbox and type .srt manually.

How long should each caption line be?

Industry standard: 32-42 characters per line, maximum 2 lines per subtitle block. Netflix specifies 42 characters per line for English; BBC specifies 37-39. The 2-line maximum is universal — 3+ lines block too much visual content. Reading speed should target 17 characters per second (Netflix adult) or 20 CPS (Netflix children). Subtitle Edit and Aegisub calculate CPS per block automatically and flag violations. Most AI generation tools do not enforce these limits — a manual pass or post-processing step is often needed for professional output.

What's the difference between SRT and WebVTT?

SRT (SubRip) uses HH:MM:SS,mmm timecode format (comma milliseconds separator) and doesn't support styling. WebVTT uses HH:MM:SS.mmm format (period separator) and supports CSS-like styling, positioning, and cue metadata. SRT was designed in the late 1990s for the SubRip DVD-ripping tool; WebVTT was standardized by W3C in 2010 for HTML5 video. In practice: use SRT for YouTube, video editors (Premiere, DaVinci, CapCut), Blu-ray, and general video work. Use WebVTT specifically for HTML5 web video via the <track> element. For the full breakdown against ASS, SCC, and TTML, see our SRT vs VTT vs ASS vs SCC vs TTML comparison at /what-is-an-srt-file#vs-formats.

Can I convert a transcript I already have into an SRT file?

Yes, but you need timestamps. A plain-text transcript without timestamps can't become a valid SRT file without re-syncing against the audio. Options: (1) Manually align in Subtitle Edit — import audio, listen, insert timing markers, save as SRT. (2) Use forced alignment tools — WhisperX or aeneas can align an existing transcript to audio and produce timestamps. (3) Re-transcribe with an AI tool that outputs SRT directly (fastest — the AI generates timestamps in the same pass as transcription). VexaScribe, Descript, and Rev AI all produce SRT natively from audio/video upload.

How do I convert TXT to SRT?

You cannot convert a plain .txt file to a valid .srt file by renaming or reformatting alone — SRT requires timestamps that plain text doesn't have. Three real paths: (1) If you have the audio the transcript came from, use forced alignment (WhisperX or aeneas — free, command-line) or re-transcribe with an AI tool like VexaScribe that outputs SRT directly from audio. Both produce accurate timestamps in minutes. (2) If the .txt is structured with per-line timestamps you can parse (e.g., YouTube copy-paste with 0:00 markers), a Python script or Subtitle Edit's Import → Plain Text option can rebuild valid SRT structure. (3) If the .txt is pure paragraph text without any timing hints, you must add timestamps manually in Subtitle Edit against a reference audio/video — no shortcut. The 'convert txt to srt' search almost always resolves to path 1 for real content.

How do I convert Word (.docx) to SRT?

Same rule as TXT: the .docx has to have timing information for the conversion to produce a valid SRT. Two practical patterns. (1) Timestamped Word transcript (e.g., a Rev or Otter export with speaker labels and time markers): open in Subtitle Edit → File → Import → Plain Text → paste the content → configure how it should detect timestamps → File → Save as SubRip (.srt). Subtitle Edit's parser handles most common transcript formats. (2) Plain narrative Word doc with no timestamps: export the .docx to plain text first (File → Save As → Plain Text .txt), then use one of the TXT-to-SRT paths above. Do NOT paste Word content directly into a .srt file — Word smart-quotes, non-breaking spaces, and hidden formatting characters will break parsers.

What encoding should an SRT file use?

UTF-8 without BOM (Byte Order Mark). This is the de-facto standard even though SRT has no formal spec. YouTube Studio, VLC, Premiere Pro, DaVinci Resolve, CapCut, and every HTML5 player expect UTF-8. Two encoding-related problems and their fixes: (1) Mojibake — accented characters render as garbage (é, ’) means the file is Windows-1252, ANSI, or ISO-8859-1. Re-save as UTF-8 in VS Code (bottom-right encoding label → Save with Encoding → UTF-8), Notepad++ (Encoding → Convert to UTF-8), or Subtitle Edit (File → Save As → Encoding dropdown → UTF-8). (2) UTF-8 BOM breaks cue 1 — some players (older VLC builds, some embedded devices) read the invisible BOM prefix as text and drop the first cue. Save WITHOUT BOM. VS Code and Notepad++ let you toggle BOM; Excel and older Notepad often force BOM which is why files exported from those tools cause the 'cue 1 missing' bug.

Related guides

What is an SRT file?

The definitional companion — format anatomy, SubRip origin, SRT vs VTT vs ASS vs SCC comparison

What is a VTT file?

The WebVTT explainer — required WEBVTT header, HTML5 <track> element, HLS streaming, VTT vs SRT differences

Video caption generator

AI captions with speaker labels — export SRT, VTT, or burned-in MP4 in 99 languages

SRT generator

Skip the manual steps — upload audio/video and get an AI-generated SRT file in minutes with Whisper Large-v3

Video to SRT

Turn any MP4, MOV, or MKV video directly into a ready-to-use SRT subtitle file

How to add subtitles to a video

Step-by-step per platform — YouTube, Premiere, DaVinci, CapCut, iPhone

Subtitle translator (all formats)

Once your SRT is created, translate it to any of 133 languages — timestamps and cue numbers preserved exactly

VTT to SRT converter

Already have a .vtt? Convert to SRT client-side — no upload, honest report of what got stripped

How to transcribe a video

3 methods compared (AI tool, YouTube built-in, manual) — the transcript is step zero before you make an SRT

What are captions? (pillar guide)

The umbrella definition of captions — closed, open, SDH, live, and AI-generated types all in one place

Captions vs subtitles

The technical and legal difference between captions and subtitles — file formats, regulations, and when to use each

What is closed captioning?

Definition, how CC differs from subtitles and SDH, how modern captions are made, and when you legally need them

What is audio transcription?

The upstream process that produces the text that goes into your SRT file

Skip the manual steps — generate SRT with AI

Upload your audio or video and get a ready-to-use SRT file in minutes. Whisper Large-v3 accuracy, 99 languages, UTF-8 encoded, timecodes valid. 30 minutes free at signup — no credit card.