Skip to content

YouTube JSON3 to VTT Subtitle Converter

Fast. Private. Perfect.

100% local processing in your browser. No upload. No waiting.

Private & Secure
Blazing Fast
Free & Private
JSON
{
"events": [
{ "tStartMs": 1000, "dDurationMs": 3000,
"segs": [{ "utf8": "Hello, world!" }] },
{ "tStartMs": 4500, "dDurationMs": 3500,
"segs": [{ "utf8": "This is a subtitle file." }] }
]
}
VTT
WEBVTT
 
00:00:01.000 --> 00:00:04.000
Hello, world!
 
00:00:04.500 --> 00:00:08.000
This is a subtitle file.
 
00:00:08.500 --> 00:00:12.000
Converted locally!

Drag & drop your JSON file here

or click to browse

Supports .json files up to 50 MB

100% LocalNo UploadSecureInstant

How It Works

1

Upload JSON File

Drag & drop or select your .json file

2

Convert Instantly

We process it locally in your browser

3

Download VTT

Get your .vtt file immediately

More Conversions You Might Need

Why Choose AllSubConverter?

Your Privacy Matters

Everything runs in your browser. Your files are never uploaded.

Lightning Fast

Optimized processing engine converts files in seconds.

Free & Local

Each file can be up to 50 MB. Batches can contain up to 200 files or 1 GB total.

Works Everywhere

Works on Windows, Mac, Linux, iOS, Android - any modern browser.

About JSON to VTT

YouTube timedtext JSON3 is not accepted by HTML5 track elements or most web video platforms. This converter parses the JSON3 events array, joins segs text fragments, calculates cue timing, and writes valid WebVTT with the required WEBVTT header. The file is ready for HTML5 video, YouTube Studio, Vimeo, and JavaScript players.

Input Format

JSON

JSON3 is YouTube's internal subtitle format, exported via the timedtext API. The file is a JSON object with an events array. Each event has tStartMs (start millisecond), dDurationMs (duration in ms), and segs (an array of text fragments, each with a utf8 field). Users typically download this format using youtube-dl, yt-dlp, or similar tools.

Output Format

VTT

VTT (WebVTT) is the W3C standard subtitle format for web video, required by the HTML5 track element and accepted by YouTube, Vimeo, and JavaScript video players like Video.js and JW Player. A VTT file must begin with the literal text WEBVTT on the first line, followed by cue blocks. Each cue uses HH:MM:SS.mmm --> HH:MM:SS.mmm timestamps (period before milliseconds, zero-padded hours). VTT also supports optional cue settings (line, position, align, size), inline styling tags, NOTE comments, and CSS blocks.

Features

Automatically parses YouTube JSON3 events array and segs text fragments
Converts JSON3 millisecond timestamps to VTT HH:MM:SS.mmm cue timing
Client-side processing — your files never leave your device
Supports UTF-8 encoding for CJK and non-Latin characters
Pure browser-based — no upload, complete privacy protection
Free to use, no signup, no watermark, files up to 50 MB each

Why Convert?

HTML5 video elements require VTT via the track tag. JSON3 files will not load in any browser.
YouTube Studio accepts VTT uploads for subtitles but does not recognize JSON3 format.
Vimeo requires VTT for closed caption uploads through their web interface.
JavaScript video players like Video.js, Plyr, and JW Player use VTT as their primary subtitle source.
WCAG 2.1 accessibility guidelines recommend WebVTT for web video captions.
Web-based course platforms (Coursera, Canvas LMS, Moodle) only accept VTT for video subtitles.
VTT supports positioning, styling, and metadata that JSON3 cannot represent.

Format Differences

JSON3 uses a YouTube events array; VTT uses WEBVTT header and cue blocks
JSON3 stores tStartMs and dDurationMs; VTT stores HH:MM:SS.mmm --> HH:MM:SS.mmm timestamps
JSON3 is YouTube proprietary; VTT is the W3C standard for web video
Browsers cannot load JSON3 through a track element; VTT is the native HTML5 subtitle format

Common Use Cases

HTML5 Video Embeds

Add subtitles to a website video using a track element pointing to the VTT file. Browsers will not load JSON3 files via the track element.

YouTube Subtitle Upload

Upload VTT files to YouTube Studio instead of typing subtitles manually. YouTube accepts VTT but not JSON3.

Vimeo Captions

Add closed captions to Vimeo videos by uploading a VTT file through the subtitle settings panel.

E-Learning Platforms

Add subtitles to lecture videos on Coursera, Canvas, or your own LMS, which require VTT for accessibility compliance.

JavaScript Video Players

Enable captions in Video.js, Plyr, JW Player, or similar web players that read VTT as their subtitle source.

Related Formats

JSON (YouTube JSON3)

JSON3 is YouTube's internal subtitle format, exported via the timedtext API. The file is a JSON object with an events array. Each event has tStartMs (start millisecond), dDurationMs (duration in ms), and segs (an array of text fragments, each with a utf8 field). Users typically download this format using youtube-dl, yt-dlp, or similar tools.

SRT (SubRip)

The universal alternative: works on smart TVs and desktop players. Choose SRT instead of VTT if your target is not a web browser.

ASS (Advanced SubStation Alpha)

The styled alternative: supports fonts, colors, and positioning. Choose ASS if visual styling matters more than web compatibility.

Frequently Asked Questions

JSON3 is YouTube's internal subtitle format. It is served via the timedtext API as a JSON object with an events array. Each event has tStartMs (start millisecond), dDurationMs (duration in ms), and segs (text fragments array, each with a utf8 field).

The utf8 fragments in each event are joined in their original order. For example, "Hello " and "world" become the complete subtitle line "Hello world".

Yes. The output includes the required WEBVTT header and valid cue timing, so it works with YouTube Studio, Vimeo, the HTML5 track element, Video.js, Plyr, and JW Player.

Use yt-dlp: yt-dlp --write-auto-sub --sub-format json3 <video-URL>. The downloaded .json3 file can be directly imported into this tool. You can also fetch it via the YouTube timedtext API in a browser.

Some events in YouTube JSON3 contain only timing information (like aAppend markers) without text fragments. These events are automatically skipped during conversion and do not affect the VTT output.

VTT (WebVTT) is the W3C standard subtitle format for web video, required by the HTML5 track element and accepted by YouTube, Vimeo, and JavaScript video players like Video.js and JW Player. A VTT file must begin with the literal text WEBVTT on the first line, followed by cue blocks. Each cue uses HH:MM:SS.mmm --> HH:MM:SS.mmm timestamps (period before milliseconds, zero-padded hours). VTT also supports optional cue settings (line, position, align, size), inline styling tags, NOTE comments, and CSS blocks.

Ready to convert your subtitles?

Drop your JSON file here and convert to VTT instantly.