SRTとVTTの違いとは?srt 字幕の形式・対応先・変換方法

SRTとVTT(WebVTT)の違いを例で解説。タイムスタンプの書式、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
ヘッダーなし必須:1行目が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の仕様)
主な用途SNS、動画編集ソフト、デスクトップのプレーヤーHTML5動画、Webプレーヤー、ストリーミング

SRTファイルとは?srt 字幕の基本

SRTファイルはSubRip形式の字幕ファイルで、番号の付いたキューを並べたプレーンテキストです。各キューは連番、タイミング行、1行以上のテキストの3つの部分からなり、次のキューとの間には空行を1行入れます。

1
00:00:01,000 --> 00:00:04,200
Welcome to the quarterly update.

2
00:00:04,600 --> 00:00:08,000
<i>Today we cover sales,
hiring and the product roadmap.</i>

タイミングの書式は時:分:秒,ミリ秒で、時は常に2桁、区切りはカンマです。SRTは正式に標準化されたことがないため、書式タグへの対応はまちまちです。多くのデスクトップのプレーヤーは<i>や<b>を表示しますが、YouTubeのヘルプページでは、スタイル指定のない基本的なSRTファイルのみに対応し、UTF-8のプレーンテキストで保存するよう案内されています。とてもシンプルなので、SRTはほぼすべての動画編集ソフトやSNSで読み込める形式であり、どんなテキストエディタでも編集できます。

VTT(WebVTT)ファイルとは?

WebVTT(Web Video Text Tracks)は、Web向けに作られた字幕形式です。MDNのWebVTTリファレンスにルールがまとめられており、ファイルはWEBVTTで始まり、UTF-8でなければならず、タイムスタンプはミリ秒の前にドットを使います。時は省略できるため、01:02.500も有効です。

WEBVTT

NOTE Quarterly update, English captions

intro
00:01.000 --> 00:04.200
Welcome to the quarterly update.

00:04.600 --> 00:08.000 line:85% align:center
<v Maria>Today we cover sales,
hiring and the product roadmap.</v>

この例には、SRTには存在しない要素が3つあります。

  • キュー設定:タイミング行の後ろに書き、テキストの表示位置を指定します。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.ja_JP.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.en.vtt" srclang="en" label="English" default>
</video>

日本語字幕ならsrclang="ja"、label="日本語"のように指定します。SRTファイルしかない場合は、先に変換してください。字幕を動画に焼き込む方法や短尺動画向けのプラットフォームについては、動画に字幕を付ける方法のガイドをご覧ください。

SRTをVTTに変換する方法(VTTからSRTへの変換も)

2つの形式はよく似ているので、変換作業はほぼ機械的です。短いファイルなら手作業で、長いファイルなら変換ツールを使うのがおすすめです。

SRTからVTTへ手作業で変換する

  1. 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ファイルはブラウザに無視されます。必ず1行目に追加してください。
  • VTTのタイムスタンプにカンマ、SRTにドットが入っている。 変換せずに拡張子だけ変えたときに最もよく起こるミスです。タイミング行だけを修正します。
  • 文字コードが違う。 日本語が意味不明な記号になる「文字化け」は、たいていファイルがUTF-8になっていないことが原因です。日本語環境ではShift_JISで保存されていることがよくあるので、テキストエディタでUTF-8として保存し直してください。
  • .srt.txtとして保存されている。 エディタによっては勝手に.txtが付きます。拡張子を表示する設定にして名前を変更します。
  • 空行がない。 キューの間には必ず空行が必要です。ないとキューがつながったり、ファイルが途中から読み込まれなくなったりします。
  • 終了時刻が開始時刻より前、またはキューが重なっている。 プレーヤーがそのキューを飛ばすことがあります。編集したキューのタイミングを確認してください。
  • Facebookで字幕が表示されない。 各種ガイドではファイル名が原因とされています。.ja_JP.srtのようにロケールコードで終わる名前にしてください。
  • ローカルでは動くのにサーバーではVTTが動かない。 text/vttのContent-Typeで配信してください。別ドメインに置いている場合は、video要素にcrossorigin属性を付け、サーバー側でCORSヘッダーを送る必要があります。
  • 字幕がデフォルトでオフになっている。 自動で表示させたい場合は、<track>要素にdefault属性を付けます。

どちらの形式で書き出すべき?

字幕を一から作る場合、事前に形式を決めておく必要はほとんどありません。Audiotextaの字幕ジェネレーターは音声を文字起こしし、無料プランでもSRTとVTTの両方を書き出せます。書き出す前に文字起こしを編集できるので、タイミングと言葉づかいを整えてから保存できます。文字起こしから1行の長さ、読む速度までの流れ全体は、SRT・VTT字幕ジェネレーターのガイドで解説しています。

目安としては、書き出し先がSNSや動画編集ソフトならSRT、WebサイトやWebプレーヤーならVTT、複数の場所に公開するなら両方を保存しておきましょう。テキストとタイミングは同じで、変わるのは外側の形式だけです。

SRTをVTTに変換する方法

  1. SRT→VTT変換ツールを開く. ブラウザでAudiotextaのSRT→VTT変換ツールを開きます。処理はブラウザ内で行われるため、字幕ファイルがアップロードされることはありません。
  2. 字幕を貼り付けるかファイルを選ぶ. .srtファイルの中身を入力欄に貼り付けるか、パソコンからファイルを選びます。認識されたキューの数が妥当かどうかを確認してください。
  3. VTTファイルをダウンロードする. 結果をダウンロードします。変換ツールはWEBVTTヘッダーを追加し、ミリ秒の前のカンマをドットに変えます。タイミングは一切変わりません。
  4. プレーヤーで確認する. HTML5のtrack要素やプラットフォームの字幕アップロード機能などで.vttファイルを動画に付け、いくつかのキューを再生して、タイミングと文字が正しく表示されるか確認します。

よくある質問

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コメント、話者タグやクラスタグがそれにあたります。テキストとタイミングはそのまま残り、ほとんどのプラットフォームが使うのはこの2つだけです。

自分のサイトのHTML5動画にはどちらの形式を使うべきですか?

VTTを使ってください。HTMLのtrack要素はWebVTTファイルを前提に作られており、ブラウザはWEBVTTヘッダーとドット区切りのミリ秒を期待します。ファイルはtext/vttのContent-Typeで配信します。

Audiotexta を無料で試す

ファイルをアップロードするかリンクを貼り付けるだけで、数分で文字起こしが完成します。

文字起こしを始める

関連記事