Subtitle Converter — SRT, VTT & ASS

Convert a subtitle file between SRT, WebVTT and ASS — the timings and text are preserved, the format rewritten.

—

What this tool does

It rewrites a subtitle file from one format to another. Subtitles look similar on screen but the files differ: SRT is plain numbered cues, WebVTT is the web player's format with a header and a dot before the milliseconds, and ASS carries a stylesheet with fonts and positioning. Converting between them is mostly mechanical, and this tool does the mechanical part — timings and text intact — without a desktop application.

The three formats

FormatTime separatorBest for
SRT00:00:01,000Universal — players, editors, most platforms.
WebVTT00:00:01.000HTML video and web streaming players.
ASS/SSA0:00:01.00Styled subtitles with fonts and positioning.

What survives, what does not

Text and timing survive any conversion. Formatting does not travel downward: SRT and WebVTT hold plain text (and a little inline markup), so converting from ASS drops its fonts, colours and placement and strips the override codes. That is a property of the formats, not a limitation to work around — pick ASS only when the target player supports the styling you need.

The timing line is the whole file

Every subtitle format is cue blocks around one mandatory line: 00:00:01,000 --> 00:00:03,500. If that line is not present and well formed, the cue does not exist, whatever else the block contains. Three details in that line cause most conversion failures:

  • The arrow is two hyphens and a greater-than sign. Text processors sometimes autocorrect it to an en dash or an arrow glyph. The result looks right and parses as no cue at all.
  • SRT separates milliseconds with a comma, WebVTT with a dot. Formats are grammar, not preference: a VTT file with commas may play in a forgiving player and be rejected in a browser's <track>.
  • ASS writes centiseconds, not milliseconds — 0:00:01.00 is one second and 0:00:01.50 is one and a half, with no zero-padded hour. Writing the fraction as if it were milliseconds turns half a second into five, which is the size of error that makes subtitles visibly late rather than slightly off.

Cue duration is not stored anywhere; it is start minus end. There is no frame rate, no "number of frames", and no drift correction — if a source was authored for 23.976 fps and your video is 25 fps, the subtitles will be out of sync no matter which format you convert them to. That is a separate operation (retiming), not a format conversion.

What each format can actually hold

FeatureSRTWebVTTASS/SSA
Plain text and line breaksYesYesYes
Basic inline markup (bold/italic)Some playersYesYes, with override codes
Font, size, colourNoVia CSS classesYes, in the stylesheet
Screen positionNoCue settingsYes
Karaoke and effectsNoNoYes
Chapter markers / metadataNoYesYes

The practical reading: downgrade only when you have to. Converting ASS to SRT is safe for the words and unsafe for the intent — a caption that was positioned to avoid covering a speaker's face will be centred at the bottom like every other line. There is no field in SRT to record that it used to be somewhere else, so the information is gone rather than hidden.

Subtitle text is not handled like markup

A cue's text is not HTML. Angle brackets and ampersands are literal, so a caption reading <whispering> is shown as written rather than treated as a tag. Newlines inside a cue are meaningful — they are the line breaks the viewer sees — and each format encodes them differently: SRT and WebVTT store real newlines, ASS uses the escape \N inside one dialogue line, which is why an ASS export that is checked with a plain text editor looks like one long line.

Because the text is joined back together, a comma inside a caption survives: ASS dialogue fields are comma-separated up to the text, and everything after the ninth comma is text, commas included. This converter rejoins those fields before converting, so a line like “Wait, wait” is not truncated at the comma.

Why convert in the browser

A subtitle file often belongs to a video that is not public yet — an edit in progress, a client deliverable, a course being recorded. Most converters ask you to upload the file; this one reads and rewrites it locally, so an unreleased project stays on your machine.

Frequently asked questions

What does this tool do?

It converts subtitles between the three formats that cover almost everything: SubRip (.srt), WebVTT (.vtt) and ASS/SSA (.ass). Paste a subtitle file, pick the output format, and the cue timings and text are preserved while the file is rewritten.

Which format should I output?

SRT is the most widely accepted — almost every player, editor and platform takes it. WebVTT is the web standard, used by HTML video and streaming players. ASS/SSA is for styled subtitles with fonts, colours and positioning, used by some players and fansub workflows.

Will my styling survive?

Text and timing survive every conversion. Styling does not: SRT and VTT carry only plain text and basic tags, so converting from ASS drops the fonts, colours and positions, and ASS override codes are stripped. Going the other way, the ASS output uses a single default style.

How are the timings handled?

Each cue keeps its start and end. The formats differ in how they write them — SRT uses a comma before milliseconds (00:00:01,500), WebVTT a dot with milliseconds (00:00:01.500), and ASS a dot with centiseconds and no zero-padded hour (0:00:01.50) — and the tool rewrites the value correctly in each direction. ASS precision is 10 ms, so a time that falls between centiseconds is rounded to the nearest one.

Why did nothing convert?

The tool reports "no cues found" when it cannot see a timing line. That usually means the file is not really a subtitle in that format, or the text was copied without the timing lines. Check that the input contains a line like 00:00:01,000 --> 00:00:03,500.

Is my subtitle file uploaded?

No. The parsing and conversion run in your browser; the file never leaves your device. That matters for an unreleased video or a client project.

Sources

  • WebVTT — the W3C Web Video Text Tracks format.
  • SubRip (.srt) and ASS/SSA — the common subtitle interchange formats.

Everything runs in your browser — nothing you type is uploaded.