WebVTT ↔ SRT 字幕格式转换
在 WebVTT (.vtt) 和 SubRip (.srt) 格式之间互转。自动去除 cue 设置、说话人标签和内联样式,完全在浏览器本地处理。
粘贴或上传文件开始转换
常见问题
从 YouTube 下载了 .vtt 字幕,如何得到一份干净的 .srt?
YouTube 导出的 VTT 文件带有时间戳标记、颜色分类标签和说话人标签,大多数 SRT 编辑器无法正确处理这些内容。把内容粘贴进本工具的「VTT → SRT」模式,输出结果会去掉所有 `<c>`、`<v>` 和行内时间戳标签,只保留纯净的 SRT。保存为 `.srt` 后即可导入 Subtitle Edit 或 Aegisub。
我在 `<track src="...">` 里填了 SRT 文件,但字幕不显示,为什么?
HTML5 的 `<track>` 元素只支持 WebVTT 格式。即使路径完全正确,浏览器也会直接忽略 `.srt` 文件。用本工具把 SRT 转换成 VTT,保存为 `.vtt` 扩展名,再更新 `src` 路径。刷新页面后字幕就能正常加载。
格式看起来没问题,为什么还是提示 VTT 时间戳无效?
WebVTT 要求用句点作为小数点(00:00:01.000),而 SRT 要求用逗号(00:00:01,000)。把两者混用会让解析器悄悄出错却不报明确原因。与其手动逐条修改,不如把内容放进本工具统一规范小数点分隔符。
我的 VTT 里有 NOTE 注释,转换后的 SRT 里还会出现吗?
不会。`NOTE`、`STYLE`、`REGION` 区块在 VTT → SRT 转换过程中会被整体丢弃,因为 SRT 没有对应的等价结构。如果你需要保留编辑用的 NOTE 注释以供日后参考,请另外保存一份原始 VTT 文件。
WebVTT ⇔ SRT 字幕互转工具 是什么?
WebVTT 和 SRT 看起来很像,但两者的解析规则完全不兼容。WebVTT 支持 cue 设置(如 `line:90%`)、行内标签(`<v Speaker>`、`<c.classname>`)、`NOTE`/`STYLE`/`REGION` 区块,文件开头还有 `WEBVTT` 头部(有时还带 `Kind:`、`Language:` 行),时间戳用的是句点小数点。SRT 完全不支持这些,只接受纯粹的字幕块,并且要求逗号小数点。
本工具在 VTT → SRT 方向会:去掉 `WEBVTT` 头部行以及 `Kind:`/`Language:` 行,整块跳过 `NOTE`、`STYLE`、`REGION` 区块,用正则表达式剥离 `<v Speaker>`、`<c>`、`<i>`、`<b>`、`<u>` 标签以及 `<00:00:01.000>` 这类行内时间戳标签,并把小数点从句点改写为逗号。如果一条字幕在剥离标签后正文变成空的(比如整行只是样式标签),会被直接跳过不输出。SRT → VTT 方向则会忽略开头的纯数字编号行,把逗号换回句点,并补上 `WEBVTT` 头部。
如何使用 WebVTT ⇔ SRT 字幕互转工具
在顶部切换「VTT → SRT」或「SRT → VTT」模式。将字幕内容粘贴到左侧文本框,或点击「上传文件」选择 `.vtt`/`.srt`/`.txt` 文件。转换结果会立即显示在右侧,可以点击「复制」或「下载」保存为带正确扩展名的文件。点击「加载示例」可以直接体验一段包含 cue 设置、说话人标签和 NOTE 注释的真实样例。
示例
VTT 输入:
WEBVTT
Kind: captions
00:00:01.000 --> 00:00:03.500 line:90%
<v Speaker>Hello world</v>
NOTE 这是一条注释
00:00:04.000 --> 00:00:06.200
This is <i>italic</i> text
SRT 输出(WEBVTT头部、Kind行、line设置、说话人标签、NOTE、<i>标签全部被剥离):
1
00:00:01,000 --> 00:00:03,500
Hello world
2
00:00:04,000 --> 00:00:06,200
This is italic text应用场景
1. 下载 YouTube 自动生成的 VTT 字幕,转换为可在桌面字幕编辑软件中处理的 SRT。
2. 把译者交付的 SRT 转换为 VTT,用于通过 `<track src=…>` 嵌入 HTML5 视频。
3. 在翻译记忆工具无法识别 VTT cue 设置时,预先剥离掉这些设置。
4. 在上传到不支持说话人标签或样式标签的平台前,准备一份干净的 SRT。
常见问题
VTT 里像 `line:90%` 这样的 cue 设置转换后会怎样?
会被直接丢弃。SRT 格式本身不支持任何定位提示。如果需要保留定位信息,建议改用 ASS 工作流——ASS 原生支持逐条字幕的坐标定位。
转换成 VTT 后,原来 SRT 的编号会保留吗?
不会。VTT 的 cue 标识符是可选项,SRT 的编号默认不会被带入。大多数 VTT 播放器并不需要这个标识符,某些 HLS 封装工具甚至会因为多出的 ID 而出错。如果确实需要稳定的 cue ID,请在转换后手动添加。
如果 VTT 里有多条字幕共用同一个时间戳,这个工具能处理吗?
可以。每个 cue 区块都是独立解析的,即使时间戳完全重复,也会各自作为一条单独的 SRT 记录并按顺序编号输出。