Skip to content

YouTube JSON3 转 VTT 网页字幕在线转换器

将 YouTube timedtext JSON3 事件转换为带必需 WEBVTT 头部和 HH:MM:SS.mmm 计时的 WebVTT 字幕。

拖放您的 JSON 文件到这里

或点击浏览

支持最大 50 MB 的 .json, .json3, .xml, .html 文件

转换引擎架构

关于 JSON 转 VTT

HTML5 track 元素和多数网页视频平台不接受 YouTube 的 JSON3 格式。本工具解析 JSON3 events 数组,拼接 segs 文本片段、计算字幕时间,并输出带必需 WEBVTT 头部的有效 WebVTT 文件,可直接用于 HTML5 视频、YouTube Studio、Vimeo 和 JavaScript 播放器。

代码级语法透视

JSON 到 VTT 语法结构与代码转换示例

直观对比转换前后文件头、时间轴标记与对白文本的代码级语法对应关系

毫秒级同步
input.json
JSON 源格式
{
"events": [
{ "tStartMs": 1000, "dDurationMs": 3000,
"segs": [{ "utf8": "Hello, world!" }] },
{ "tStartMs": 4500, "dDurationMs": 3500,
"segs": [{ "utf8": "This is a subtitle file." }] }
]
}
output.vtt
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!
规范手册

JSON 与 VTT 格式规范深度解析

符合通用标准规范
输入格式

JSON

JSON

JSON3 是 YouTube 内部使用的字幕格式,通过 timedtext API 导出。文件为 JSON 结构,包含 events 数组,每个事件有 tStartMs(起始毫秒)、dDurationMs(持续毫秒)和 segs(文本片段数组)。用户通常通过 youtube-dl、yt-dlp 等工具下载此格式。

输出格式

VTT

VTT

WebVTT(.vtt)是 W3C 现代网页字幕标准。每个字幕条目包含 HH:MM:SS.mmm --> HH:MM:SS.mmm 时间戳、可选布局设置和一行或多行文本。被 HTML5 video、YouTube、Vimeo 及大多数流媒体平台使用。

格式差异

JSON3 使用 YouTube events 数组;VTT 使用 WEBVTT 头部和字幕块
JSON3 存储 tStartMs 和 dDurationMs;VTT 存储 HH:MM:SS.mmm --> HH:MM:SS.mmm 时间戳
JSON3 是 YouTube 专有格式;VTT 是 W3C 网页视频标准
浏览器无法通过 track 元素加载 JSON3;VTT 是 HTML5 原生字幕格式

常见疑难与故障排查

针对播放器兼容性、字符乱码与时间轴同步的实操排查指南

4 个常见问题
GOTCHA #1

转换后的字幕在电视或播放器上出现时间漂移或音画不同步?

不同视频流媒体可能采用不同帧率(如 23.976 fps 与 25 fps 差异)。如果时间轴整体偏移,可在本站使用「字幕时间轴同步」工具快速进行全局微调。

GOTCHA #2

字幕在播放器中显示为乱码(Mojibake)或问号?

老旧文件可能采用 GBK、ANSI 或 Shift-JIS 编码。本站输出文件统一标准化为 UTF-8 编码。若原文件损坏,请先使用本站「字符编码转换器」修复。

GOTCHA #3

多角色同时说话时字幕层叠或遮挡画面?

不同格式对多行或重叠台词的处理机制不同。您可以在本站在线工作台中微调特定字幕行的时间轴,避免文字垂直堆叠遮挡画面。

GOTCHA #4

文件在剪辑软件(如 Premiere Pro、Final Cut)中导入报错?

专业剪辑软件对时间戳格式及换行符敏感。本工具输出的文件严格遵循行业规范,以支持主流剪辑工作流。

功能特性

自动解析 YouTube JSON3 events 数组和 segs 文本片段
将 JSON3 毫秒时间戳转换为 VTT 的 HH:MM:SS.mmm 计时格式
客户端处理——文件永远不会离开您的设备
支持 UTF-8 编码,适配中日韩等非拉丁字符
浏览器本地处理 · 文件不离设备
免费使用,无需注册,无水印,单个文件最大 50 MB。

