CSV to SRT
Or paste subtitle text
What this conversion changes
Nothing is lost in this direction — every feature of the source format has somewhere to go in the target format.
This list comes from the capability matrix for these two formats, not from the particular file you loaded. A specific file may lose more if it uses features the format allows but the matrix does not model.
This page turns a table into a subtitle file. It needs three things from the sheet — a start time, an end time and the text — and it finds them by the heading row rather than by position, so a file with columns in a different order, or with longer names such as begin and finish, converts without being rearranged first. With no heading row the columns are read in the order start, end and text.
Timecodes in the cells are read in the forms spreadsheets end up holding: minutes and seconds, or hours, minutes and seconds, with either a comma or a dot before the fraction, and a fraction of one, two or three digits. Rows that were pasted from a subtitle file without quoting — where the comma inside the timestamp splits it across two columns — are put back together, because that is what real files look like rather than what the standard says they should look like.
One row becomes one cue, in the order the rows appear, and the result is an SRT file ready to play. The conversion happens in your browser; nothing is uploaded.
Examples
A typical CSV file, converted to SRT
Input
start,end,text
00:00:01.000,00:00:03.500,The quick brown fox.
00:00:04.000,00:00:06.250,"Jumps over, the lazy dog."
00:00:07.000,00:00:09.000,"Two lines here.
And a second one."
Output
1
00:00:01,000 --> 00:00:03,500
The quick brown fox.
2
00:00:04,000 --> 00:00:06,250
Jumps over, the lazy dog.
3
00:00:07,000 --> 00:00:09,000
Two lines here.
And a second one.
Nothing is dropped here: compare the two sides line for line.
The same conversion on an awkward input
Input
id,start,end,note,text
1,00:00:01,000,00:00:04,000,cue one,"Hello there, friend."
2,00:00:05.000,00:00:07.000,cue two,Second line.
bad,notatime,00:00:09.000,cue three,Unreadable start.
4,00:00:10.000,00:00:09.000,cue four,End before start.
5,00:00:12.000,00:00:14.000,cue five,Unquoted comma in text, right here.
Output
1
00:00:01,000 --> 00:00:04,000
Hello there, friend.
2
00:00:05,000 --> 00:00:07,000
Second line.
3
00:00:10,000 --> 00:00:10,001
End before start.
4
00:00:12,000 --> 00:00:14,000
Unquoted comma in text, right here.
This is the kind of damage real files have — mixed line endings, stray whitespace, fields left empty. Compare it with the tidy example above to see what the parser forgives.
Frequently asked questions
Which column names does it recognise?
The usual ones, and they are matched loosely: start, start time, timecode in, begin, from and in all mean the start; end, stop, to, out and finish mean the end; text, subtitle, caption, content, line, dialogue and transcript mean the words. Spaces, underscores and hyphens in a heading are ignored, and case does not matter.
What if my table has no heading row?
Then the first row is read as data and the columns are taken in order: start, end, text. A row is recognised as a heading when its first cell is not a timecode, so a table that begins with a real cue is not mistaken for one that begins with labels.
Which time formats can the cells hold?
Minutes and seconds, or hours, minutes and seconds, with an optional fraction after a comma or a dot. A fraction is read by how many digits it has, so .5, .50 and .500 are all half a second, which is what makes a spreadsheet's variable decimal places behave.
What if a cell containing a timestamp was never quoted?
It is repaired. A timestamp written the SRT way has a comma inside it, and pasted into a table unquoted it lands in two columns; the converter puts the two halves back together when they look like the two halves of one timecode, so the classic damaged export still converts.
Can I build a subtitle file from scratch in a spreadsheet?
Yes, and it is the usual reason to be on this page: three columns, one cue per row, then convert. It is a much better editing surface than a subtitle file when you are working on the text, and the conversion back is one click.