Teams Transcript VTT to SRT: The FFmpeg Command

Sep 18, 2026

Microsoft Teams gives you a WebVTT transcript and no SRT export. Its support page for live transcripts lists the choices in a single sentence: "When the meeting is over, the transcript is immediately available in the meeting event on the calendar. By default, meeting organizers and co-organizers can download it as a .docx or .vtt file."

Two formats, and neither is the one most editors, players and publishing tools ask for. So the conversion is your job. It is one FFmpeg command — and the useful part is not the command itself but the fact that Microsoft publishes its own definition of the WebVTT format, which spells out exactly why renaming transcript.vtt to transcript.srt cannot work.

The command

ffmpeg -i transcript.vtt transcript.srt

Two parts, no flags:

  • -i transcript.vtt — the input file, the one Teams handed you. Run the command from the folder it sits in, or give a full path.
  • transcript.srt — the output path. This is the file you hand to whatever refused the VTT.

FFmpeg's documentation on subtitle muxing is not quoted anywhere on this page, so if you need to pin the subtitle encoder explicitly on your build, check the official FFmpeg documentation. For this job it rarely matters — the output is plain text you can open and verify by eye, which is what the next section is for.

What the conversion actually changes

Microsoft documents the WebVTT format itself, on its page about viewing, editing and managing video transcripts. That section is aimed at people uploading their own caption file, but three of its rules are what any conversion has to deal with.

The header. "The first line must read WEBVTT and subsequent entries in the file are called "cues"."

The timestamps. "Valid formats for specifying time marker include hh:mm:ss.ttt, hhhh:mm:ss.ttt, or mm:ss.ttt. Use two or four digits for hours (hh or hhhh), two digits for minutes (mm), and two digits for seconds (ss). Separate time markers with a colon (:). After ss, include a period (.) and three digits to represent thousandths of a second (ttt)."

The line count. "Limit text to a maximum of three lines to ensure all the words will fit on the screen."

Now hold the rename trick up against that. Renaming a file changes its name. The first line still reads WEBVTT, and every millisecond value still sits behind a period, because Microsoft's format requires one there. A tool expecting SRT meets both in the first few bytes, which is why the rename fails immediately rather than subtly.

One scoping note, because it is easy to overstate: that part of Microsoft's documentation describes WebVTT and nothing else — SRT does not appear in it. The comma that SRT files carry where WebVTT wants a period is a convention of that format, not something Microsoft states. Keep the two apart when you quote either.

The asymmetry runs deeper than one character. WebVTT has a published W3C specification (Candidate Recommendation Draft, 20 May 2026); SRT has no specification from any standards body, only a set of behaviours that implementations copy from each other. That is the real argument for converting properly instead of hand-editing: there is a defined thing to convert from, and the target is defined by convention, so you want a converter that follows the common one.

There is a third difference the rename cannot address either. The W3C spec lists the cue identifier as "Optionally, a WebVTT cue identifier followed by a WebVTT line terminator" — optional, in other words. In SRT files the sequential number above each timestamp is part of the structure. So the numbering generally has to be generated in order during conversion rather than copied across, because the source may not have any.

Variations

Convert a folder in one pass. A recurring meeting leaves you with a pile of these:

for f in *.vtt; do ffmpeg -i "$f" "${f%.vtt}.srt"; done

Go the other way to put captions back into Teams. The upload path takes WebVTT and nothing else: Microsoft's instruction is to "Upload your own WebVTT captions and transcript file by selecting Video settings on the right-hand side of a video's player page." If you corrected an SRT somewhere else, convert it back before uploading:

ffmpeg -i captions.srt captions.vtt

Do not go looking for a subtitle stream inside the recording. Microsoft is direct about this: "Captions aren't captured in recordings or downloads. However, you can turn them on while viewing a recording in Teams or in the browser on its Microsoft 365 video player page." The captions you saw during playback come from the transcript file stored beside the video, not from inside the MP4. For subtitle streams in containers from other sources, mapping is all or nothing — FFmpeg's documentation states that "When -map is used, only user-mapped streams are included in that output file, with one possible exception for filtergraph outputs":

ffmpeg -i input.mkv -map 0:s:0 captions.srt

No FFmpeg? Convert it in the browser

Installing a command-line toolchain to swap periods for commas is more setup than a one-off deserves.

Try it right here

Runs in your browser. Your file is not uploaded anywhere.

Loading tool…

This runs inside your browser tab — the file is read from disk and rewritten locally, never uploaded. That matters more here than for most files, since a meeting transcript is a verbatim record of what named people said. The same VTT to SRT converter is what the reverse-direction section above would use, and SRT vs VTT compared covers the trade in detail.

Here is precisely what our converter does, so nothing surprises you afterwards: it removes the WEBVTT header and any NOTE, STYLE or REGION blocks, rewrites each timestamp's period as a comma, renumbers the cues in order, and drops cue settings — the positioning and alignment values that can follow the timestamp arrow. That last one is a real loss, and it is the target format's limit rather than the converter cutting a corner.

Troubleshooting

There is no .vtt to convert. Recording and transcription are separate switches. Microsoft's admin page states that "If recording is turned on, but transcription is turned off, the recording doesn't have a transcript file stored next to it. Also, when viewing the recording playback in Stream, captions can't be turned on." Live captions are not a fallback copy either — asked whether Teams stores any caption data, the official answer is "No. Caption data is permanently deleted after the meeting is over."

You can read the transcript but cannot find a file to feed FFmpeg. That is documented behaviour, not a permissions glitch: "There is no direct access to see or manage the captions and transcript file in the file explorer for OneDrive for Business or SharePoint." Get it through the download route instead — the calendar event, the meeting chat, or the Recap tab. Downloading a Teams transcript walks through who is allowed to.

Teams rejects your converted file on the way back in. Two documented causes. Size first: the listed error text is "Your file size exceeds the 4MB limit that this feature supports." Format second: "Sometimes there may be errors in your WebVTT file. To work properly, your file must conform to the WebVTT format shown above." Also expect some trimming rather than a failure — "Additional fields, such as notes, comments, styles, etc., are not supported and will be removed from the file upon upload."

Characters come out wrong after conversion. The W3C spec requires that "A WebVTT file must consist of a WebVTT file body encoded as UTF-8 and labeled with the MIME type text/vtt". If you opened the transcript in an editor between download and conversion, save it back as UTF-8 before running the command.

FAQ

Can Teams export a transcript as SRT? Not according to its documentation, which names .docx and .vtt as the download formats. Take the VTT and convert it — that is the entire gap, and it is one command or one pass through a browser converter.

Can I just rename the .vtt file to .srt? No. Microsoft's own format rules say the first line must read WEBVTT and that a period separates the thousandths of a second. Renaming changes neither, so the file still contains WebVTT timestamps under an SRT name.

What do I lose by converting to SRT? Cue settings — the positioning and alignment values that can follow the timestamp arrow in WebVTT. SRT has nowhere to put them. For a Teams transcript that usually costs nothing, since the text is plain.

Does the SRT keep the speaker names? Microsoft says live transcription "includes each speaker's name and time stamp," but its pages do not describe the internal layout of the .vtt file, so open yours and look. One warning that is documented: transcripts edited through the Teams player "lose the speaker attribution of who said what during the meeting."

Should I convert now or later? Now. Recordings and transcripts expire on a schedule your admin sets, and the documented default expiration time is 120 days. Changing that setting will not help you retroactively either: "Any changes to this setting only affect newly created recordings and transcripts. You can't change the expiration time on existing meeting recordings and transcripts." Convert a copy while the original is still there.


Quotes from Microsoft's official documentation on live transcripts in Teams meetings, managing transcription and captions, video transcript and caption management, playing and sharing recordings, and recording expiration policy, checked 17 September 2026, plus FFmpeg's documentation and the W3C WebVTT specification (Candidate Recommendation Draft, 20 May 2026). Microsoft revises these pages — verify before relying on a step. More command-line walkthroughs in the FFmpeg hub; the browser-based converters are at all Clapr tools.

Clapr team

Clapr team

Teams Transcript VTT to SRT: The FFmpeg Command | Clapr Blog