What Is a JSON3 Subtitle File? YouTube Caption Format Explained
What is a JSON3 subtitle file? YouTube's internal caption format explained. Learn how JSON3 works, its structure, and how to convert JSON3 to SRT, VTT, or LRC.
JSON3 is the internal subtitle format used by YouTube to store and deliver captions. It is a JSON-based format where each caption event has precise millisecond timing, word-level offsets, and text segments. While not as widely known as SRT or VTT, JSON3 is essential for anyone who needs to extract YouTube captions and convert them into standard subtitle formats.
What Does JSON3 Mean?
JSON3 refers to the JSON-based timedtext format used by YouTube's captioning system. The "3" denotes the third version of YouTube's timed text API response format. Unlike plain-text formats such as SRT, JSON3 stores caption data as structured JSON objects, allowing for word-level timing, styling metadata, and automatic caption alignment.
How JSON3 Files Work
A JSON3 file contains an "events" array where each event represents a caption cue. Each event has a start time in milliseconds (tStartMs), an optional duration (dDurationMs), and one or more text segments (segs). Individual segments can include a tOffsetMs field for word-level timing precision, making JSON3 one of the most timing-accurate subtitle formats available.
When to Use JSON3
JSON3 is primarily encountered when downloading or extracting captions from YouTube videos. If you need to repurpose YouTube auto-generated or manually-created captions for use in video editing software, other platforms, or archival purposes, you will need to convert JSON3 to more widely supported formats like SRT, VTT, or LRC. AllSubConverter handles this conversion automatically.
JSON3 File Structure
{
"events": [
{
"tStartMs": 0,
"dDurationMs": 3120,
"segs": [
{ "utf8": "Hi " },
{ "utf8": "everyone." }
]
},
{
"tStartMs": 3120,
"dDurationMs": 0,
"segs": [{ "utf8": "\n" }]
},
{
"tStartMs": 3120,
"dDurationMs": 4840,
"segs": [
{ "utf8": "In " },
{ "utf8": "this " },
{ "tOffsetMs": 640, "utf8": "video," }
]
}
]
}
Advantages of JSON3
- ✓Word-level timing precision with tOffsetMs for individual words
- ✓Structured JSON format makes programmatic parsing straightforward
- ✓Preserves all timing data from YouTube auto-generated captions
- ✓Supports Unicode text including CJK characters, emoji, and all languages
Limitations of JSON3
- ⚠Not supported by standard video players or editing software
- ⚠YouTube-specific format, not an industry standard
- ⚠Requires conversion to SRT, VTT, or other formats for practical use
- ⚠File sizes are larger than plain-text formats due to JSON overhead
JSON3 Frequently Asked Questions
How do I get JSON3 subtitles from YouTube?
YouTube captions can be downloaded in JSON3 format using tools like yt-dlp or browser extensions. The JSON3 data is returned by YouTube's timedtext API when the fmt=json3 parameter is specified. Once downloaded, you can use AllSubConverter to convert the JSON3 file to SRT, VTT, LRC, or other formats.
Can I convert JSON3 to SRT?
Yes. AllSubConverter can convert JSON3 files directly to SRT, VTT, LRC, ASS, TXT, TTML, SCC, STL, and SMI formats. Simply upload your JSON3 file and select the output format. The converter preserves all timing information and text content.
What is the difference between JSON3 and SRT?
JSON3 is YouTube's structured JSON format with millisecond timestamps and word-level timing. SRT is a simpler plain-text format with second-level timestamps and no styling. JSON3 is more precise but only used by YouTube, while SRT is universally supported across all platforms and players.
Does JSON3 support multiple languages?
Yes. JSON3 uses UTF-8 encoding and fully supports all languages including CJK (Chinese, Japanese, Korean), accented Latin characters, Arabic, and emoji. YouTube provides separate JSON3 files for each language track on a video.
Convert JSON3 to Other Formats
AllSubConverter supports converting JSON3 to all major subtitle formats. Choose a conversion tool below to get started: