Subtitle Generator
SRT and VTT subtitles from any video
Paste a subtitle file or choose one, and get it back in the other format. SRT is what most players and upload forms expect; VTT is what HTML5 video needs. The conversion runs inside this page, so the file is never uploaded.
Nothing is uploaded: the conversion runs inside this page.
It never leaves your device.
This one runs entirely in your browser. Nothing you type or drop here is sent to us, so there is nothing on our server to keep, and nothing to delete. It works offline once the page has loaded.
Put the subtitles in
Press Choose a file and pick your .srt or .vtt file, or paste the contents straight into the left box. The label above the box tells you which format it was read as, so you can see immediately whether the file is what you thought it was. Files up to 2 MB are read, which is far larger than any real subtitle file: a feature length film is usually well under 200 KB.
Check the direction
To VTT and To SRT sit at the top left. The one your file is not already in is selected for you as soon as the file loads, so in the usual case there is nothing to choose. Press the other button if you want to go the other way, or to clean up a file that is already in the right format.
Read anything it tells you
The converted file appears on the right as you type. If the conversion had to drop something that the destination format cannot hold, a short list appears under the boxes saying exactly what and how many cues it affected. An empty list means nothing was lost.
Take the file
Download .vtt or Download .srt saves the result, named after the file you put in with the new extension. Copy output puts the whole thing on your clipboard instead, which is quicker if you are pasting it into a track editor. Nothing was uploaded, so there is nothing to delete afterwards.
Less than it looks, which is why converting by hand goes wrong. Four things matter. The timecode separator: SRT puts a comma before the milliseconds and VTT puts a full stop, and a file with the wrong one opens fine in a text editor and loads in no player at all. The header: a VTT file must begin with the word WEBVTT and an SRT file must not have it. Markup: VTT cue text is markup, so an ampersand or an angle bracket has to be written as an entity there, while SRT has no escape mechanism and would show those entities to the viewer as literal characters. And positioning: VTT can carry cue settings, styles and comments, and SRT cannot.
Only where leaving it alone would break the file, and it tells you when it does. Going into VTT, the three characters that are markup there are escaped; coming out of VTT they are unescaped again, so what the viewer sees is what you wrote either way. A blank line inside a cue is collapsed, because in SRT a blank line is what ends a cue and one in the middle would split it in two. Cue numbers are rewritten from 1, which fixes the gaps left by an editor that deleted a cue. The words themselves are never rewritten, shortened or re-wrapped.
Three things SRT has nowhere to put, and the page counts each one for you rather than dropping it quietly. Cue positioning settings, the align and position values that can follow a VTT timecode: the timing and the text survive and only the placement is lost. NOTE, STYLE and REGION blocks, which are WebVTT-only and are not subtitles. And cue markup beyond italic, bold and underline, which is removed because an SRT player prints the rest as literal angle brackets. Going the other way, from SRT to VTT, italic, bold and underline come across exactly as they are. The one thing lost is colour: SRT's font tag has no WebVTT equivalent, so the colour is dropped and the words are kept.
No, and it does not pretend to. This tool changes the format, not the timing: every cue keeps the start and end time it arrived with. The one thing it does to timings is sort the cues into order if they arrived out of order, which happens when two files have been joined, and it tells you when it did. If a cue ends at or before its own start time it is passed through exactly as it is and flagged, rather than repaired by a guess. A tool for shifting every cue forward or backward is a separate job and is on the roadmap.
No. The parsing and the conversion both run in your browser, in JavaScript the page has already downloaded, so the file never leaves your computer. There is nothing on our server to keep and nothing to delete. Once the page has loaded you can disconnect from the network entirely and it still works, which is the honest test of that claim.
For a site of your own, VTT: the HTML5 track element reads WebVTT and nothing else, so a .srt file attached to a video tag will not display. For uploading elsewhere, SRT is the safer default, because it is the format every platform has accepted for longest. If an upload form lists both, either works.