JSON to SRT Converter

Upload a JSON transcript, let the tool detect the schema, and export a clean SRT file with timestamps, text and optional speaker labels.

Best for most videos

Drop your .json file here

Your JSON file is converted locally in your browser. No upload required.

JSON converted to subtitles successfully!

Detected format:
Subtitle blocks created:
Invalid segments skipped:
Edit in AI Studio
Check the SRT after conversion

Automatically generated SRT files should be validated briefly and, for important videos, checked visually for timing.

Validate SRT Edit in Studio

What is a JSON to SRT converter?

Speech-to-text services such as OpenAI Whisper, AWS Transcribe and Google Cloud Speech-to-Text often export JSON instead of ready-to-use subtitles. These files may contain timings, words, sentences, alternatives and speaker data. This converter reads that structure, extracts start time, end time and text, and turns it into a standard SubRip subtitle file.

How do you convert JSON to SRT?

Raw JSON cannot be uploaded directly to YouTube or reliably imported into Adobe Premiere, DaVinci Resolve or Final Cut Pro. It first has to become a linear subtitle track: index number, start time, end time and visible text. The tool handles that conversion automatically.

Examples: JSON input to SRT output

This page goes beyond a tiny one-format converter by showing real API structures. You can quickly see whether your JSON file looks similar and why it can become a valid SRT file.

Whisper JSON to SRT

Whisper exports commonly include a segments array. Each entry usually has start, end and text, which maps cleanly to SRT subtitle blocks.

JSON input

{
  "segments": [
    { "start": 0.00, "end": 2.40, "text": "Welcome to the video." },
    { "start": 2.40, "end": 5.10, "text": "Today we walk through the workflow." }
  ]
}

SRT output

1
00:00:00,000 --> 00:00:02,400
Welcome to the video.

2
00:00:02,400 --> 00:00:05,100
Today we walk through the workflow.

AWS Transcribe JSON to SRT

AWS Transcribe often returns individual words and punctuation in results.items. The tool groups those word items into readable subtitle blocks and can keep speaker labels when they exist.

JSON input

{
  "results": {
    "items": [
      { "type": "pronunciation", "start_time": "0.00", "end_time": "0.55", "alternatives": [{ "content": "Hello" }], "speaker_label": "spk_0" },
      { "type": "pronunciation", "start_time": "0.56", "end_time": "1.10", "alternatives": [{ "content": "Maik" }], "speaker_label": "spk_0" },
      { "type": "punctuation", "alternatives": [{ "content": "." }] }
    ]
  }
}

SRT output

1
00:00:00,000 --> 00:00:01,100
spk_0: Hello Maik.

Google Speech-to-Text JSON to SRT

Google Speech-to-Text usually stores words under results[].alternatives[].words[]. Start and end values often use seconds with an s suffix, such as 1.200s.

JSON input

{
  "results": [
    {
      "alternatives": [
        {
          "words": [
            { "startTime": "0s", "endTime": "0.700s", "word": "This", "speakerTag": 1 },
            { "startTime": "0.700s", "endTime": "1.400s", "word": "works", "speakerTag": 1 }
          ]
        }
      ]
    }
  ]
}

SRT output

1
00:00:00,000 --> 00:00:01,400
Speaker 1: This works

Supported fields and automatic schema detection

JSON is a data format, not a subtitle format. Different transcription providers use different field names. The converter checks common key variations and can also search nested arrays when your file does not exactly match the Whisper, AWS or Google layout.

Field Recognized keys Use in SRT
Start timestart, start_time, startTime, from, beginbecomes the SRT block start time
End timeend, end_time, endTime, to, finishbecomes the SRT block end time
Texttext, transcript, content, sentence, valuebecomes the visible subtitle text
Speakerspeaker, speaker_label, speaker_id, speakerTagcan be written as a prefix before the text

Speaker labels in SRT files

Many transcription services provide speaker information as speaker, speaker_label, speakerTag or a similar field. When “include speaker labels” is enabled, the converter writes that information directly into the subtitle text.

SRT has no dedicated technical speaker field. In practice, speakers are stored as a text prefix, which is useful for interviews, podcasts, meetings, courses and support recordings.

1
00:00:00,000 --> 00:00:02,200
Speaker 1: Welcome to the conversation.

2
00:00:02,300 --> 00:00:04,800
Speaker 2: Thanks for inviting me.

Providers and typical JSON structures

The table below shows the structures this tool actively recognizes. It also tries to detect generic arrays with start time, end time and text automatically.

Provider Typical JSON structure Supported? Note
OpenAI Whispersegments[] mit start, end, textYes, directlySegment-based structure, ideal for direct SRT output.
AWS Transcriberesults.items[] plus optional speaker_labelsYes, directlyWord-level data is grouped into readable subtitle blocks.
Google Speech-to-Textresults[].alternatives[].words[]Yes, directlyWord arrays with second-based timings are grouped and sorted.
Generic JSONArray or nested array with start, end and textYes, when fields existWorks when clear timing and text fields are available.

Are my JSON transcripts safe?

Yes. The conversion runs locally with JavaScript in your browser. Your JSON file is not uploaded to a server. That matters because transcripts often contain internal meetings, client material, draft scripts or unreleased video content.

Limits of automatic JSON detection

The tool can only create subtitle segments when the JSON file contains usable timing data. A text-only JSON file without start and end times cannot be converted reliably to SRT because SRT requires timestamps. If your file contains only text, use a TXT to SRT converter or synchronize the text later in the Studio.

After conversion: validate the SRT or fine-tune the timing

JSON transcripts often come from automatic speech recognition. It is worth checking the generated SRT for timing, empty blocks and readability before publishing.

Open SRT Validator Edit in Studio

How to convert JSON to SRT online

1

Upload JSON file

Choose a JSON transcript from Whisper, AWS, Google or a similar speech-to-text system.

2

Detect the format automatically

The tool recognizes known schemas and searches for segments, word lists, timing fields and optional speaker information.

3

Save the SRT file

Download the generated SRT file and, when needed, check it in the SRT Validator or Studio.

Frequently asked questions

Which JSON transcript formats are supported?

Typical exports from OpenAI Whisper, AWS Transcribe and Google Cloud Speech-to-Text are supported, as well as generic JSON arrays with start time, end time and text.

Can I control the length of each subtitle block?

Yes. You can choose short, normal or long subtitle blocks. This is especially useful when AWS or Google JSON contains individual word data.

Does this converter support speaker labels?

Yes. If speaker information exists in the JSON file, the tool can write it as a text prefix in the SRT output.

Is my JSON file private?

Yes. Conversion happens entirely in your browser. No file is uploaded to a server.

Why can’t JSON without timestamps be converted to SRT?

SRT needs a start and end time for every subtitle block. If the JSON contains only text, the required timing data is missing.

Can AWS word data be turned into full subtitle lines?

Yes. The tool groups individual words and punctuation into readable subtitle blocks automatically.

What should I check after converting JSON to SRT?

Review timing, sentence length, speaker labels and empty blocks. For technical issues, run the file through the SRT Validator.