Skip to content
CutConvert
Pricing
Post-production file converter

Convert JSON to SRT subtitles

Turn timed transcript JSON or YouTube chat replay JSON/JSONL into SRT. For a custom export, map the text and timestamp fields yourself.

Convert your files

Drop files here

browseWhisper or transcript JSONConverted in your browser. Files never leave your device.About an hour of footage is free. Bigger files: $3 a file, or Pro.

up to 2 files · 2 MB each

Pricing

Converting as a guest. A free account has no monthly cap within the free size cap.

Queue
0/2
No files yet. Drop one above to start.

How to convert JSON to SRT

Drop a supported timed JSON transcript to preview and download SRT subtitles. Whisper exports with timestamped segments convert as they are. For an unfamiliar JSON layout, map the array, text and timestamp fields under Delivery settings. A transcript without timestamps can't supply original timing. For encrypted data, use a supported export from its source app.

  1. Add your JSON files

    Drag your Whisper or transcript .json files onto the drop zone, or click to browse.

  2. Convert JSON to SRT

    Press Convert. Each timed segment becomes an SRT cue with millisecond timing, and speaker fields become labels.

  3. Download your result

    Download the converted file, or one ZIP when you convert a batch.

Try JSON to SRT with a sample

See the source file and its converted result before using your own files. Use “Try a sample” in the converter to preview the same input.

See an excerpt of the sample input
{
  "task": "transcribe",
  "language": "english",
  "text": "Welcome back to the cutting room. Today we're converting subtitles in seconds.",
  "segments": [
    { "id": 0, "start": 1.0, "end": 4.0, "text": " Welcome back to the cutting room.", "avg_logprob": -0.2, "no_speech_prob": 0.01 },
    { "id": 1, "start": 4.2, "end": 7.5, "text": " Today we're converting subtitles in seconds.", "avg_logprob": -0.19, "no_speech_prob": 0.01 },
    { "id": 2, "start": 7.8, "end": 11.4, "text": " Drop a whole batch and get one tidy ZIP back.", "avg_logprob": -0.21, "no_speech_prob": 0.02 }
  ]
}
  1. Upload timed JSON and check the detected dialect in the preview.
  2. For an unfamiliar schema, enable Custom JSON fields and specify the array, text, start, end and time units.
  3. Download SRT and import it as captions in your editor; check timing against the source.

Missing timestamps and encrypted drafts cannot be recovered by mapping field names. Re-export timed captions from the source app.

Synthetic examples. Downloaded outputs are checked against the conversion engine; this does not certify an import in your editor version.

Back to the converter

Transcript JSON and SRT subtitles, explained

AI transcription tools output JSON, and players and editors want SRT. This converter accepts the JSON shapes in common use: OpenAI Whisper verbose_json (segments with start/end in seconds), whisper.cpp (transcription arrays with millisecond offsets), and generic arrays of {start, end, text} segments. Transcript timing comes from the file. Chat replays keep message start offsets and use estimated display durations, with a warning to review.

Turn timed transcript JSON or YouTube chat replay JSON/JSONL into SRT. For a custom export, map the text and timestamp fields yourself. It is free to start, encrypted in transit, and converts a whole batch into one ZIP — sign in when you need large, high-volume jobs.

JSON to SRT FAQ

Can I convert YouTube live-chat replay JSON?

Yes. Upload the .live_chat.json or JSONL file from yt-dlp. Messages keep their replay offsets and author names. Display durations are estimated, up to six seconds. Simultaneous messages can overlap. The result is chat captions, not a transcript of the spoken audio. Live captures may need timecode alignment.

Can I turn a Twitch chat log into subtitles?

Yes. Drop the chat JSON that TwitchDownloader writes (Chat Download, JSON format). Each message becomes a subtitle line with the commenter's name. Messages that arrive within two seconds share one cue of up to three lines. A cue stays on screen until the next one, or for six seconds. Any subtitle-capable editor or player can burn the result in as a chat replay.

Which JSON formats are supported?

OpenAI Whisper verbose_json (a segments array with start/end in seconds), whisper.cpp output (a transcription array with offsets or timestamps), and generic arrays of {start, end, text} objects. Speaker fields are optional, and times can be in seconds or milliseconds.

How do I get verbose_json out of Whisper?

With the OpenAI API, set response_format to verbose_json. If you run Whisper locally, the default .json output works, and so does whisper.cpp's --output-json file.

My JSON only has a plain text field. Can it be converted?

No. SRT needs start and end times for each segment, and a bare text transcript has none. Re-export with segment timing (verbose_json for Whisper) and it will convert.

Are speaker labels from diarization kept?

Yes. Segments with a speaker field come out as labeled SRT cues, so diarized transcripts keep their speakers.

What if my file is a Premiere Pro transcript JSON?

Use the Premiere Transcript to SRT converter at /prtranscript/srt. It reads Premiere's transcript format directly, including binary .prtranscript files.

Guides for this workflow

Questions, answered

Where are my files processed?

In your browser. The file never leaves your computer, and CutConvert only records that a conversion happened. We never see, store, sell or share your media.

Is it free? Do I need an account?

Files up to about an hour of footage convert free on every converter. CapCut projects are free up to 500 KB. Guests get five conversions a month; a free account has no monthly cap within the free size caps. Bigger files are $3 each, or $5 for a project conversion from one program to another. Pro is $9 a month ($90 a year) for files up to 50 MB. Studio is $19 a month ($190 a year) for files up to 500 MB.

What do I get when I convert multiple files?

One ZIP with every converted file. A single file comes back on its own. Press + to add more output formats: they go in the same ZIP, and each file still counts as one conversion.

Which formats are supported?

Projects in: Premiere .prproj, DaVinci Resolve .drp, Avid AAF and bins, Final Cut FCPXML, CapCut drafts and Audition sessions. Projects out: FCP7 XML, FCPXML, Resolve .drp, AAF, CapCut and REAPER, plus CMX 3600 EDL and shot-list CSV. Transitions, markers, titles, keyframes, levels, speed changes and nested sequences carry over wherever the target app can hold them. Captions: SRT, WebVTT, SBV, ASS, TTML, DFXP, iTT, SCC, MCC, EBU-STL, Avid caption TXT, timed CSV, Word and plain text. Transcripts: Whisper, WhisperX, AssemblyAI, Deepgram, Rev.ai and CapCut JSON, Premiere transcript JSON and .prtranscript, and Rev, Otter and Word-style text. Styling, placement and speakers come along where the output supports them.

Can I pick a frame rate?

Yes. For EDL and Avid caption output, choose 23.976, 24, 25, 29.97 or 30 fps, or let CutConvert detect it from your source.