Skip to content

SubRip SRT to CSV converter

SRT to CSV writes exactly three columns named start, end, and text for each parsed cue.

  • Converted with Subtitle engine · nothing stored
  • Free: 5 conversions a day · 5 MB each
  • Higher limits →

From real runs

What you get — and what changes

  • Header row Changed

    Our subtitle engine always wrote the CSV header start,end,text before the cue rows.

  • Timestamps Changed

    Comma-millisecond SRT timestamps were normalized to dot-millisecond strings in the CSV columns.

  • Cue numbers Lost

    Numeric SRT indexes were not included as a CSV column.

  • Multiline cues Kept

    The first torture cue stayed inside one quoted CSV field with an embedded newline.

  • Quotes Changed

    The quote in quote test was doubled according to CSV escaping rules.

  • Styling tags Kept

    The literal <i> and {\an8} text stayed in the text column exactly as cue text.

Sample conversions

Torture SRT to CSV

Input
Three-cue SRT with BOM, CRLF endings, overlapping timings, inline tags, a multiline cue, a comma, a quote, and café.
Output
229 byte CSV with header start,end,text, quoted fields, embedded newline in the first row, and doubled quote characters.

Sample SRT to CSV

Input
176 byte sample SRT with three numbered cues and ordinary comma-separated millisecond timestamps.
Output
189 byte CSV with three data rows and no index column; all start and end values used dot milliseconds.

A real SubRip SRT → CSV run

We converted our SubRip SRT sample (176 B) with Subtitle engine on 2026-09-11. It took 1 ms and produced a 189 B CSV file, about the same size as the input. The engine raised no warnings.

Input · sample.srt · 176 B

3 cues

Cues
3
Lines
9

Output · sample.csv · 189 B

3 data rows × 3 columns; header: start,end,text

Rows
3
Columns
3
Header
start,end,text

First lines of the output

csv
start,end,text
"00:00:01.000","00:00:03.400","Previously, on the show…"
"00:00:04.100","00:00:06.900","We never found the second key."
"00:00:07.200","00:00:09.000","Then we look again."

Do it yourself

Python

bash
python3 - <<'PY'
import csv, re, pathlib
text=pathlib.Path('in.srt').read_text('utf-8-sig')
rows=[]
for block in re.split(r'\r?\n\r?\n+', text.strip()):
    lines=block.splitlines();
    if lines and lines[0].isdigit(): lines=lines[1:]
    start,end=re.split(r'\s*-->\s*', lines[0])[:2]
    rows.append([start.replace(',', '.'), end.split()[0].replace(',', '.'), '\n'.join(lines[1:])])
w=csv.writer(open('out.csv','w',newline='')); w.writerow(['start','end','text']); w.writerows(rows)
PY

This mirrors the service's three-column shape but does not try to validate malformed subtitle blocks.

SubRip SRT to CSV by API or MCP

The HTTP API and the MCP server run the exact engine this page uses (Subtitle engine); the response carries the same warnings the web converter shows. Check support first with GET /api/v1/pairs?from=srt&to=csv.

curl
curl -X POST https://filetypeconverters.com/api/v1/convert \
  -H "Authorization: Bearer $FTC_API_KEY" \
  -F "file=@input.srt" -F "from=srt" -F "to=csv" \
  --output output.csv
API reference

When this is the wrong conversion

  • Use /convert/srt-to-json when nested application data is easier to consume than CSV rows.
  • Use /convert/srt-to-txt if reviewers only need the transcript and not timing columns.
  • Keep SRT when the file is going straight to a caption upload form.

SubRip SRT to CSV questions

What columns are in SRT to CSV output?

The header is exactly start,end,text. There is no cue index column in the current our subtitle engine CSV writer.

How are multiline SRT cues stored in CSV?

They stay in one quoted text field with an embedded newline. Spreadsheet tools usually display that as a wrapped cell.

Does CSV keep comma timestamp syntax?

No. The start and end fields use dot milliseconds, for example 00:00:01.000.