Last reviewed August 2026

SRT generator — audio, video, or a URL in, a timed .srt out

Upload MP3, MP4, WAV, or paste a YouTube / podcast URL — get a ready-to-use .srt with speaker labels in 99 languages. Try 5 minutes right here, no account. Sign up — no card — for 30 free minutes and files up to 5 GB.

Your files are never used to train models.

What is an SRT generator?

An SRT generator is a tool that turns spoken audio into a .srt subtitle file — timestamped text cues you upload to YouTube, Vimeo, Premiere Pro, or any video editor. VexaScribe generates SRTs from any audio, video, or URL in 99 languages, with cue boundaries placed on millisecond-accurate word timings rather than interpolated across a block.

Drop your file here

or click to browse

Audio: MP3 · WAV · M4A · FLAC · OGG · AAC · AIFF · WMA · AMR · OPUS

Video: MP4 · MOV · AVI · MKV · WebM · FLV · WMV

Up to 200 MB · 5 min free preview

Speaker labels99 languagesNo account needed

What you get

A standards-clean .srt: sequentially numbered cues, comma decimal separators in the timecodes as the format requires, and UTF-8 encoding without a BOM — so accented characters survive and no player chokes on the first cue index. Multi-speaker recordings carry speaker labels on every cue. The same processing also exports VTT for HTML5 video and plain TXT, at no extra cost.

1
00:00:00,220 --> 00:00:03,480
[SPEAKER_00] And so, my fellow Americans,
ask not what your country can do for you

2
00:00:03,480 --> 00:00:06,910
[SPEAKER_00] ask what you can do for your country.

Cue boundaries sit on real word timestamps returned by the transcription engine — not interpolated across a segment — so the text appears and clears in sync with the speech.

How it works

Four steps from upload to finished .srt file. Nothing to install, works in any browser.

  1. 1

    Upload or paste a URL

    Drag in an MP3, WAV, M4A, MP4, MOV or any of 17 supported formats — or paste a YouTube, podcast or Google Drive link and skip the download.

  2. 2

    Language auto-detects

    The language is detected automatically and the audio transcribed across 99 languages, with every word timed. A one-hour file takes 5–10 minutes.

  3. 3

    Review in the editor

    Fix a misheard name, nudge a start time, split or merge a cue — then re-export straight away.

  4. 4

    Download

    Export SRT, VTT or TXT. Ready for YouTube Studio, Premiere Pro, Final Cut, DaVinci Resolve, CapCut, OBS or VLC.

Cue timing and reading speed

The hard part of generating a usable SRT isn't transcription accuracy — it's cue timing. A 30-second monologue can't be one subtitle, and a two-word reaction shouldn't flash for a quarter of a second.

How the splitter decides where a cue ends

Four rules, applied in order. Cue boundaries land on the word-level timestamps the model returns rather than on interpolated guesses, so a cue starts and ends where the speech actually does — the difference between subtitles that track the audio and subtitles that drift a few frames further out with every cue.

RuleValue
Maximum characters per cue80
Maximum cue duration6 seconds
New cue on speaker changeAlways
New cue after silence longer than1 second
Cue boundariesWord-level timestamps

A very short trailing cue is merged into the one before it rather than left dangling, so the occasional cue runs slightly past those caps. Speaker changes always break, which is why multi-speaker recordings come back as readable exchanges instead of one wall of text with everyone's words run together.

Why word-level timing matters here

Most tools stamp a block of speech every few seconds and cut cues on a fixed character count, wherever that lands. Splitting on word timings instead means a cue can end on the last word of a sentence rather than mid-clause, and a pause between speakers becomes a cue boundary rather than a gap inside one. It is the same word-level data that powers the JSON export and click-a-word playback in the editor.

What the professional standards say

These are industry reference points, not our settings — the figures broadcast and streaming captioning is graded against. Check the output against them when a cue looks dense, and split it in the editor before exporting.

StandardRecommended value
Adult reading speed (Netflix)Max 17 CPS
Children's reading speed (Netflix)Max 13 CPS
Minimum cue duration (Netflix)5/6 second (≈ 833 ms)
Maximum cue duration (Netflix)7 seconds
Conversational speech (BBC)160–180 WPM

