Skip to main content
SubtitleMatrix

All subtitle tools

Everything on the site in one list. Every tool runs in your browser — none of them uploads your file.

243 tools

Format conversion

What ASS can store, what it cannot, and every format you can convert it to or from.
Convert ASS to CSV in your browser — dropped: styling, positioning, karaoke, format-specific content.
Convert ASS to JSON in your browser — dropped: format-specific content.
Convert ASS to LRC in your browser — dropped: timing, styling, positioning, karaoke, format-specific content.
Convert ASS to MICRODVD in your browser — dropped: styling, positioning, karaoke, frame rate, format-specific content.
Convert ASS to SBV in your browser — dropped: styling, positioning, karaoke, format-specific content.
Convert ASS to SMI in your browser — dropped: styling, karaoke, format-specific content.
Convert ASS to SRT in your browser — dropped: styling, positioning, karaoke, format-specific content.
Convert ASS to SSA in your browser — nothing is lost in this direction.
Convert ASS to TTML in your browser — dropped: karaoke, format-specific content.
Convert ASS to TXT in your browser — dropped: timing, styling, positioning, karaoke, line breaks, format-specific content.
Convert ASS to VTT in your browser — dropped: styling, positioning, karaoke, format-specific content.
What CSV can store, what it cannot, and every format you can convert it to or from.
Convert CSV to ASS in your browser — dropped: precision.
Convert CSV to JSON in your browser — nothing is lost in this direction.
Convert CSV to LRC in your browser — dropped: timing, precision.
Convert CSV to MICRODVD in your browser — dropped: frame rate.
Convert CSV to SBV in your browser — nothing is lost in this direction.
Convert CSV to SMI in your browser — nothing is lost in this direction.
Convert CSV to SRT in your browser — nothing is lost in this direction.
Convert CSV to SSA in your browser — dropped: precision.
Convert CSV to TTML in your browser — nothing is lost in this direction.
Convert CSV to TXT in your browser — dropped: timing, line breaks.
Convert CSV to VTT in your browser — nothing is lost in this direction.
What JSON can store, what it cannot, and every format you can convert it to or from.
Convert JSON to ASS in your browser — dropped: precision.
Convert JSON to CSV in your browser — dropped: styling, positioning, karaoke.
Convert JSON to LRC in your browser — dropped: timing, styling, positioning, karaoke, precision.
Convert JSON to MICRODVD in your browser — dropped: styling, positioning, karaoke, frame rate.
Convert JSON to SBV in your browser — dropped: styling, positioning, karaoke.
Convert JSON to SMI in your browser — dropped: styling, karaoke.
Convert JSON to SRT in your browser — dropped: styling, positioning, karaoke.
Convert JSON to SSA in your browser — dropped: precision.
Convert JSON to TTML in your browser — dropped: karaoke.
Convert JSON to TXT in your browser — dropped: timing, styling, positioning, karaoke, line breaks.
Convert JSON to VTT in your browser — dropped: styling, positioning, karaoke.
What LRC can store, what it cannot, and every format you can convert it to or from.
Convert LRC to ASS in your browser — dropped: timing.
Convert LRC to CSV in your browser — dropped: timing.
Convert LRC to JSON in your browser — dropped: timing.
Convert LRC to MICRODVD in your browser — dropped: timing, frame rate.
Convert LRC to SBV in your browser — dropped: timing.
Convert LRC to SMI in your browser — dropped: timing.
Convert LRC to SRT in your browser — dropped: timing.
Convert LRC to SSA in your browser — dropped: timing.
Convert LRC to TTML in your browser — dropped: timing.
Convert LRC to TXT in your browser — dropped: timing, line breaks.
Convert LRC to VTT in your browser — dropped: timing.
What MICRODVD can store, what it cannot, and every format you can convert it to or from.
Convert MICRODVD to ASS in your browser — dropped: frame rate, precision.
Convert MICRODVD to CSV in your browser — dropped: frame rate.
Convert MICRODVD to JSON in your browser — dropped: frame rate.
Convert MICRODVD to LRC in your browser — dropped: timing, frame rate, precision.
Convert MICRODVD to SBV in your browser — dropped: frame rate.
Convert MICRODVD to SMI in your browser — dropped: frame rate.
Convert MICRODVD to SRT in your browser — dropped: frame rate.
Convert MICRODVD to SSA in your browser — dropped: frame rate, precision.
Convert MICRODVD to TTML in your browser — dropped: frame rate.
Convert MICRODVD to TXT in your browser — dropped: timing, line breaks, frame rate.
Convert MICRODVD to VTT in your browser — dropped: frame rate.
What SBV can store, what it cannot, and every format you can convert it to or from.
Convert SBV to ASS in your browser — dropped: precision.
Convert SBV to CSV in your browser — nothing is lost in this direction.
Convert SBV to JSON in your browser — nothing is lost in this direction.
Convert SBV to LRC in your browser — dropped: timing, precision.
Convert SBV to MICRODVD in your browser — dropped: frame rate.
Convert SBV to SMI in your browser — nothing is lost in this direction.
Convert SBV to SRT in your browser — nothing is lost in this direction.
Convert SBV to SSA in your browser — dropped: precision.
Convert SBV to TTML in your browser — nothing is lost in this direction.
Convert SBV to TXT in your browser — dropped: timing, line breaks.
Convert SBV to VTT in your browser — nothing is lost in this direction.
What SMI can store, what it cannot, and every format you can convert it to or from.
Convert SMI to ASS in your browser — dropped: precision, format-specific content.
Convert SMI to CSV in your browser — dropped: styling, positioning, format-specific content.
Convert SMI to JSON in your browser — dropped: format-specific content.
Convert SMI to LRC in your browser — dropped: timing, styling, positioning, precision, format-specific content.
Convert SMI to MICRODVD in your browser — dropped: styling, positioning, frame rate, format-specific content.
Convert SMI to SBV in your browser — dropped: styling, positioning, format-specific content.
Convert SMI to SRT in your browser — dropped: styling, positioning, format-specific content.
Convert SMI to SSA in your browser — dropped: precision, format-specific content.
Convert SMI to TTML in your browser — dropped: format-specific content.
Convert SMI to TXT in your browser — dropped: timing, styling, positioning, line breaks, format-specific content.
Convert SMI to VTT in your browser — dropped: positioning, format-specific content.
What SRT can store, what it cannot, and every format you can convert it to or from.
Convert SRT to ASS in your browser — dropped: precision.
Convert SRT to CSV in your browser — nothing is lost in this direction.
Convert SRT to JSON in your browser — nothing is lost in this direction.
Convert SRT to LRC in your browser — dropped: timing, precision.
Convert SRT to MICRODVD in your browser — dropped: frame rate.
Convert SRT to SBV in your browser — nothing is lost in this direction.
Convert SRT to SMI in your browser — nothing is lost in this direction.
Convert SRT to SSA in your browser — dropped: precision.
Convert SRT to TTML in your browser — nothing is lost in this direction.
Convert SRT to TXT in your browser — dropped: timing, line breaks.
Convert SRT to VTT in your browser — nothing is lost in this direction.
What SSA can store, what it cannot, and every format you can convert it to or from.
Convert SSA to ASS in your browser — nothing is lost in this direction.
Convert SSA to CSV in your browser — dropped: styling, positioning, karaoke, format-specific content.
Convert SSA to JSON in your browser — dropped: format-specific content.
Convert SSA to LRC in your browser — dropped: timing, styling, positioning, karaoke, format-specific content.
Convert SSA to MICRODVD in your browser — dropped: styling, positioning, karaoke, frame rate, format-specific content.
Convert SSA to SBV in your browser — dropped: styling, positioning, karaoke, format-specific content.
Convert SSA to SMI in your browser — dropped: styling, karaoke, format-specific content.
Convert SSA to SRT in your browser — dropped: styling, positioning, karaoke, format-specific content.
Convert SSA to TTML in your browser — dropped: karaoke, format-specific content.
Convert SSA to TXT in your browser — dropped: timing, styling, positioning, karaoke, line breaks, format-specific content.
Convert SSA to VTT in your browser — dropped: styling, positioning, karaoke, format-specific content.
What TTML can store, what it cannot, and every format you can convert it to or from.
Convert TTML to ASS in your browser — dropped: precision, format-specific content.
Convert TTML to CSV in your browser — dropped: styling, positioning, format-specific content.
Convert TTML to JSON in your browser — dropped: format-specific content.
Convert TTML to LRC in your browser — dropped: timing, styling, positioning, precision, format-specific content.
Convert TTML to MICRODVD in your browser — dropped: styling, positioning, frame rate, format-specific content.
Convert TTML to SBV in your browser — dropped: styling, positioning, format-specific content.
Convert TTML to SMI in your browser — dropped: styling, format-specific content.
Convert TTML to SRT in your browser — dropped: styling, positioning, format-specific content.
Convert TTML to SSA in your browser — dropped: precision, format-specific content.
Convert TTML to TXT in your browser — dropped: timing, styling, positioning, line breaks, format-specific content.
Convert TTML to VTT in your browser — dropped: styling, positioning, format-specific content.
What TXT can store, what it cannot, and every format you can convert it to or from.
Convert TXT to ASS in your browser — dropped: timing, precision.
Convert TXT to CSV in your browser — dropped: timing.
Convert TXT to JSON in your browser — dropped: timing.
Convert TXT to LRC in your browser — dropped: timing, precision.
Convert TXT to MICRODVD in your browser — dropped: timing, frame rate.
Convert TXT to SBV in your browser — dropped: timing.
Convert TXT to SMI in your browser — dropped: timing.
Convert TXT to SRT in your browser — dropped: timing.
Convert TXT to SSA in your browser — dropped: timing, precision.
Convert TXT to TTML in your browser — dropped: timing.
Convert TXT to VTT in your browser — dropped: timing.
What VTT can store, what it cannot, and every format you can convert it to or from.
Convert VTT to ASS in your browser — dropped: precision, format-specific content.
Convert VTT to CSV in your browser — dropped: styling, format-specific content.
Convert VTT to JSON in your browser — dropped: format-specific content.
Convert VTT to LRC in your browser — dropped: timing, styling, precision, format-specific content.
Convert VTT to MICRODVD in your browser — dropped: styling, frame rate, format-specific content.
Convert VTT to SBV in your browser — dropped: styling, format-specific content.
Convert VTT to SMI in your browser — dropped: format-specific content.
Convert VTT to SRT in your browser — dropped: styling, format-specific content.
Convert VTT to SSA in your browser — dropped: precision, format-specific content.
Convert VTT to TTML in your browser — dropped: format-specific content.
Convert VTT to TXT in your browser — dropped: timing, styling, line breaks, format-specific content.

Timing

Scale every subtitle timestamp by source frame rate over target frame rate — for any pair, including 23.976, 24, 25, 29.97, 50 and 60.
Close the blank screen between one cue and the next by holding the earlier cue longer — both cues keep their own text and timing.
Multiply every timestamp by 0.95904 to move NTSC film subtitles onto a PAL version — the 4.096 percent correction, not the round 4 percent.
Multiply every timestamp by 0.8 when frame numbers were divided by the film rate instead of 29.97 — and why 3:2 pulldown is not a reason to convert.
Multiply every timestamp by exactly 0.96 for the 4 percent PAL speed-up — the clean film-master pair, with the reading speed cost named.
Multiply every timestamp by 1.0427094 to spread PAL subtitles back onto an NTSC film version — and why 25 to 29.97 is the wrong pair.
Multiply every timestamp by 1.25 when a film timeline was counted at the NTSC container rate — the mirror of the 0.8 fix, for subtitles that run early.
Halve every timestamp to put 50 fps or field-counted subtitle timing back onto a 25 fps version — the one error in the group visible in the file's length.
Turn cues that share screen time into one cue holding both texts, running from the earliest start to the latest end — nothing uploaded.
Join neighbouring cues into one when the gap between them is under your limit, with the pause filled and every word kept — in your browser.
Name a moment in the file and where it belongs: one pair of points fixes an offset, two also stretch a file that drifts out towards the end.
Make every subtitle cue start where the previous one ended — trim or drop, with moved and removed counts reported separately.
Multiply every subtitle timestamp by a percentage to stretch or compress the timeline — the tool for PAL speed-up and drift that grows towards the end.
Leave at least a set number of milliseconds of blank screen between cues, so two lines never read as one — the earlier cue gives up the time.
Hold any cue shorter than your limit on screen for longer — the extra time comes out of the gap after it, and the last cue simply extends.
Move only the end time of every subtitle cue, leaving each start where it was — make captions linger or take them off screen sooner.
Move only the start time of every subtitle cue, leaving each end where it was — cues get shorter or longer by the offset you give.
Move every subtitle cue earlier or later by an exact millisecond offset — timings only, text and cue numbers untouched.
Shift every subtitle cue by a number of frames converted through the frame rate — for 23.976, 24, 25, 29.97 and 30 fps sources.
Shift every subtitle cue by a timecode such as 00:00:02,500, including negative values — both edges move, so no cue changes length.
Shift only the cues that start inside a time range and leave the rest of the file alone — fix one scene without retiming the whole file.
Move every subtitle boundary onto the nearest frame at 25, 23.976, 29.97 or any rate — frame-accurate output with the timeline's length left alone.
Cut cues holding more than your character limit into readable pieces — text divided at word boundaries, timing shared by length.
Put one sentence per cue, breaking on full stops, question marks and line breaks — abbreviations and decimals left intact.
Divide any cue on screen longer than your limit into evenly timed pieces — the pieces and their times worked out from the duration.
Cut one subtitle file into parts by the clock — every cue keeps its own timings and number, and the parts come back as one zip.
Give the length of the video and the subtitle file is stretched or compressed to fit it — the ratio is measured from the file itself.
Move a whole file so its first subtitle starts at the time you give — 00:00:00,000 removes a lead-in, and no cue can be pushed off the front.
Keep only the stretch inside a time window — cues entirely outside are dropped, cues across an edge are cut there, and nothing is uploaded.

