Free tool
Subtitle converter
Convert SRT to VTT, VTT to SRT, or either one to a plain-text transcript. Shift the timing when captions are out of sync, and convert several files at once, right in your browser.
Subtitles in
Drop .srt or .vtt files, choose them, or paste below.
Sample · SRT · 5 cues · 0:20
Your files are read and converted by your browser. Nothing is uploaded.
Negative shows subtitles earlier.
How to convert subtitles
- 1
Add your subtitles
Drop .srt or .vtt files anywhere on the page, choose them, or paste the text. The format is detected for you.
- 2
Pick the format
SRT for uploading to video platforms, VTT for web players and the HTML <track> element, or plain text for a transcript.
- 3
Fix the timing
If every caption is early or late by the same amount, shift them all by that many seconds, in either direction.
- 4
Download
Save the converted file, copy it, or download every file at once. Check the notes under the input for anything that was fixed.
SRT vs. WebVTT
Which subtitle format do you need?
Use SRT to upload captions to a video platform; it's the format almost all of them accept. Use WebVTT for a video on your own website: browsers play it natively, and it supports styling and positioning. For a blog post, show notes or a help article, use the plain-text transcript.
| Feature | SRT | WebVTT |
|---|---|---|
| First line | The first cue's number | WEBVTT |
| Times | 00:01:02,500 (comma) | 00:01:02.500 (dot; hours optional) |
| Cue labels | A number for every cue | Optional identifiers |
| Text styling | <i>, <b>, <u> and <font>, if the player supports them | <i>, <b>, <u>, CSS classes and speaker (voice) tags |
| Positioning | Not in the format ({\an8} codes work in some players) | Cue settings: line, position, size, align |
| Comments | No | NOTE blocks |
| Plays natively in browsers | No | Yes, with the HTML <track> element |
| Upload to video platforms | Accepted almost everywhere, including YouTube, LinkedIn and X | Accepted by many, and by most web video players |
Tips for captions people can follow
A converter fixes the file. These habits make the captions themselves easy to read.
Two short lines at most
Many style guides, Netflix's among them, cap a line at 42 characters, with no more than two lines on screen at once.
Leave time to read
A common guideline is no more than 17 to 20 characters per second, and no caption on screen for less than about a second.
Break lines where people pause
Split after punctuation or before words like “and” or “but”, never in the middle of a name or a button label.
Match the voice
A caption should appear as its line starts and leave as it ends. If they're all off by the same amount, a shift fixes it.
Caption the sounds that matter
Viewers who can't hear the video need the sounds that carry meaning, such as [notification chime] or [music stops].
Keep the original
Converting can drop styling a format doesn't support. Keep the source file in case you need to convert it differently later.
Captions included
Every SayScreen video comes with captions
SayScreen writes and voices the narration for your tutorial, then times the captions to the voice. Every render includes an .srt file, and you can burn the captions into the video for feeds that play without sound.
Change a line of narration later and it's re-voiced and re-timed, and the next render's captions match it, all without recording again.
Frequently asked questions
Both are plain-text caption files: a list of cues, each with a start time, an end time and the text. SRT (SubRip) is the older, simpler format and the one most video platforms accept for uploads. WebVTT is the web's format: browsers play it natively with the HTML <track> element, and it adds styling, positioning and comments. Their times differ by one character (SRT writes 00:00:01,500 with a comma, VTT 00:00:01.500 with a dot), and a VTT file starts with the line WEBVTT.
Drop the .vtt file on this page or paste its contents, choose SRT and download. Cues are numbered, times get commas, voice tags become “Name:” prefixes, and styling SRT can't show is removed; italics, bold and underline are kept.
Drop the .srt file, keep VTT selected and download. The converter adds the WEBVTT header, switches the times to dots, removes SRT-only codes such as {\an8} and font colors, and escapes the characters WebVTT reserves.
If every caption is off by the same amount, shift them all: a positive number of seconds if they appear too early, a negative one if they appear too late. To find the amount, note when a line is spoken in the video and when its caption appears, and use the difference. If the gap grows over the video, the subtitles were made for a different cut or frame rate, and a single shift can't fix that.
Yes. Choose Text: Paragraphs joins the captions into readable paragraphs, Lines gives one caption per line, and Timestamps puts the start time in front of each line. Tags and positioning codes are removed, and captions that repeat the line before (common in auto-generated captions) appear once.
The file was saved in an older encoding instead of UTF-8. The converter recognizes UTF-8 and UTF-16 and reads anything else as Windows-1252, the usual encoding of older Western-language subtitles, then always saves UTF-8. If text still looks wrong, the file uses another encoding: open it in a text editor and save it as UTF-8 first.
Yes. Drop or choose several files; each gets a tab above the text box. The format and the timing shift apply to all of them, and Download all saves every converted file. Your browser may ask once to allow multiple downloads.
No. Your browser reads and converts them on your device, and the converted files are created there too. Nothing is sent to SayScreen or anyone else.
Yes. Every SayScreen video comes with an .srt caption file timed to the narration, and you can burn the captions into the video too. Use this converter when a player needs WebVTT or you want the words as text.
Something missing or not working? hey@sayscreen.com
Tutorial videos with captions built in.
Point SayScreen at your app, say what to teach, and get a narrated, edited video back.
$1 for 7 days, then $29/month · Cancel anytime