These figures come from the Netflix Timed Text Style Guide and the BBC Subtitle Guidelines, the two most cited references for caption timing in professional production. The practical result is an SRT that imports into Premiere Pro, Final Cut, DaVinci Resolve, CapCut and YouTube without manual cue-splitting cleanup. For how the underlying timestamps behave across audio conditions, see Whisper transcription accuracy.

What you'll still want to check

No automatic transcription is reliably perfect, and the places it slips are predictable: proper names and brand names, homophones, speech where two people overlap, and lyrics under music. Budget a pass through the output before you publish — our free SRT editor opens the file in a browser tab for that pass, with reading speed and line length flagged per cue.

Review every cue in the editor, fix what's wrong, and export. Click a cue to correct the text, nudge its start or end time, or split it in two; changes save as you go and the re-export is immediate.

If you already run Whisper locally

You already have the transcription. What this adds on top: cue splitting that breaks on speaker turns and word timings rather than on fixed-length chunks, speaker labels from diarization, 99 languages without a GPU, an editor for the fixes above, and clean SRT/VTT/TXT exports from one processing run.

After the SRT

One processing run, several outputs. Translate the subtitles into another language with the cue numbers and timecodes preserved, so the translated file drops into the same timeline. Generate an AI summary of the transcript, or ask questions about it in AI chat. Export DOCX to hand to an editor, VTT for HTML5 players, JSON with word-level timestamps for a developer pipeline, or plain TXT.

For the translation workflow in depth — including uploading an SRT you already have — see subtitle translator. For timestamp formats and the word-level JSON structure, see transcription timestamps.

What the file looks like

Standard SubRip: sequential cue numbers, HH:MM:SS,mmm timecodes with a comma decimal separator, a blank line between cues, UTF-8 without a BOM. Speaker labels appear on multi-speaker recordings and are removable on export.

1
00:00:04,120 --> 00:00:07,940
Speaker 1: So the first thing we need to cover
is the quarterly numbers.

2
00:00:08,010 --> 00:00:11,600
Speaker 2: Right, and that ties directly
into the hiring question.

3
00:00:11,720 --> 00:00:13,880
Speaker 1: Exactly. Let me pull those up.

Note the cue boundaries: cue 1 ends on the last word of the sentence, and cue 2 starts on the next speaker rather than mid-exchange. That is the word-level timing described above, and it is what stops subtitles drifting out of sync as a file goes on.

Audio-to-SRT tools compared honestly

There are genuinely free, genuinely unlimited SRT tools, and for a short one-off file they are a reasonable choice. The difference shows up in the cues rather than the words.

ToolFree tierCue qualitySpeakersLanguages
VexaScribe5 min, no accountSplit on speaker turns and word timingsLabelled per cue99
Free unlimited web toolsUnlimited, short filesOften one block, or fixed-length chunksRarelyVaries
Whisper run locallyUnlimited, your own GPUFixed-length chunks by defaultNeeds a separate diarization step99
Professional captioningNoneHand-timedYesPer quote

The honest read: if you need one short file captioned and you are willing to fix the timings yourself, a free unlimited tool will do it. What you usually get back is the transcript as a single long cue, or cues cut on a fixed character count with no regard for who is speaking — fine to read, tedious to sync. Running Whisper yourself gives you better text but the same chunked cues, plus a separate diarization step if you want speaker labels. Our 5-minute preview exists so you can compare the actual output rather than take any of this on trust.

How to embed subtitles: HTML5, YouTube, Vimeo, and HLS

HTML5 video players consume .vtt via the <track> element, YouTube and Vimeo accept .srt directly through their CC upload UI, and HLS streams reference WebVTT segments from a subtitle playlist inside the master .m3u8.

HTML5 <video> with <track>

The W3C WebVTT 1 Recommendation defines the <track> element for native browser subtitle support. Use VTT, not SRT — HTML5 players will not parse SRT directly.

<video controls width="720" preload="metadata">
  <source src="/videos/demo.mp4" type="video/mp4" />
  <track
    kind="subtitles"
    src="/videos/demo.en.vtt"
    srclang="en"
    label="English"
    default
  />
  <track
    kind="subtitles"
    src="/videos/demo.es.vtt"
    srclang="es"
    label="Espanol"
  />
  Your browser does not support HTML5 video.
</video>

YouTube CC upload

YouTube accepts .srt, .sbv, .vtt, and .ttml per the official YouTube help article. UTF-8 encoding is required.

  1. 1Open YouTube Studio, go to Content, and select your video.
  2. 2Click Subtitles, then Add Language, and choose the video's spoken language.
  3. 3Click Upload File, choose "With timing", and select your .srt file.
  4. 4Click Publish — captions go live within seconds.

