All Tools View Categories About Contact Privacy

Universal Subtitle Converter

One converter for SRT, ASS, VTT, SBV, SAMI, DFXP, SUB, CAP, CSV, JSON, XML and plain text.

Runs entirely in your browser — no data is uploaded or stored.

Use the frame rate field for SUB/CAP; the optional offset shifts all cues before conversion.

About this tool & how to use it
  • Twelve output formats: the Target format menu covers SRT, ASS, VTT, SBV, SAMI, DFXP, SUB, CAP, CSV, JSON, XML and TXT, so one page replaces a shelf of single-purpose converters.
  • Frame-based targets supported: SUB and CAP are generated using the value in Frame rate (for SUB/CAP), which lets you produce frame-locked files at 23.976, 25, 29.97 or any other rate your master uses.
  • Global time shift: Shift by (ms, +/-) is applied to every cue before writing, so you can correct a consistently late or early track in the same operation as the format change.
  • Data-friendly exports: the CSV and JSON targets keep start, end and text as distinct fields, making them easy to load into a spreadsheet, a translation memory or a script.
  • Transcript output: choosing the plain-text target strips timing entirely, which is the fastest way to get a readable transcript for a blog post, show notes or a search index.
  • One consistent workflow: paste once, switch Target format and press Run again to produce a second deliverable from exactly the same cue data.
  • Local and unlimited: conversion is client-side JavaScript with no upload, no account and no cap on how many files you push through it.
  1. Paste your SubRip captions into the SRT Content box, or click Load sample to experiment with example cues first.
  2. Choose your deliverable from the Target format menu - VTT for a web player, ASS for styling, DFXP or SAMI for a legacy platform, CSV or JSON for translation, TXT for a transcript.
  3. If you picked SUB or CAP, type the master's frame rate into Frame rate (for SUB/CAP); for every other target you can leave that field alone.
  4. Enter a value in Shift by (ms, +/-) only when the source timing needs correcting, using a negative number to move cues earlier.
  5. Press Run and read the output panel to confirm the format looks right - dot timestamps for VTT, Dialogue lines for ASS, frame counts for SUB.
  6. Click Copy or Download to save the result, then rename the downloaded file with the extension your target format expects.
  7. To produce another deliverable from the same captions, just change Target format and press Run again - the source text stays where it is.

Example 1 - the same cue as WebVTT. With Target format set to VTT, timestamps switch from comma to dot and the cue number is dropped.

Input (SRT):
1
00:00:01,000 --> 00:00:04,000
Welcome to the harbour tour.

Output (VTT):
WEBVTT

00:00:01.000 --> 00:00:04.000
Welcome to the harbour tour.

Example 2 - the same cue as frame-based SUB. Choose SUB and set Frame rate (for SUB/CAP) to 25, and the timing is expressed as frame numbers instead of clock time: {25}{100}Welcome to the harbour tour. One second in is frame 25, four seconds in is frame 100.

Example 3 - the same cue for translators. With CSV selected the row reads 1,00:00:01,000,00:00:04,000,"Welcome to the harbour tour.", which opens directly in a spreadsheet so a translator can work column by column without touching a single timestamp.

About Universal Subtitle Converter

The Universal Subtitle Converter takes one SubRip file in the SRT Content box and writes it out in whichever format you choose from the Target format menu: SRT, ASS, VTT, SBV, SAMI, DFXP, SUB, CAP, CSV, JSON, XML or plain text. Twelve outputs, one paste, one click - and the result can be copied or downloaded straight from the page.

Most subtitle work is not one conversion, it is five. The same programme needs VTT for the website player, ASS for the styling pass, SBV for an older upload path, SAMI or CAP for a legacy client, CSV or JSON for the translation memory and the localisation spreadsheet, and plain text for the transcript on the blog. Hopping between single-purpose converters means twelve interfaces, twelve sets of quirks and twelve chances to lose the timing you just fixed. Localisation vendors, e-learning teams, YouTubers running multi-language channels and accessibility coordinators use a universal subtitle converter precisely to avoid that.

Internally there is one pipeline. The SubRip source is parsed into a list of cues with millisecond start and end times; the value in Shift by (ms, +/-), if you supply one, is added to both ends of every cue; then the writer for your chosen target runs. Two of the targets are frame based - SUB and CAP - so those use the Frame rate (for SUB/CAP) field to turn milliseconds into frame counts; for every other format that field is simply ignored. The data formats behave as you would hope: CSV and JSON keep start, end and text as separate values so they can be fed to a translation tool, while the plain-text output drops timing altogether for a clean readable transcript.

Everything runs in your browser with no upload, so even long or confidential files convert instantly and privately.

Features

  • Twelve output formats: the Target format menu covers SRT, ASS, VTT, SBV, SAMI, DFXP, SUB, CAP, CSV, JSON, XML and TXT, so one page replaces a shelf of single-purpose converters.
  • Frame-based targets supported: SUB and CAP are generated using the value in Frame rate (for SUB/CAP), which lets you produce frame-locked files at 23.976, 25, 29.97 or any other rate your master uses.
  • Global time shift: Shift by (ms, +/-) is applied to every cue before writing, so you can correct a consistently late or early track in the same operation as the format change.
  • Data-friendly exports: the CSV and JSON targets keep start, end and text as distinct fields, making them easy to load into a spreadsheet, a translation memory or a script.
  • Transcript output: choosing the plain-text target strips timing entirely, which is the fastest way to get a readable transcript for a blog post, show notes or a search index.
  • One consistent workflow: paste once, switch Target format and press Run again to produce a second deliverable from exactly the same cue data.
  • Local and unlimited: conversion is client-side JavaScript with no upload, no account and no cap on how many files you push through it.

How to Use

  1. Paste your SubRip captions into the SRT Content box, or click Load sample to experiment with example cues first.
  2. Choose your deliverable from the Target format menu - VTT for a web player, ASS for styling, DFXP or SAMI for a legacy platform, CSV or JSON for translation, TXT for a transcript.
  3. If you picked SUB or CAP, type the master's frame rate into Frame rate (for SUB/CAP); for every other target you can leave that field alone.
  4. Enter a value in Shift by (ms, +/-) only when the source timing needs correcting, using a negative number to move cues earlier.
  5. Press Run and read the output panel to confirm the format looks right - dot timestamps for VTT, Dialogue lines for ASS, frame counts for SUB.
  6. Click Copy or Download to save the result, then rename the downloaded file with the extension your target format expects.
  7. To produce another deliverable from the same captions, just change Target format and press Run again - the source text stays where it is.

Examples

Example 1 - the same cue as WebVTT. With Target format set to VTT, timestamps switch from comma to dot and the cue number is dropped.

Input (SRT):
1
00:00:01,000 --> 00:00:04,000
Welcome to the harbour tour.

Output (VTT):
WEBVTT

00:00:01.000 --> 00:00:04.000
Welcome to the harbour tour.

Example 2 - the same cue as frame-based SUB. Choose SUB and set Frame rate (for SUB/CAP) to 25, and the timing is expressed as frame numbers instead of clock time: {25}{100}Welcome to the harbour tour. One second in is frame 25, four seconds in is frame 100.

Example 3 - the same cue for translators. With CSV selected the row reads 1,00:00:01,000,00:00:04,000,"Welcome to the harbour tour.", which opens directly in a spreadsheet so a translator can work column by column without touching a single timestamp.

Benefits

  • One tool, every deliverable: you stop hunting for a converter each time a client names a format you have not been asked for in a year.
  • Consistent timing across versions: because every output comes from the same parsed cue list, the VTT, the ASS and the CSV all agree to the millisecond.
  • Faster multi-platform publishing: a single caption pass can be fanned out to a web player, a legacy client and a localisation vendor in a couple of minutes.
  • Smoother translation handoff: CSV and JSON exports let translators work in the tools they already use, which cuts revision cycles and mistyped timecodes.
  • Fewer sync excuses: the offset field means a known timing error is fixed once, at conversion, rather than separately in each exported format.
  • Confidential by default: nothing is uploaded, so client footage and unreleased scripts stay on your machine no matter how many formats you generate.

Frequently Asked Questions

Which formats are supported?
SRT, ASS, VTT, SBV, SAMI, DFXP/TTML, SUB (MicroDVD, frame-based), CAP, CSV, JSON, XML and plain text.
When do I need the frame rate?
Only for frame-based outputs (SUB and CAP). Set it to match your video standard so frame numbers are correct.
Can I shift timing?
Yes, the optional offset shifts every cue by a fixed number of milliseconds before conversion.
Is my file uploaded?
No, all conversion happens in your browser.