formats · 6 min read

Transcript file formats, explained.

a transcript is either something people read or something a player reads. the file format follows from that. here's every format you're likely to be handed or asked for.

two families

caption formats (SRT, VTT, SBV, TTML, SCC) split the text into short cues, each with a start and end time, so a video player can show the right line at the right moment.

document formats (TXT, DOCX, PDF) are for reading. they're organized by speaker and paragraph, with timestamps every so often if at all.

data formats (JSON, CSV) sit in between. they carry every word with its timing, speaker, and often a confidence score, for software to use.

at a glance

formatfortimingused by
SRTcaptionsper cuealmost every video player and editor
VTTcaptions on the webper cueHTML5 video, YouTube, Vimeo, Zoom transcripts
SBVcaptionsper cueYouTube
TTML / DFXPcaptions, styledper cuestreaming platforms, broadcast workflows
SCCbroadcast captionsSMPTE timecodeUS television, closed captioning
TXTreading, pastingoptionaleverything
DOCXreading, editingoptionaleditors, track changes, qualitative coding tools
PDFfiling, citingpage and linelegal transcripts, handouts
JSONsoftwareper wordspeech APIs, custom tools
CSVspreadsheets, analysisper rowNVivo, ATLAS.ti, MAXQDA, data work

SRT

SubRip text. the most widely supported caption format there is: a number, a time range, the text, and a blank line. no header, no styling. note the comma before the milliseconds.

1
00:00:01,000 --> 00:00:03,400
we started recording at nine.

2
00:00:03,400 --> 00:00:06,100
by ten the room was full.

VTT (WebVTT)

the W3C's caption format for web video. it looks like SRT with three differences: the file starts with WEBVTT, the milliseconds use a period, and cue numbers are optional. it also supports positioning and basic styling, and voice tags for speakers.

WEBVTT

00:00:01.000 --> 00:00:03.400
<v Maria>we started recording at nine.

00:00:03.400 --> 00:00:06.100
<v Maria>by ten the room was full.

Zoom saves cloud-recording transcripts as a VTT file next to the recording. if you have a Zoom .vtt, you already have a timed transcript. see transcribing Zoom recordings for what to do with it.

SBV

YouTube's simple caption format. no cue numbers, and the start and end times share a line, separated by a comma.

0:00:01.000,0:00:03.400
we started recording at nine.

0:00:03.400,0:00:06.100
by ten the room was full.

YouTube accepts SRT and VTT just as happily, so there's rarely a reason to produce SBV yourself.

TTML and DFXP

an XML caption format from the W3C. DFXP is the earlier name of the same thing. it's verbose, but it carries styling, positioning, and language metadata reliably, which is why streaming platforms and broadcast delivery specs ask for it.

SCC

Scenarist closed captions: the US broadcast standard. instead of readable text it stores CEA-608 caption data as hexadecimal, timed with SMPTE timecode. you don't write SCC by hand; you export it when a broadcaster's spec demands it.

TXT

plain text. speaker names, paragraphs, sometimes a timestamp at the start of each turn. it opens everywhere, pastes into any CMS, and survives forever. it's the right default when a person, not a player, is the reader.

[00:00:01] Maria: We started recording at nine. By ten
the room was full.

[00:00:07] Interviewer: Who came first?

DOCX

a Word document. the format editors and clients expect, because they can comment and track changes. qualitative coding tools also import DOCX transcripts, using the speaker labels and timestamps to structure the document.

PDF

fixed layout. the point is that page 12, line 4 means the same thing to everyone who opens the file. that's why legal transcripts are filed as PDFs with numbered lines. see the deposition format and how to cite one.

JSON

the raw output of most speech-recognition systems: every word with a start time, end time, speaker, and confidence score. no person reads it. it's what lets an editor link each word to its second of audio, and what you want if you're building something.

{
  "words": [
    { "text": "we", "start": 1.00, "end": 1.12, "speaker": "Maria" },
    { "text": "started", "start": 1.12, "end": 1.55, "speaker": "Maria" }
  ]
}

CSV

one row per segment: start, end, speaker, text. opens in any spreadsheet, and it's the shape qualitative analysis tools import. see the NVivo, ATLAS.ti, and MAXQDA pages for each tool's specifics.

which one do you need?

converting between caption formats is lossless as long as you aren't using styling. converting a caption file into a readable document is not: caption cues break mid-sentence and drop speaker names. start from the richest format you have, usually the word-level JSON, and export down.

related

lifetime deal while we're in beta.

join the waitlist to get a lifetime deal — your first month free, plus 50% off forever. private invite when we ship; no drip campaign.