SRT 和 VTT 差在哪?srt字幕格式比較、平台支援與轉換教學
SRT 和 VTT 字幕檔差在哪?說明時間碼寫法、WEBVTT 標頭、樣式與位置設定,各平台支援哪種格式,以及 SRT 轉 VTT 的方法與常見錯誤。

其他語言版本: English, Русский, Українська, Dansk, Deutsch, Español, Français, Italiano, Magyar, Nederlands, Norsk bokmål, Polski, Português (Brasil), Suomi, Svenska, Türkçe, Ελληνικά, עברית, العربية, 한국어, 日本語, 中文(中国), Indonesia, Tiếng Việt
SRT 和 VTT 都是純文字的字幕檔格式,每段字幕都記錄開始時間、結束時間和要顯示的文字;如果只是一般字幕,兩者幾乎可以互換。差別不大但很嚴格:VTT(WebVTT)檔必須以 WEBVTT 這一行開頭,毫秒前用句點,而 SRT 沒有標頭,毫秒前用逗號;VTT 還多了位置、樣式和註解功能。簡單來說,自己網站上的 HTML5 影片用 VTT,Facebook 和 LinkedIn 用 SRT,YouTube 和 Vimeo 兩種都可以。
本文用範例說明兩種格式,整理各平台接受哪一種,並教你如何在不弄亂時間軸的情況下,把 SRT 轉成 VTT,或反過來轉換。
SRT 和 VTT 差異一覽
| SRT(SubRip) | VTT(WebVTT) | |
|---|---|---|
| 副檔名 | .srt | .vtt |
| 標頭 | 無 | 必要:第一行是 WEBVTT |
| 時間碼格式 | 00:01:02,500(逗號) | 00:01:02.500(句點),小時可省略 |
| 字幕編號 | 必要,依序編號 | 可選的識別碼(數字或名稱) |
| 位置設定 | 未定義 | 字幕設定:line、position、size、align、vertical |
| 樣式 | 非正式的 <i>、<b>、<u>,有時還有 <font> | <b>、<i>、<u>、類別、語者標籤、含 CSS 的 STYLE 區塊 |
| 註解 | 不支援 | NOTE 區塊 |
| 正式規格 | 沒有(事實標準) | 有,W3C 規格 |
| 常見用途 | 社群平台、影片剪輯軟體、桌面播放器 | HTML5 影片、網頁播放器、串流 |
SRT 檔是什麼?
SRT 檔是 SubRip 字幕檔,也就是一份有編號的純文字字幕清單。每段字幕有三個部分:序號、時間碼行,以及一行或多行文字,之後空一行再接下一段。
1
00:00:01,000 --> 00:00:04,200
歡迎收看本季營運報告。
2
00:00:04,600 --> 00:00:08,000
<i>今天要談業績、
招募和產品藍圖。</i>
時間碼格式是 時:分:秒,毫秒,小時固定兩位數,毫秒前一定是逗號。SRT 從來沒有正式標準化,所以各軟體對格式標籤的支援不一。許多桌面播放器能顯示 <i> 和 <b>,但 YouTube 說明頁表示它只支援不含樣式標記的基本 SRT 檔,並需儲存為純 UTF-8。正因為格式這麼簡單,幾乎所有影片剪輯軟體和社群平台都讀得懂 srt字幕,用任何文字編輯器也都能修改。
VTT(WebVTT)檔是什麼?
WebVTT(Web Video Text Tracks)是專為網頁設計的字幕格式。MDN 的 WebVTT 參考文件整理了規則:檔案必須以 WEBVTT 開頭、必須是 UTF-8 編碼,時間碼的毫秒前用句點。小時可以省略,所以 01:02.500 也是有效的寫法。
WEBVTT
NOTE 本季營運報告,繁體中文字幕
intro
00:01.000 --> 00:04.200
歡迎收看本季營運報告。
00:04.600 --> 00:08.000 line:85% align:center
<v Maria>今天要談業績、
招募和產品藍圖。</v>
這個範例裡有三樣東西是 SRT 沒有的:
- 字幕設定:寫在時間碼後面,控制文字出現的位置,包括
line(垂直位置)、position和size(水平位置與寬度)、align(start、center、end),以及vertical(直書文字用)。 - 語者與類別標籤:例如
<v Maria>或<c.highlight>,用來標示是誰在說話,或套用某種樣式。 - NOTE 區塊:觀眾看不到的註解。字幕識別碼(例如上面的
intro)則可有可無。
你也可以在第一段字幕之前,用 STYLE 區塊嵌入 CSS:
WEBVTT
STYLE
::cue {
color: #ffffff;
background-color: rgba(0, 0, 0, 0.7);
}
::cue(v[voice="Maria"]) {
color: #ffd166;
}
在瀏覽器以外,樣式支援程度落差很大。以 YouTube 為例,它接受 WebVTT 的位置設定,但樣式只限粗體、斜體和底線。請把樣式當成加分項目,而不是每個播放器都會照辦的功能。
哪些平台接受 SRT 或 VTT?
大多數觀眾根本不會看到字幕檔格式,但上傳表單可是很挑的。以下是我們從各平台說明頁和近期教學整理出的結果(2026 年 10 月查核;介面隨時會改,請以最新的說明中心為準)。
| 平台 | SRT | VTT | 備註 |
|---|---|---|---|
| YouTube | 可以 | 可以 | SRT 列為基本格式(不含樣式標記);WebVTT 列為進階格式(可設定位置,樣式有限)。需為純 UTF-8。 |
| Vimeo | 可以 | 可以 | Vimeo 說明中心建議盡量使用 WebVTT;檔案須為 UTF-8。 |
| 可以 | 未見說明 | 各家教學一致只提到 SRT,檔名需加語系代碼,例如 video.en_US.srt。 | |
| 可以 | 未見說明 | LinkedIn 說明頁介紹的是在電腦版發文前附加 SRT 檔。 | |
| TikTok | 未找到直接上傳方式 | 未找到直接上傳方式 | 我們沒找到官方附加字幕檔的方法;請使用 TikTok 內建字幕,或把字幕直接燒進影片。 |
HTML5 <video> | 原生不支援 | 可以 | <track> 元素是為 WebVTT 設計的。 |
YouTube 用 SRT 還是 VTT?
兩種都用。YouTube 的支援的字幕檔案格式頁面把 SubRip(.srt)列在基本格式,把 WebVTT(.vtt)列在進階格式。如果你只需要文字和時間碼,SRT 最不容易出問題;如果字幕需要避開畫面上的文字、擺到其他位置,就用 VTT。
自己網站上的 HTML5 影片
如果是自架的播放器,VTT 是唯一實際可行的選擇:
<video controls src="update.mp4">
<track kind="subtitles" src="update.zh-TW.vtt" srclang="zh-TW" label="繁體中文" default>
</video>
如果手上只有 SRT 檔,請先轉換。想把字幕燒進影片,或要上傳到短影音平台,請參考我們的影片加字幕教學。
如何把 SRT 轉成 VTT(以及 VTT 轉 SRT)
因為兩種格式非常接近,轉換大多是機械式的工作。短檔案可以手動改,長一點的檔案就交給轉換工具。
手動把 SRT 轉成 VTT
- 在第一行加上
WEBVTT,下面空一行。 - 只在時間碼行裡,把毫秒前的逗號換成句點:
00:00:04,600改成00:00:04.600。 - 字幕編號可以保留,WebVTT 會把它們當成識別碼。
- 以 UTF-8 編碼、
.vtt副檔名儲存。
使用「全部取代」時要小心:如果把所有逗號都換掉,連台詞裡的逗號也會被改掉。中文字幕多半用全形逗號「,」,不受影響,但字幕裡夾帶的英文或數字就可能出錯。
手動把 VTT 轉成 SRT
- 刪除
WEBVTT標頭,以及所有STYLE、NOTE和REGION區塊。 - 刪掉時間碼行尾端的字幕設定。
- 補上缺少的小時(
01:02.500改成00:01:02.500),再把句點改成逗號。 - 依序把字幕編號為 1、2、3,並刪除
<v Maria>這類 VTT 專用標籤。
直接在瀏覽器裡轉換
Audiotexta 免費的 SRT 轉 VTT 工具和 VTT 轉 SRT 工具會幫你完成上述步驟。你只要貼上字幕或選擇檔案,轉換就在瀏覽器中進行,不會上傳任何東西。時間碼精確保留到毫秒,行首「姓名:」形式的說話者前綴也會保留。老實說有一個限制:轉換工具會移除文字中的 HTML 和 VTT 樣式標籤,如果你需要斜體或自訂樣式,轉換後請自行補回,或手動編輯檔案。
常見的 SRT 和 VTT 錯誤與解決方法
- 缺少
WEBVTT標頭。 沒有標頭的 VTT 檔會被瀏覽器忽略。請把它加在檔案的第一行。 - VTT 時間碼用了逗號,或 SRT 用了句點。 這通常是只改副檔名、沒有真正轉換的結果。只修改時間碼行即可。
- 編碼錯誤。 中文字變成亂碼,多半代表檔案不是 UTF-8。台灣常見的情況是檔案被存成 Big5,請在文字編輯器裡重新以 UTF-8 儲存。
- 存成了 .srt.txt。 有些編輯器會默默加上
.txt。請開啟「顯示副檔名」後重新命名。 - 少了空行。 每段字幕之間都必須空一行;少了空行,字幕會黏在一起,或檔案無法解析。
- 結束時間早於開始時間,或字幕段落重疊。 播放器可能會跳過這段字幕。請檢查修改過的段落時間。
- Facebook 字幕沒有出現。 教學指出問題通常出在檔名:結尾應該是語系代碼,例如
.en_US.srt。 - VTT 在本機正常,放上伺服器卻不行。 請以
text/vtt內容類型傳送檔案。如果檔案放在其他網域,video 元素需要加上crossorigin屬性,伺服器也必須送出 CORS 標頭。 - 字幕預設是關閉的。 如果希望字幕自動顯示,請在
<track>元素加上default屬性。
應該匯出哪一種格式?
如果你是從零開始製作字幕,通常不必事先決定。Audiotexta 的字幕產生器會把音訊轉成文字,並同時匯出 SRT 和 VTT,免費方案也能用,而且匯出前可以先編輯逐字稿,把時間點和用字修正好。我們的 SRT 與 VTT 字幕產生教學完整說明整個流程,從語音轉文字到每行字數和閱讀速度都有涵蓋。
簡單的原則:要上傳到社群平台或匯入影片剪輯軟體時匯出 SRT,用在網站和網頁播放器時匯出 VTT,如果會在好幾個地方發布,就兩種都留著。文字和時間碼完全相同,改變的只是外層的格式。
如何把 SRT 轉成 VTT
- 開啟 SRT 轉 VTT 工具. 在瀏覽器中開啟 Audiotexta 的 SRT 轉 VTT 轉換工具。轉換在你的電腦本機執行,字幕檔不會被上傳。
- 貼上字幕或選擇檔案. 把 .srt 檔的內容貼進輸入框,或從電腦選擇檔案,並確認辨識出的字幕段落數量看起來正確。
- 下載 VTT 檔. 下載轉換結果。工具會加上 WEBVTT 標頭,並把毫秒前的逗號改成句點,所有時間碼維持不變。
- 在播放器中測試. 把 .vtt 檔掛到影片上,例如使用 HTML5 的 track 元素或平台的字幕上傳功能,播放幾段字幕,確認時間點和文字都正確顯示。
常見問題
SRT 和 VTT 最主要的差別是什麼?
兩者都是用純文字儲存有時間碼的字幕段落。VTT 檔必須以 WEBVTT 這一行開頭,毫秒前用句點;SRT 沒有標頭,毫秒前用逗號。VTT 另外支援字幕位置、CSS 樣式和註解,這些在 SRT 中並沒有正式定義。
YouTube 用的是 SRT 還是 VTT?
兩種都接受。YouTube 說明頁把 SubRip(.srt)列為不含樣式標記的基本格式,把 WebVTT(.vtt)列為支援位置設定的進階格式,樣式只限粗體、斜體和底線。檔案應儲存為純 UTF-8 文字。
可以直接把 .srt 檔改名成 .vtt 嗎?
不行。改副檔名不會加上必要的 WEBVTT 標頭,也不會把時間碼裡的逗號改成句點,因此瀏覽器等較嚴格的播放器會拒絕這個檔案,或什麼都不顯示。請使用轉換工具,或手動修改標頭和時間碼行。
VTT 轉成 SRT 會失去什麼嗎?
通常只會失去 VTT 特有的功能:位置、對齊等字幕設定、STYLE 區塊、NOTE 註解,以及語者或類別標籤。文字和時間碼都會保留,而大多數平台本來也只用到這兩項。
自己網站上的 HTML5 影片該用哪種格式?
請用 VTT。HTML 的 track 元素就是為 WebVTT 檔設計的,瀏覽器預期檔案有 WEBVTT 標頭,毫秒以句點分隔。伺服器傳送檔案時請使用 text/vtt 內容類型。
免費試用 Audiotexta
上傳檔案或貼上連結,幾分鐘內取得逐字稿。