SRT 和 VTT 差在哪?srt字幕格式比較、平台支援與轉換教學

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

兩個並排的字幕檔,一個是時間碼用逗號的 SRT 檔,另一個是以 WEBVTT 標頭開頭的 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 月查核;介面隨時會改,請以最新的說明中心為準)。

平台SRTVTT備註
YouTube可以可以SRT 列為基本格式(不含樣式標記);WebVTT 列為進階格式(可設定位置,樣式有限)。需為純 UTF-8。
Vimeo可以可以Vimeo 說明中心建議盡量使用 WebVTT;檔案須為 UTF-8。
Facebook可以未見說明各家教學一致只提到 SRT,檔名需加語系代碼,例如 video.en_US.srt。
LinkedIn可以未見說明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

  1. 在第一行加上 WEBVTT,下面空一行。
  2. 只在時間碼行裡,把毫秒前的逗號換成句點:00:00:04,600 改成 00:00:04.600。
  3. 字幕編號可以保留,WebVTT 會把它們當成識別碼。
  4. 以 UTF-8 編碼、.vtt 副檔名儲存。

使用「全部取代」時要小心:如果把所有逗號都換掉,連台詞裡的逗號也會被改掉。中文字幕多半用全形逗號「,」,不受影響,但字幕裡夾帶的英文或數字就可能出錯。

手動把 VTT 轉成 SRT

  1. 刪除 WEBVTT 標頭,以及所有 STYLE、NOTE 和 REGION 區塊。
  2. 刪掉時間碼行尾端的字幕設定。
  3. 補上缺少的小時(01:02.500 改成 00:01:02.500),再把句點改成逗號。
  4. 依序把字幕編號為 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

  1. 開啟 SRT 轉 VTT 工具. 在瀏覽器中開啟 Audiotexta 的 SRT 轉 VTT 轉換工具。轉換在你的電腦本機執行,字幕檔不會被上傳。
  2. 貼上字幕或選擇檔案. 把 .srt 檔的內容貼進輸入框,或從電腦選擇檔案,並確認辨識出的字幕段落數量看起來正確。
  3. 下載 VTT 檔. 下載轉換結果。工具會加上 WEBVTT 標頭,並把毫秒前的逗號改成句點,所有時間碼維持不變。
  4. 在播放器中測試. 把 .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

上傳檔案或貼上連結,幾分鐘內取得逐字稿。

開始轉錄

相關文章