为什么需要转换?

HTML5 视频元素需要通过 track 标签的 VTT。JSON3 文件无法在任何浏览器中加载。
YouTube Studio 接受 VTT 字幕上传但不识别 JSON3 格式。
Vimeo 要求通过其 Web 界面上传 VTT 格式的闭合字幕。
Video.js、Plyr 和 JW Player 等 JavaScript 视频播放器使用 VTT 作为主要字幕源。
WebVTT 是浏览器端无障碍视频播放的原生字幕格式。
基于 Web 的课程平台通常接受 VTT 格式的视频字幕。
VTT 支持 JSON3 无法表示的定位、样式和元数据。
Scenarios

常见用途

HTML5 视频嵌入

使用指向 VTT 文件的 track 元素为网站视频添加字幕。浏览器不会通过 track 元素加载 JSON3 文件。

YouTube 字幕上传

将 VTT 文件上传到 YouTube Studio 而非手动输入字幕。YouTube 接受 VTT 但不接受 JSON3。

Vimeo 字幕

通过字幕设置面板上传 VTT 文件,为 Vimeo 视频添加闭合字幕。

在线学习平台

在 VTT 是可接受的网页字幕格式时,为 Coursera、Canvas 或你自己的 LMS 上的课程视频添加字幕。

JavaScript 视频播放器

在 Video.js、Plyr、JW Player 或类似 Web 播放器中启用字幕,它们读取 VTT 作为字幕源。

Format Ecosystem

相关格式

JSON (YouTube JSON3)

JSON3 是 YouTube 内部使用的字幕格式,通过 timedtext API 导出。文件为 JSON 结构,包含 events 数组,每个事件有 tStartMs(起始毫秒)、dDurationMs(持续毫秒)和 segs(文本片段数组)。用户通常通过 youtube-dl、yt-dlp 等工具下载此格式。

SRT (SubRip)

通用替代方案:适用于智能电视和桌面播放器。如果目标不是网页浏览器,可选择 SRT。

ASS (Advanced SubStation Alpha)

样式替代方案:支持字体、颜色和定位。如果视觉样式比网页兼容性更重要,可选择 ASS。

工作原理

  1. 1

    上传或拖拽您的 .json 文件到工具区域。

  2. 2

    解析器读取 JSON 结构,遍历 events 数组。

  3. 3

    每个时间戳对重新格式化为 VTT 表示法:小时填充、箭头插入、毫秒句点保留。

  4. 4

    没有 segs 的纯时间标记事件被跳过。

  5. 5

    生成的 .vtt 文件以 WEBVTT 开头,并包含网页播放器可用的标准箭头分隔字幕条目。

常见问题

JSON3 是 YouTube 内部使用的字幕格式。它通过 timedtext API 提供,文件为 JSON 结构,包含 events 数组。每个事件有 tStartMs(起始毫秒)、dDurationMs(持续毫秒)和 segs(文本片段数组,每个片段有 utf8 字段)。

每个事件中的 utf8 片段会按原始顺序拼接。例如 "Hello " 和 "world" 会生成完整字幕行 "Hello world"。

可以。输出包含必需的 WEBVTT 头部和有效字幕计时,适用于 YouTube Studio、Vimeo、HTML5 track 元素、Video.js、Plyr 和 JW Player。

使用 yt-dlp 命令:yt-dlp --write-auto-sub --sub-format json3 <视频URL>。下载的 .json3 文件可直接导入本工具转换。也可通过浏览器访问 YouTube timedtext API 获取。

YouTube JSON3 中有些事件只包含时间信息(如 aAppend 标记)而没有文本片段。这些事件在转换时会被自动跳过,不会影响 VTT 输出。

WebVTT(.vtt)是 W3C 现代网页字幕标准。每个字幕条目包含 HH:MM:SS.mmm --> HH:MM:SS.mmm 时间戳、可选布局设置和一行或多行文本。被 HTML5 video、YouTube、Vimeo 及大多数流媒体平台使用。

准备好转换您的字幕了吗?

将您的 JSON 文件拖放到这里,立即转换为 VTT。