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

NeedBest target
YouTube, social platforms, common video playersSRT
Simple captions with start/end timingSRT
Fonts, colors, borders, screen positionASS
Anime fansubs or karaoke timingASS

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.