WebVTT ⇔ SRT 字幕互转工具

在浏览器内双向转换 WebVTT(.vtt)与 SubRip(.srt)字幕文件。自动剥离 VTT 的 cue settings、说话人标签和内联样式。

100% 本地运行 · 无需上传
跳转常见问题使用方法常见问题

WebVTT ↔ SRT 字幕格式转换

在 WebVTT (.vtt) 和 SubRip (.srt) 格式之间互转。自动去除 cue 设置、说话人标签和内联样式,完全在浏览器本地处理。

粘贴或上传文件开始转换

常见问题

Q

从 YouTube 下载了 .vtt 字幕,如何得到一份干净的 .srt?

A

YouTube 导出的 VTT 文件带有时间戳标记、颜色分类标签和说话人标签,大多数 SRT 编辑器无法正确处理这些内容。把内容粘贴进本工具的「VTT → SRT」模式,输出结果会去掉所有 `<c>`、`<v>` 和行内时间戳标签,只保留纯净的 SRT。保存为 `.srt` 后即可导入 Subtitle Edit 或 Aegisub。

Q

我在 `<track src="...">` 里填了 SRT 文件,但字幕不显示,为什么?

A

HTML5 的 `<track>` 元素只支持 WebVTT 格式。即使路径完全正确,浏览器也会直接忽略 `.srt` 文件。用本工具把 SRT 转换成 VTT,保存为 `.vtt` 扩展名,再更新 `src` 路径。刷新页面后字幕就能正常加载。

Q

格式看起来没问题,为什么还是提示 VTT 时间戳无效?

A

WebVTT 要求用句点作为小数点(00:00:01.000),而 SRT 要求用逗号(00:00:01,000)。把两者混用会让解析器悄悄出错却不报明确原因。与其手动逐条修改,不如把内容放进本工具统一规范小数点分隔符。

Q

如何去掉 VTT 文件里的 `<v Speaker>` 说话人标签?

A

通过本工具把 VTT 转换为 SRT,`<v>` 区块会被自动剥离,只保留里面的文本内容。如果你希望文件仍然是 VTT 格式但去掉说话人标签,可以先做 VTT → SRT,再做一次 SRT → VTT,两轮转换即可。

Q

我的 VTT 里有 NOTE 注释,转换后的 SRT 里还会出现吗?

A

不会。`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 记录并按顺序编号输出。

相关工具