Speech-to-text APIs, meeting tools, and media pipelines often export transcripts as JSON. Video players do not consume arbitrary transcript JSON, so the useful task is to map the transcript's timing and text fields into a subtitle format.
ChangeThisFile provides direct JSON to SRT and JSON to ASS routes. This guide helps choose the output and diagnose the schema problems that cause blank or mistimed captions.
The JSON needs text and timing
A subtitle cue needs text, a start time, and an end time. Field names vary by exporter: text, transcript, or caption; and start/end, millisecond offsets, or nested timestamp objects. Records also need a reliable order. JSON containing only paragraphs cannot create synchronized subtitles without timing data.
Choose SRT for reach, ASS for styling
| Need | Best target |
|---|---|
| YouTube, social platforms, common video players | SRT |
| Simple captions with start/end timing | SRT |
| Fonts, colors, borders, screen position | ASS |
| Anime fansubs or karaoke timing | ASS |
SRT's limitation is also its strength: it is plain, predictable, and widely supported. ASS carries presentation instructions but depends on a player with an ASS renderer such as libass.
Check timing and readability after conversion
Open the subtitle file beside the video and inspect the first cue, a cue near the middle, and the final cue. Confirm the source time unit: treating milliseconds as seconds creates unusable timing. Also check overlapping cues, empty text, overly long lines, and captions shorter than a comfortable reading duration.
Start with JSON to SRT unless the destination explicitly needs ASS styling. If the conversion cannot find cues, inspect the JSON structure and verify that every caption has text, start time, and end time. For styled subtitle data, use JSON to ASS.