For multi-language uploads, name files with BCP-47 tags: my-video.en.srt, my-video.es.srt, my-video.pt-BR.srt.

Vimeo subtitle upload

Open your video, then Settings → Distribution → Subtitles, click the + button, choose the language and upload your .srt. Vimeo regenerates its player within about 30 seconds with the new caption track behind the CC button.

HLS WebVTT subtitle track

HTTP Live Streaming uses segmented WebVTT referenced from the master playlist. Per the Apple HLS Authoring Specification, segments are typically around 30 seconds, UTF-8 encoded, served with a text/vtt MIME type.

Master playlist (master.m3u8):

#EXTM3U
#EXT-X-VERSION:6

#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="English",DEFAULT=YES,AUTOSELECT=YES,FORCED=NO,LANGUAGE="en",URI="subs/en/index.m3u8"
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="Spanish",DEFAULT=NO,AUTOSELECT=YES,FORCED=NO,LANGUAGE="es",URI="subs/es/index.m3u8"

#EXT-X-STREAM-INF:BANDWIDTH=2500000,RESOLUTION=1280x720,CODECS="avc1.4d401f,mp4a.40.2",SUBTITLES="subs"
video/720p/index.m3u8

Subtitling one video in several languages

Generate the source-language SRT once, then translate the cue text while the timecodes stay exactly where they are. The translated file drops into the same timeline without re-syncing, which is the part that usually costs the most time.

  1. 1Generate the SRT in the spoken language.
  2. 2Translate it — cue numbers and timecodes are preserved, only the dialogue text changes.
  3. 3Export each target as video.<lang>.srt using BCP-47 tags (video.es.srt, video.de.srt, video.pt-BR.srt).
  4. 4Reference every language track in your player, HLS manifest, or YouTube upload.

Free translations are included with an account. Premium translation is the better choice for long recordings, where it keeps terminology and proper names consistent from the first cue to the last instead of drifting partway through.

File-naming tip: YouTube reads the subtitle language from the BCP-47 suffix, so my-video.es.srt is labelled Spanish automatically. For translating an SRT you already have, see the SRT translator; for other subtitle formats, the subtitle translator.

Common SRT encoding pitfalls, and how to fix them

When an SRT refuses to load, or loads with the accents mangled, it is almost always one of five things. Each has a distinctive symptom, so you can usually identify it without opening the file in a hex editor.

1. Non-UTF-8 encoding (mojibake)

Symptom: Accented characters appear as ’ or ß in the player.

Fix: Re-save the .srt as UTF-8 (without BOM) using VS Code or Notepad++. VexaScribe always exports UTF-8 by default.

2. Period instead of comma in timecodes

Symptom: Player shows the file as broken or skips cues.

Fix: SRT requires a comma decimal separator (00:00:01,200). VTT uses a period. Don't mix them.

3. Missing blank line between cues

Symptom: Multiple cues display merged on screen.

Fix: Every cue must end with a single blank line. A trailing CRLF is fine; a missing line break is not.

4. UTF-8 BOM at file start

Symptom: First cue index appears as 1 instead of 1; some players reject the file.

Fix: Save without BOM. In VS Code: bottom-right encoding label → 'Save with Encoding' → 'UTF-8'.

5. Overlapping or out-of-order timestamps

Symptom: Two cues compete for the same moment, or cues display in the wrong order.

Fix: Each cue's start time must be greater than or equal to the previous cue's end time. VexaScribe's editor catches this automatically.

Who generates SRT files here

Anyone publishing video needs subtitles. These are the most common workflows.

YouTube creators

Auto-caption every upload. Captioned videos rank better in YouTube search and hold watch time.

Social media creators

TikTok, Instagram Reels, and YouTube Shorts — where most viewing happens with the sound off.

Course creators

Udemy, Teachable, Skillshare, and Thinkific require accessibility-compliant subtitles. SRT is the standard.

Video teams and agencies

Back catalogues and client deliverables, where the same file ships in several languages.

Subtitling a whole back catalogue

Drop up to 50 files in a single batch — mixed audio and video formats in the same upload, audio extracted from video automatically. Processing runs in parallel with a per-file status dashboard, and the batch comes back as one ZIP with your original filenames preserved plus a CSV manifest. Pick SRT, VTT, TXT or DOCX per batch and every file gets every format you selected.