Text and styling

Put a UTF-8 byte order mark in front of a subtitle file for players and tools that read the opening bytes — nothing is uploaded.
Even out the lines a cue already has — the line count stays the same and the words move between the lines until the longest one is as short as it can be.
Give each line the one capital it is missing and change nothing else — safe on a file that is already right, and it skips leading dashes and quotes.
Paint every line of a subtitle file in one colour, keeping its bold, italic and karaoke timings — no upload, and the old colours are replaced rather than stacked.
Move every cue to one of nine screen positions — or strip the position markers off a file — by writing a {\anN} alignment code that ASS reads natively and SRT players mostly honour.
Write a subtitle file out as UTF-8, UTF-8 with BOM, UTF-16LE or Windows-1252 — characters the target cannot carry are counted.
Switch subtitle line endings between LF and CRLF, mixed files included — every cue, timecode and cue number is left exactly as it was.
Rewrite every subtitle line in lower case for a platform that asks for it, with acronyms and names lowered too — the file never leaves your browser.
Lower each line and then rebuild it as sentences, capitalising the first word and every sentence start — the quickest fix for a file in capitals.
Capitalise the first letter of each word and leave the small ones alone — brand names and acronyms that already have capitals are left as they are.
Rewrite every subtitle line in capitals, ready for a delivery spec that asks for it — nothing is uploaded and the timecodes are untouched.
Replace text inside every subtitle cue in a file — literal search, whole-word and case options, styling kept where it still fits.
Read a subtitle file as Shift-JIS, GBK, Big5, EUC-KR, Windows-1251 or ISO-8859-1 when automatic detection shows the wrong text.
Merge two subtitle files into one, putting both languages on a single line with a separator you choose — paired by timing, nothing uploaded.
Merge two subtitle files without moving the first one's timing — cues in the second file that match nothing are dropped and counted in the report.
Keep one language from a bilingual subtitle file and drop the other — the kept language comes out as a single subtitle file, nothing uploaded.
Cap how many lines one subtitle may occupy: cues over the count are packed down to it, and cues already within it come through untouched.
Combine two subtitle files into one bilingual file, pairing the cues by their timing and keeping both languages — nothing is uploaded.
Rewrite subtitle text with a regular expression — capture groups, flags, and matches that carry a different replacement each time.
Clear the override codes out of an ASS or SSA file — styling, karaoke timing, leftover {...} blocks and positioning — leaving plain timed text.
Take the bold off every subtitle line and leave italics, underlines and colours in place — your file never leaves the browser tab.
Delete everything inside paired square brackets — the sound and music cues a captioned file carries — and close the gap the removal leaves behind.
Drop the colour and font ranges from every subtitle line so the text reads in the player's own styling — nothing is uploaded and no cue moves.
Strip the markup out of subtitle text, including the speaker and class tags a WebVTT file can carry, so what is left is plain readable dialogue.
Strip every italic range from a subtitle file while the words stay exactly as they are — nothing is uploaded and every cue keeps its timing.
Put every subtitle cue on a single line — line breaks inside a cue are joined, with the timings and cue numbers left exactly as they were.
Take the note symbols out of your subtitles, and with them the sung lines they wrap, while the spoken cues in the same file keep every word and every timecode.
Strip the parenthesised remarks a hearing-impaired track carries, matched by bracket shape alone — no upload, and the spoken lines come back untouched.
Clear a subtitle file of its hearing-impaired notes in one run — speaker labels, bracketed asides, parenthesised remarks and music cues — without uploading anything.
Drop the all-capitals name and colon at the start of each line, so a captioned file reads as plain dialogue with its timing and text otherwise intact.
Take the byte order mark off a subtitle file for build scripts and strict parsers — nothing is uploaded and no cue is touched.
Strip the timecodes printed inside cue text — [00:01:23] and friends — while leaving sound cues, clock times and frame timecodes alone.
Remove underlined ranges from a subtitle file without touching the text, the timecodes or the other styling on the same line — no upload.
Split a bilingual subtitle file into two — one language per file, decided from the writing system each line is written in. Nothing is uploaded.
Break only the lines that are longer than your column count — every line already within it is left byte for byte as it was, in place.
Remove every styling range a subtitle file carries — italic, bold, underline, colour and karaoke timing — leaving the words and the timing untouched.
Re-flow every cue to a column count you set — over-long lines break at a word, short lines join up, and dashes that mark a speaker stay put.

