SUB to JSON Converter

Convert SUB subtitles to JSON instantly in your browser.

Accepts
SUB
OutputJSON

Drop your subtitle file here

or click to browse (multiple files supported)

Supported: SUB

Your converted subtitles will appear here.

About Converting SUB to JSON

Converting a SUB (.sub) file to JSON turns MicroDVD's frame-numbered subtitles into plain structured data with real millisecond timestamps, each cue becomes one JSON object your script or player can consume without doing the frame-to-time math yourself.

What is MicroDVD (SUB)?

MicroDVD (.sub) is a frame-based subtitle format that times each line by frame number rather than by clock time. It is common with older desktop and DVD players.

What is JSON Subtitle Export?

JSON (.json) is a structured, machine-readable data format, not a subtitle format any media player reads, but the format developers and data pipelines actually want. Each cue becomes an object with its index, start/end timecodes in both human-readable (HH:MM:SS,mmm) and raw-millisecond form, and the cue text with inline styling tags stripped. It's the export to reach for when you're building a custom player, feeding a subtitle-review tool, or processing captions programmatically instead of opening them in a video app.

About SUB to JSON Conversion

  • One object per cue: each MicroDVD {startFrame}{endFrame}text line becomes a JSON object with explicit index, start/end timecodes, and text fields.
  • Frame numbers converted using a frame rate: SUB stores timing as frame counts, not time, so each frame is divided by an FPS value to get milliseconds. If the file's first line carries an FPS marker ({1}{1}25), that rate is detected and used automatically; otherwise the converter assumes 23.976 fps (standard NTSC film rate), pick a different source frame rate before converting if your file uses another rate (25 for PAL is common).
  • Pipe line breaks become real newlines: MicroDVD uses | to separate lines within one cue (e.g. Hello|world); the JSON's text field keeps this as an actual line break (\n) between the two lines.
  • MicroDVD formatting tags stripped: inline styling markup in the source is removed, only plain text with the pipe-derived line breaks ends up in the JSON.

Timecodes are converted to JSON timing precision with no loss of sync.

What You Lose vs What You Gain

What You Lose in Conversion

  • Frame-number timing (tied to the video frame rate)

What You Gain in Conversion

  • Structured, parseable output any programming language can consume without writing a subtitle parser
  • One object per cue with explicit index/start/end/text fields, no line-based format to parse
  • Millisecond-precision timestamps alongside human-readable timecodes, ready for custom players and data pipelines

When to Convert SUB to JSON

Data Pipelines & Analysis

Feed cue timing and text into a script, notebook, or ETL pipeline without writing a subtitle-format parser first.

Custom Video Players

Load structured cue data directly into a custom-built player or captioning UI that expects JSON, not a subtitle file.

Review & QA Tooling

Feed cue data into a review dashboard, translation-QA tool, or automated subtitle-quality check.

Frequently Asked Questions

Can I convert the JSON output back into a SUB file?

Not with this tool: JSON export is one-directional. It's meant for feeding cue data into scripts, custom players, or review tooling, not as a round-trippable subtitle format. Keep your original .sub file if you need it back.

Why do the JSON timestamps look wrong for my SUB file?

MicroDVD .sub files store frame numbers, not time, converting them to milliseconds requires the correct frame rate. If your file has no FPS marker on its first line, this tool assumes 23.976 fps by default. If your source video actually runs at 25, 24, or 29.97 fps, select that rate before converting or the JSON timestamps will drift.

What happens to the <code class="bg-gray-100 px-1 rounded text-sm">|</code> characters in my SUB file?

MicroDVD uses | to mark a line break within a single cue. In the JSON output, each | becomes an actual newline inside that cue's text field, so multi-line cues are preserved as multiple lines, not literal pipe characters.

Tips for Converting SUB to JSON

JSON export is one-way: there is no JSON-to-SUB converter, since JSON here is a data-interchange format for scripts and pipelines, not a subtitle format any player reads back.

Know your FPS before converting: if the resulting timestamps look off, your file likely doesn't carry an FPS marker and used a different frame rate than the 23.976 default, check the source video's frame rate with VLC (Tools → Media Information → Codec Details) or MediaInfo and select it before converting.

Use the startMs/endMs fields for programmatic timing math instead of re-deriving milliseconds from the source frame numbers yourself.