User Rating 0.0 โ˜…โ˜…โ˜…โ˜…โ˜…
Total Usage 0 times
Drop CSV file here or click to browse Supports .csv, .tsv, .txt • Max 20MB
or paste CSV text
Is this tool helpful?

Your feedback helps us improve.

โ˜… โ˜… โ˜… โ˜… โ˜…

About

Subtitle synchronization errors propagate through entire video timelines. A single malformed timestamp in an SRT file causes players like VLC, Premiere Pro, and YouTube to drop all subsequent cues. This converter parses raw CSV data containing subtitle index, start time (tstart), end time (tend), and dialogue text, then assembles spec-compliant SubRip (.srt) output with sequential indexing and HH:MM:SS,mmm timestamp formatting. It auto-detects column mapping and normalizes fractional seconds, colon-separated, and raw-second time formats into the SRT-mandated comma-delimited millisecond notation.

The tool handles edge cases that break naive converters: quoted fields containing commas, multi-line dialogue within a single CSV cell, BOM characters in UTF-8 files, and semicolon or tab delimiters common in European locale exports. Note: this tool assumes well-ordered, non-overlapping subtitle cues. Overlapping timestamps are preserved as-is since certain players render them as simultaneous on-screen text. Pro Tip: if your CSV originates from Excel, export as "CSV UTF-8" to avoid encoding artifacts in accented characters.

csv to srt subtitle converter srt generator csv subtitle subrip converter subtitle format video subtitles

Formulas

The SRT specification mandates each subtitle cue follow a strict three-part block structure separated by blank lines:

Cue = Index + Timestamp Line + Text Body

The timestamp line uses the format:

t = HH:MM:SS,mmm --> HH:MM:SS,mmm

Time normalization from raw seconds to SRT format uses integer division and modulo:

HH = floor(s รท 3600)
MM = floor((s mod 3600) รท 60)
SS = floor(s mod 60)
mmm = round((s โˆ’ floor(s)) ร— 1000)

Where s is the time value in total seconds (float), HH is hours (zero-padded to 2 digits), MM is minutes, SS is whole seconds, and mmm is milliseconds (zero-padded to 3 digits). The critical distinction from WebVTT is the comma (,) separator before milliseconds rather than a period (.).

Reference Data

FormatExtensionTime FormatSupports StylingCommon PlayersMax Lines per CueEncoding
SubRip.srtHH:MM:SS,mmmBasic HTML tagsVLC, MPC, YouTube, PremiereUnlimited (2 recommended)UTF-8
WebVTT.vttHH:MM:SS.mmmCSS cue stylingBrowsers, HTML5 videoUnlimitedUTF-8
SubStation Alpha.ass/.ssaH:MM:SS.ccFull (fonts, colors, position)VLC, Aegisub, MPCUnlimitedUTF-8 / ANSI
MicroDVD.subFrame-basedBasic tagsMicroDVD, VLC2ANSI
SAMI.smiMillisecondsHTML/CSSWindows Media PlayerUnlimitedUTF-8
LRC.lrc[MM:SS.xx]NoneMusic players1UTF-8
TTML/DFXP.ttml/.xmlHH:MM:SS.mmmFull XML stylingNetflix, broadcastUnlimitedUTF-8
SBV.sbvH:MM:SS.mmmNoneYouTube (legacy)UnlimitedUTF-8
STL (EBU).stlTimecode (fps-based)Teletext stylingBroadcast systems2ISO 6937
CSV (Generic).csvVariesNoneSpreadsheet apps1 per cellVaries
JSON Subtitles.jsonSeconds (float)NoneCustom players, APIsUnlimitedUTF-8
Transcript (Plain).txtNoneNoneText editorsN/AVaries

Frequently Asked Questions

The converter auto-detects columns by analyzing header names and data patterns. It recognizes common headers like "start", "end", "text", "dialogue", "begin", "from", "to", "subtitle", "content", and "duration". If no headers match, it falls back to positional mapping: Column 1 = Index (optional), Column 2 = Start Time, Column 3 = End Time, Column 4 = Text. You can also manually remap columns after upload.
The converter normalizes five time formats to SRT-standard HH:MM:SS,mmm. Raw seconds (e.g., 125.340) are decomposed via modular arithmetic. Colon-separated with periods (01:05:25.340) have the period replaced with a comma. Colon-separated without milliseconds (01:05:25) get ",000" appended. Short MM:SS format (05:25) is prefixed with "00:". Frame-based times (01:05:25:12) are converted assuming 24fps by default, calculating milliseconds as floor(frame รท fps ร— 1000).
The CSV parser implements RFC 4180 compliant tokenization. Fields wrapped in double quotes are treated as literal strings, so commas within quotes are preserved as text content. Escaped quotes (two consecutive double-quote characters) are collapsed to a single quote in the output. If your file uses semicolons or tabs as delimiters, the parser auto-detects this by frequency analysis of the first 5 lines.
Yes. Newline characters (\n) within quoted CSV fields are preserved and rendered as separate lines in the SRT output cue. The SRT specification supports multiple text lines per cue block. If your CSV uses a pipe character (|) or \N as a line break placeholder (common in some subtitle tools), the converter detects and replaces these with actual newlines in the SRT output.
SRT supports a limited subset of HTML-like tags: <b> for bold, <i> for italic, <u> for underline, and <font color="#RRGGBB"> for color. If your CSV text fields already contain these tags, they pass through untouched. The converter does not add or strip formatting. Note that player support for these tags varies: VLC renders bold/italic, YouTube ignores all formatting tags.
The converter outputs UTF-8 encoded text with a BOM (Byte Order Mark) prefix. The BOM ensures compatibility with older Windows applications and video editors that default to ANSI encoding. UTF-8 with BOM is the de facto standard for SRT files containing non-Latin characters (Cyrillic, CJK, Arabic). The input CSV is read as UTF-8 by default; if your file uses a different encoding, convert it to UTF-8 first.
Overlapping cues (where start time of cue N+1 is before end time of cue N) are preserved as-is. Some players like VLC display overlapping cues simultaneously, which is sometimes intentional for karaoke or multi-speaker subtitles. Zero-duration cues (start equals end) are flagged with a warning in the preview but still included in the output. Negative durations (start after end) are highlighted as errors and the times are auto-swapped with a notification.