JSON subtitle format

Overview

JSON is not a formal subtitle standard — each tool defines its own schema. But a common pattern has emerged: an array of cue objects, each with a start time, end time and text. This is useful for loading subtitles into JavaScript video players, processing them programmatically and exporting from subtitle tools.

Common schema

[
  {
    "id": "1",
    "start": 1000,
    "end": 4000,
    "startTime": "00:00:01.000",
    "endTime": "00:00:04.000",
    "text": "Hello and welcome."
  },
  {
    "id": "2",
    "start": 5500,
    "end": 8750,
    "startTime": "00:00:05.500",
    "endTime": "00:00:08.750",
    "text": "This is the second cue."
  }
]

Fields

Only start, end and text are needed to reconstruct a subtitle file. id is useful for tracking. startTime and endTime are helpful for humans but redundant.

Alternate schemas

Different tools use different schemas. Common variations:

Subtitle Convert accepts the common fields and falls back to time-string parsing when numeric fields are missing.

Use cases

Converting between JSON and subtitle formats

Learning more