XConvert
Downloads
Pricing

Convert CSV to VTT Online

Turn a CSV subtitle file into a WebVTT (.vtt) subtitle file directly in your browser—no installs needed.

Input (CSV)
Output (VTT)

Convert CSV to VTT

A caption CSV is not a generic spreadsheet — it's a timed-text table whose columns hold the start time, end time, and text of each subtitle cue, usually with a header row. WebVTT (.vtt) is the format that turns that table into something a browser can actually play: it's the only caption format the HTML5 <track> element parses natively. This converter reads your rows, rewrites the timing into WebVTT's grammar, and hands back a valid .vtt file — the conversion runs entirely in your browser.

What Counts as a Caption CSV

The converter reads columns by position, not by name — the first three fields of every row are treated as start time, end time, and caption text, in that order. That is more forgiving than tools that demand exact column headers like "Timecode In / Timecode Out / Subtitle," but it means the column order matters and a header row is only skipped when it announces itself.

Column Position What it holds
Start time 1st field When the cue appears — a timecode like 00:00:01,500 or 00:00:01.500
End time 2nd field When the cue disappears — the same timecode style
Caption text 3rd field onward The words shown on screen; wrap it in double quotes if it contains commas
Header row Optional first line Skipped automatically only when it contains the word start (any case)

Rows with fewer than three fields are skipped, and start/end times must be colon timecodes — hh:mm:ss,ms, hh:mm:ss.ms, or mm:ss.ms. Bare decimal seconds such as 1.5 are not read as a time, so keep the columns in timecode form. A plain data spreadsheet with no timing columns has nothing to map onto cues and won't produce a caption file.

WebVTT at a Glance

Property Value
Standard W3C Timed Text Working Group — "WebVTT: The Web Video Text Tracks Format"
Status Candidate Recommendation Draft (May 2026); originally proposed in 2010 as "WebSRT"
File signature Every file begins with a WEBVTT line
Timestamp style hh:mm:ss.ttt — a period (full stop) before the three-digit milliseconds
Native browser support The only caption format the HTML5 <track> element parses natively (Chrome, Firefox, Edge, Safari)
Styling & layout Cue settings (line, position, align, size) plus CSS STYLE blocks
Best for HTML5 <video> embeds, HLS/DASH streaming captions, web players

How to Convert CSV to VTT

  1. Add Your Caption CSV: Click "Upload .csv" or paste the rows straight into the Input (CSV) panel. The first three fields of each row must be start time, end time, and caption text — one row per cue.
  2. Confirm VTT as the Output Format: The "To format" selector is already set to VTT; leave it there. The converter reads each row and rewrites the timing into WebVTT's grammar.
  3. Check the Header and Time Columns: If your first row is a header, make sure it contains the word start so it's skipped; write times as timecodes like 00:00:01,500 or 00:00:01.500, not bare seconds.
  4. Convert and Download: Click "Convert →", then use Copy or "Download .vtt". It runs entirely in your browser — no sign-up and no watermark.

How Your CSV Rows Become WebVTT Cues

The conversion is a deterministic re-formatting of the timestamps you already have — the cue count and timing match your spreadsheet exactly; only the surrounding syntax changes to fit WebVTT.

In your CSV In the generated VTT What changed
(top of file) A WEBVTT signature line WebVTT's required header is added
00:00:01,500 (comma ms) 00:00:01.500 Comma before the milliseconds becomes a period
start 00:00:01,500, end 00:00:04,000 00:00:01.500 --> 00:00:04.000 Two columns collapse into one cue-timing line with -->
"Hello, world" (quoted text) Hello, world Quotes are stripped; the comma inside the text is preserved

Frequently Asked Questions

What columns does my CSV need to convert to VTT, and in what order?

Three, in a fixed order: start time, end time, then caption text, one row per cue. The converter reads by position, so the columns must be in that sequence — it does not look for specific header names. An optional header row on the first line is skipped only if it contains the word start (for example start,end,text); if your header uses other words like Begin,End,Caption, either rename the first column to include "start" or drop the header entirely so it isn't mistaken for a cue.

What time format should the start and end columns use?

