Turn a SUB subtitle file into a TXT text file in a few clicks, then download the converted result instantly.
A .sub file in the MicroDVD style is dialogue buried under frame numbers and curly braces — {1440}{1560}Come in. on every line. Converting to .txt throws away the machinery and leaves you the words, ready to paste into a document, feed to a translator, or search. It is also the only .sub conversion where the format's awkward frame-rate dependency stops mattering entirely, because the output carries no timing to get wrong.
The output is dialogue only, with one blank line between subtitles and no numbers, timecodes or markup of any kind. A two-line subtitle stays two lines, because MicroDVD's | separator is expanded into a real line break before the text is written out. So a three-cue file comes back as three paragraphs, the third of which wraps across two lines exactly where the pipe was.
| Element in the .sub | Result in the .txt |
|---|---|
| Cue text | Kept verbatim, in original order |
{startFrame}{endFrame} |
Removed — no timing survives |
| line separator |
Becomes a real line break inside the paragraph |
| Gap between cues | One blank line |
{y:i} {y:b} {y:u} style codes |
Stripped, with their braces |
{c:$BBGGRR} colour, {f:} font, {s:} size, {P:x,y} position |
Stripped |
| Cue numbering | None — plain text has no index |
| A cue with no text | Leaves an extra blank line where it was |
The result is genuinely plain: no markup is left behind for a word processor or translation tool to trip over.
Every other target in this family — SRT, VTT, SSA, STL, TTML — has to turn MicroDVD's frame indices into times, and the frame rate needed to do that is not reliably stored in the file. The convention is a first line reading {1}{1}23.976; this converter does not interpret it, and assumes 25 fps with no control to change that. Plain text sidesteps the whole question, since it keeps no timing at all. Two quirks of the source still reach the transcript, and both are easy to fix:
{1}{1}23.976 matches the ordinary cue pattern, you get a stray paragraph reading 23.976 at the top. Delete the line from the input, or the paragraph from the output.One more thing to check before you rely on the transcript: MicroDVD files from the 2000s are often written in a legacy code page such as Windows-1250 rather than UTF-8. The browser reads uploaded files as text and cannot guess a legacy encoding, so accented characters may arrive as mojibake. Re-save the .sub as UTF-8 in a text editor first.
| If you want to… | Convert to | Why |
|---|---|---|
| Read, translate or search the dialogue | TXT | No timing, no markup, nothing to strip afterwards |
| Play the subtitles with a video | SRT | Absolute millisecond times, read by essentially every player |
Attach subtitles to an HTML5 <video> |
VTT | The only format a browser loads through <track> |
| Style or typeset the subtitles | SSA or ASS | Named styles, fonts, margins, a real header |
| Work with timings in a spreadsheet | CSV | Start, end and text as three columns |
If the transcript is a stepping stone and you will want the timings back later, keep the original .sub — text is a one-way door, and there is no way to rebuild cue boundaries from a bare transcript.
None. That is the point of the format: you get the dialogue, one subtitle per paragraph, with no frame numbers, no timecodes and no index numbers. If you want the words and the timings in a form you can work with, convert to CSV instead, which lays out start, end and text as three columns — SUB to CSV does that.
They stay two lines. MicroDVD writes a line break inside a cue as a | character, and the parser expands it into a real newline, so {100}{200}Line one|Line two becomes two lines in one paragraph rather than a single line containing a stray pipe. We ran a three-cue sample containing exactly that case through the parser this page uses, and the pipe came back as a line break with the paragraph intact.
{y:i} show up in my transcript?No. MicroDVD's inline codes — {y:i} for italic, {y:b} for bold, {c:$0000ff} for colour, {f:} for font, {s:} for size, {P:x,y} for position — are stripped together with their braces, so the transcript contains only the spoken text. Nothing is translated into asterisks or markdown either; it is genuinely plain.
That is the frame-rate declaration from the top of your .sub file. Authoring tools write it as {1}{1}23.976, which is indistinguishable from a real subtitle to this parser, so it comes through as one. Delete it from the input before converting, or from the transcript afterwards — it is always the first paragraph.
Almost certainly a UTF-8 byte-order mark at the start of the file. The parser matches cues from the beginning of each line, and an invisible BOM in front of the first { stops line one matching, so it is skipped without an error. Re-save the file as UTF-8 without BOM, or paste the contents into the input box instead of uploading it.
No, and it is worth checking before you try. That pairing is VobSub, a DVD subtitle format in which the .sub holds bitmap images of each subtitle rather than text — there is nothing for a text converter to extract, and you need OCR software such as Subtitle Edit. The quick test: open the file in a text editor. MicroDVD is readable lines full of curly braces; VobSub is binary noise.
No. This page converts entirely in your browser: the file is read locally, parsed and rewritten by JavaScript running on the page, and the download is generated in memory. The converter's code comes from us; your file does not go to us, so there is no server-side copy of it anywhere.
Yes, and for a small file it is often quicker. Paste into the Input (SUB) box and press Convert →. Pasting also sidesteps the byte-order-mark problem entirely, since you are handing the converter characters rather than raw bytes from disk.
Not with the original timings — those are gone the moment you convert to text. Feeding a .txt back into the converter produces evenly spaced cues rather than anything matching your video, so keep the original .sub if you might need real timings later. If timed output is what you actually wanted, SUB to SRT is the target to use.