The ID Toolbox
← Guides

Converting SRT to VTT

The two caption formats are nearly the same file. What actually differs, how to convert one by hand without breaking it, which players and tools want which, and the faults that make a converted file fail quietly.

Updated September 15, 2026

SRT and WebVTT are the same idea written two ways: a list of cues, each with a start time, an end time and some text. Converting between them is a small job, and knowing exactly how small is useful, because it tells you when you can do it in a text editor and when you want something to check the result.

The same two cues, in both formats

captions.srt
1
00:00:01,000 --> 00:00:04,500
Welcome to forklift safety.

2
00:00:04,800 --> 00:00:09,200
Before you drive, walk around the truck
and check the forks, chains and tires.
captions.vtt
WEBVTT

00:00:01.000 --> 00:00:04.500
Welcome to forklift safety.

00:00:04.800 --> 00:00:09.200
Before you drive, walk around the truck
and check the forks, chains and tires.

Three differences, and that is the whole of it:

  • VTT starts with the line WEBVTT, then a blank line. Without it, players reject the file.
  • Times use a period before the milliseconds, 00:00:04.500, where SRT uses a comma.
  • The cue numbers are optional in VTT. Keeping them is legal, and they become cue identifiers rather than a required sequence.

Everything else that differs is optional extra: VTT can carry styling, positioning, regions and comments, which SRT cannot. A converted file uses none of it.

Converting by hand, without breaking it

1Add the header

Open the .srt in a plain text editor. Put WEBVTT on the first line, and a blank line after it.

2Change the timestamp commas, and only those

This is where hand conversion goes wrong. A find-and-replace of every comma also rewrites the commas in the captions themselves, and you end up with “Before you drive. walk around the truck” in front of your learners. Replace commas only inside the timestamp lines: the ones with an arrow in them.

3Save it as UTF-8, with the .vtt extension

WebVTT is defined as UTF-8. If your editor offers a byte-order mark, leave it off. Accented characters and curly quotes are where a wrong encoding shows up, usually as a black diamond in the middle of a word that nobody notices until the course is live.

Which format does each thing want?

  • A web page using the HTML5 video tag takes VTT and nothing else. This is the most common reason people need the conversion at all.
  • Storyline 360 imports SRT, VTT, SBV and SUB, so either of these works; Articulate’s import page lists the four.
  • YouTube and most video platforms accept SRT, and several accept VTT as well.
  • Broadcast and some enterprise systems ask for TTML or its DFXP flavor, which is XML and a different animal from both of these.

Faults that survive a conversion

A caption file can be perfectly valid and still be wrong. These are the ones worth checking after any conversion, because a player will show you no error at all:

  • Overlapping cues. One cue ending after the next one starts. Players handle it differently and some simply drop a line.
  • Cues running past the media. Usually a sign the captions came from a different cut of the audio.
  • Text nobody can read in the time given. Around 21 characters per second is the usual ceiling, and machine transcription cheerfully exceeds it. The Caption Reading Speed Checker ranks every cue worst-first and says how long each one would need.
  • Lines too long for the player. Two lines of about 32 to 42 characters is the convention; Caption Line Splitter rewraps a file to a budget without retyping it.
  • Timings shifted from the audio. If the whole file is out by the same amount, Caption Timing Shifter moves every cue at once rather than one at a time.

Questions people ask

Can I just rename the file from .srt to .vtt?

No. Without the WEBVTT header most players reject the file outright, and the comma in the timestamps is not valid VTT either. A few lenient players will forgive one of those, which is worse than failing cleanly: it works on your machine and not on somebody else’s.

Does converting lose anything?

Going SRT to VTT, no: everything in an SRT file has a place in a VTT file. Going the other way loses anything VTT can do and SRT cannot, which means styling, positioning, regions and comments. Plain spoken-word captions survive the round trip untouched.

What about SBV, SUB or DFXP?

SBV is YouTube’s old format and SUB is older still; both are plain text and convert the same way. DFXP is TTML with a different extension, and being XML it is a genuine conversion rather than a find-and-replace. The converter handles TTML in both directions.

My captions are inside a Storyline project. Do I have to export them one at a time?

Storyline exports them one slide at a time, which is the complaint behind a very long forum thread. Bulk Caption Export reads the .story file and gives you every caption file at once, named by slide and in course order.

Read next

Tools in this guide