Use colon timecodes: 00:00:01,500 (hours:minutes:seconds and milliseconds) works, and so does 00:00:01.500 or the shorter mm:ss.ms form like 01:30.250. A comma or a period before the milliseconds is accepted on the way in. Plain decimal seconds such as 1.5 or 90.25 are not recognized as a time and will produce an empty cue, so keep the columns in timecode form. Whatever you type, the WebVTT output always uses a period before the milliseconds, per the W3C spec.

Will a plain data spreadsheet convert, or does it have to be caption data?

It has to be caption data. This is a timed-text converter, not a generic tabular tool: each row has to represent a subtitle cue with a start time, an end time, and text. A contacts list, a sales export, or any table without timing columns has nothing to map onto WebVTT cues, so it can't produce a valid .vtt. If you only want to reshape arbitrary data, that's a different kind of conversion entirely.

Why does HTML5 video need VTT instead of SRT?

Because the HTML5 <track> element — the standard way to attach captions to a <video> tag — parses WebVTT and nothing else. Point a <track src="captions.srt"> at an SRT file and the browser simply ignores it; there is no fallback. VTT also carries things SRT can't: cue settings for on-screen positioning, CSS STYLE blocks, chapter and metadata tracks. For a YouTube or Vimeo upload or a desktop player like VLC, SRT is still the safer default, which is why CSV to SRT exists alongside this converter.

Does the output keep the WEBVTT header and period-before-milliseconds timestamps?

Yes. In our testing, a CSV whose first column was headed start and whose cues used 00:00:01,500-style timecodes converted to WebVTT with a WEBVTT line at the top and every timestamp's comma rewritten to a period (00:00:01.500) — the cue count and the start/end times matched the spreadsheet exactly. Both the header line and the period milliseconds are mandatory in the W3C WebVTT format, so the file loads in any compliant <track> element without further editing.

My caption text contains commas — how do I keep them from splitting into extra columns?

Wrap the text field in double quotes: 00:00:01,500,00:00:04,000,"Well, hello there". The parser treats a quoted field as one value and preserves the comma inside it (use "" for a literal double quote). If you leave commas unquoted, the extra fragments past the third column are rejoined with a comma and a space, which usually still reads fine but can subtly change spacing — quoting is the reliable way to keep the line intact.

Can I turn a VTT back into an editable CSV?

Yes — VTT to CSV reverses the trip, exporting each cue as a start,end,text row you can open in Excel, Google Sheets, or Numbers. That round-trip is how most caption CSVs are made in the first place: teams pull a subtitle file into a spreadsheet to translate or bulk-edit the text, then convert the finished CSV back to VTT or SRT.

Does converting add WebVTT cue positioning or styling?

No. A CSV carries only timing and text, so the output is a set of correctly-timed cues with WebVTT's default placement — the converter doesn't invent positions, colors, or fonts you didn't specify. WebVTT can hold cue settings (line, position, align, size) and CSS STYLE blocks, but you add those afterward in a text editor once the cues exist. If you need heavily styled captions instead, CSV to ASS targets a format built for on-screen styling.

Are my caption files uploaded to a server?

No. This is a client-side converter: your caption table is parsed and rewritten entirely in your browser. There's no queue, no sign-up, and no watermark — which is also why it's instant even for a feature-length script with thousands of cues. If you have several formats to juggle, the CSV converter hub lists every target this tool can write.

Related Convert tools
CSV ConverterConvert Csv To SrtConvert Csv To AssConvert Csv To SsaConvert Csv To SbvConvert Srt To VttConvert Ass To VttConvert Ssa To Vtt

Image Tools

Image CompressorCompress JPEGCompress PNGCompress GIFCompress WebPImage ConverterJPG ConverterImage Resizer

Video Tools

Video CompressorCompress MP4MP4 to GIFVideo to GIFVideo ConverterMP4 ConverterVideo Cutter

Audio Tools

Audio CompressorCompress MP3Compress WAVAudio ConverterMP3 ConverterFLAC to MP3Audio Cutter

Document Tools

Compress PDFMerge Images to PDFSplit PDFPDF to JPGUnzip FilesRAR Extractor

Converters

Time Zone ConverterMeeting PlannerIST to ESTTime Zone AbbreviationsUnit ConverterLength ConverterFlow Rate Converter
© 2026 XConvert.com. All Rights Reserved.
About UsPrivacy PolicyTerms of ServiceContactHelp Us Grow