See how bulk transcription works.

Pricing

Try 5 minutes right here, no account. Sign up — no card — for 30 free minutes and files up to 5 GB. All paid plans include unlimited SRT export: no per-export fees.

Free

$0

30 min total

No credit card

Starter

$2/month

200 min/month

Solo creators

Basic

$5/month

1,000 min/month

Regular publishers

Frequently Asked Questions

How do I generate an SRT file from audio or video?

Upload the file (17 formats, up to 5 GB) or paste a YouTube, podcast or Google Drive URL. Audio is extracted from video automatically. Our premium speech recognition model transcribes the audio in 5-15 minutes per hour, timing every word so cue boundaries land on real speech rather than interpolated guesses. Review in the editor, then download the .srt.

What audio and video formats can I upload?

Audio: MP3, WAV, M4A, FLAC, OGG, AAC, AIFF, WMA, AMR, OPUS. Video: MP4, MOV, AVI, MKV, WebM, FLV, WMV. Up to 5 GB and 10 hours per file. Video audio is extracted automatically; the video file itself is not retained after transcription.

Is it free?

Try 5 minutes right here with no account. Sign up — no card — for 30 free minutes and files up to 5 GB. Paid plans start at $2/month for 200 minutes, and every plan includes unlimited SRT export with no per-export fees.

Can I edit the SRT file before downloading?

Yes. The built-in editor lets you correct text, adjust start and end timestamps, and split or merge cues, with the audio alongside for reference. Changes save automatically — click Download as SRT when you're done.

Can I generate SRT files in non-English languages?

Yes. VexaScribe transcribes 99 languages with automatic detection — upload audio in any supported language and download the SRT in that language. You can also translate the finished subtitles into another language with the cue numbers and timecodes preserved.

How accurate are the auto-generated timestamps?

The model returns each word's individual start and end time, and cue boundaries land on those real word timestamps rather than being interpolated across a segment. Subtitles sync to speech rather than drifting. Clear audio with minimal background noise gives the best results.

Why isn't it unlimited and free?

Because transcription costs real money to run, and someone pays for it either way. Tools that are unlimited and free usually cover it by capping quality, showing ads, or keeping rights to your audio. We would rather be straightforward: 5 real minutes with no account, 30 minutes free when you sign up, and plans from $2/month after that. Your audio is never used to train models.

How long can each subtitle cue be?

Cues cap at 80 characters and 6 seconds, and always break on a speaker change or a silence longer than a second. A very short trailing cue is merged into the one before it, so an occasional cue runs slightly past those caps rather than flashing on screen.

Why is my SRT file showing strange characters?

Almost always a character-encoding mismatch — the file is not being read as UTF-8, so accented characters render as mojibake. Re-save it as UTF-8 without a BOM. Our exports are UTF-8 without a BOM already, so this usually happens after editing in a program that saved it as ANSI or UTF-16.

Do the timecodes use a comma or a period?

A comma. SRT uses HH:MM:SS,mmm with a comma decimal separator; WebVTT uses a period. Mixing them is one of the most common reasons a player rejects a subtitle file, so do not convert one into the other by changing the extension.

Can I translate the SRT and keep the timings?

Yes. Translation replaces only the dialogue text, so cue numbers and timecodes stay exactly where they are and the translated file drops into the same timeline. Free translations are included with an account; premium translation holds terminology and names consistent across long recordings.

Will the SRT import into Premiere, Final Cut, or DaVinci Resolve cleanly?

Yes. The export is standard SubRip — sequential cue numbers, HH:MM:SS,mmm timecodes, UTF-8 without a BOM — with timing on real word boundaries. Drag the .srt into the timeline in Premiere Pro, Final Cut Pro X or DaVinci Resolve; same for CapCut, OBS, VLC and YouTube. Long cues from long speaker turns can be split in the editor first.

Generate your first SRT file

Try 5 minutes right here, no account. Sign up — no card — for 30 free minutes and files up to 5 GB.

What else you can do with your transcript

Translate to any language

Translate the SRT to 99 languages — one click, keep the timing

AI Summary

Get the 5 key moments — skip the full read

AI Chat

Ask questions like "when did they mention pricing?"

Export anywhere

DOCX · VTT · JSON · CSV — one processing