Quality checks

List every cue that holds no text at all — a subtitle occupying the timeline while showing nothing, which no reading of a file makes correct.
List every stretch of blank screen wider than the limit you set, measured from the last cue that was still on screen rather than from the cue before it.
Report files whose cues were not in time order, using the reorder the reader had to perform — so the answer does not depend on which subtitle format you happen to hold.
List every cue that starts before the previous one has finished — a report you can download, with the cue numbers, the times and the overlap measured in milliseconds.
Report cues whose recorded end time was not later than their start time — zero-length and back-to-front timecodes alike, counted while the file was being read.
List every cue with no letters in it: music notes, bare numbers, dashes. Captions use these on purpose, so the report flags them for a look rather than as faults.
List every cue still on screen after the maximum you set — subtitles that outstay their line, with the measured duration and your limit printed next to each one.
List every cue on screen for less time than the minimum you set, with the measured duration and your limit side by side. Nothing in the file is changed.
Run every structural check at once — overlaps, gaps, empty cues, out-of-order cues, impossible durations and odd ones — and report the count for each in one pass.

Accessibility compliance

Run the whole check against the European accessibility standard, which adopts WCAG 2.2 SC 1.2.2 as a requirement — the same file reads as an error here and a warning there.
Measure every subtitle line against Netflix's 42-character and the BBC's 37-character limits, line by line, and download the report. The file is never uploaded.
List every cue still on screen after Netflix's seven seconds, with the duration it measured, the limit it was compared against and the sentence that limit was read from.
List every cue on screen for less than Netflix's five sixths of a second (834 ms), with the measured duration and the sentence the limit came from.
Measure how fast every cue has to be read, checked against Ofcom's 180 words per minute or Netflix's 20 characters per second, and download the report.
List every cue where two people speak but neither is named, checked against FCC 47 CFR §79.1 and WCAG 2.2 SC 1.2.2, and download the report.
Run the whole check against Ofcom's published guidance, whose only figure is a reading speed of 180 words per minute — the report shows what the rest of the document leaves open.
Run the whole check against 47 CFR §79.1 — four of the five checks come back with no figure to compare against, because that rule states none, and the report says so.
Run the whole check against Netflix's numbers at once — 20 characters per second, 42 characters a line, 834 ms to 7 seconds a cue — and name the rule it cannot check yet.

Timecode

Export and integration

Media input