Home β€Ί Tools β€Ί Subtitles to CSV Converter

Subtitles to CSV Converter

Export SRT or VTT cues to a CSV spreadsheet with start time, end time, duration and text.

Drop a subtitle file here, or

Your file never leaves your device

This tool is plain JavaScript. There is no upload step and no server-side processing, so confidential captions, unreleased content and client material stay on your machine.

What this does

A subtitle file is awkward to work with in a spreadsheet, but translation, proofreading and timing review are all easier in rows. This converter flattens an SRT or VTT file into CSV β€” one row per cue, with the start time, end time, duration and text as separate columns.

How to use it

  1. Paste or drop your subtitle file.
  2. The CSV is generated locally as you type.
  3. Download it and open it in Excel, Google Sheets, Numbers or a CAT tool.

Good to know

  • Text is quoted, so commas and quotation marks inside a cue survive the round trip.
  • Multi-line cues become a single row with line breaks replaced by spaces.
  • The file is UTF-8. If your spreadsheet shows garbled characters, import it and choose UTF-8 explicitly rather than double-clicking the file.
  • This export is one-way by design β€” it is for review and translation, not for turning a spreadsheet back into subtitles.

What the columns are for

index is the cue number, starting at 1. It keeps rows identifiable after sorting or filtering, which matters because most review workflows reorder rows.

start and end use SubRip's hh:mm:ss,mmm form. They are written as text rather than a spreadsheet time so that no application silently reinterpret them.

duration_ms is the cue's length in milliseconds. This is the column to sort by when hunting for cues that are too short to read or too long to sit comfortably on screen.

text has its internal line breaks collapsed to spaces so that one cue stays on one row. Quotes inside the text are escaped as "", which is the CSV standard.

Worked example

Input β€” .srt
1
00:00:01,000 --> 00:00:04,000
Hello there.

2
00:00:04,200 --> 00:00:07,000
How are you?
Output β€” .csv
index,start,end,duration_ms,text
1,"00:00:01,000","00:00:04,000",3000,"Hello there."
2,"00:00:04,200","00:00:07,000",2800,"How are you?"

One row per cue. Duration in milliseconds makes it easy to sort by cue length and spot the ones that are too short to read.

FAQ

Can I convert the CSV back into subtitles?
Not with this tool. The export exists to get cues into a spreadsheet for review or translation; edit the original subtitle file to change timing.
Why are times written as text?
Because spreadsheets guess. A value like 00:01:05,000 can be silently reinterpreted as a date or a number depending on locale. Keeping it as text preserves exactly what the subtitle file said.
Does it keep the formatting tags?
Yes β€” tags such as <i> stay in the text column. Strip them beforehand with the clean subtitles tool if you want plain text.
Is there a cue limit?
No. Nothing is uploaded, so the practical limit is your browser's memory. Files with several thousand cues convert instantly.

Troubleshooting

  1. The CSV is emptyNo cues were recognised. Check that the file uses --> between timestamps β€” a file renamed from SBV will not parse.
  2. Characters look garbled in ExcelExcel often guesses the wrong encoding. Use Data β†’ From Text/CSV and select UTF-8 rather than opening the file directly.
  3. Rows are split in the wrong placeThat happens when opening the file in a locale that uses semicolons as the separator. Import it manually and set the delimiter to a comma.
  4. Quotes look doubledThat is correct CSV escaping. A quote inside a cue is written as "" and will display as a single quote once imported.

Related tools

Last updated 2026-09-21. All conversions happen locally in your browser.