SRTとVTTの違いとは?srt 字幕の形式・対応先・変換方法
SRTとVTT(WebVTT)の違いを例で解説。タイムスタンプの書式、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 |
| ヘッダー | なし | 必須: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月時点で確認。画面は変わることがあるので、最新のヘルプセンターでご確認ください)。
| プラットフォーム | SRT | VTT | 備考 |
|---|---|---|---|
| YouTube | 対応 | 対応 | SRTは基本形式(スタイル指定なし)、WebVTTは高度な形式(位置指定、限定的なスタイル)として掲載。UTF-8のプレーンテキスト。 |
| Vimeo | 対応 | 対応 | Vimeoのヘルプセンターでは可能な限りWebVTTを推奨。ファイルはUTF-8が必要。 |
| 対応 | 記載なし | 各種ガイドではSRTのみが説明されており、video.ja_JP.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.en.vtt" srclang="en" label="English" default>
</video>
日本語字幕ならsrclang="ja"、label="日本語"のように指定します。SRTファイルしかない場合は、先に変換してください。字幕を動画に焼き込む方法や短尺動画向けのプラットフォームについては、動画に字幕を付ける方法のガイドをご覧ください。
SRTをVTTに変換する方法(VTTからSRTへの変換も)
2つの形式はよく似ているので、変換作業はほぼ機械的です。短いファイルなら手作業で、長いファイルなら変換ツールを使うのがおすすめです。
SRTからVTTへ手作業で変換する
- 1行目に
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ファイルはブラウザに無視されます。必ず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に変換する方法
- SRT→VTT変換ツールを開く. ブラウザでAudiotextaのSRT→VTT変換ツールを開きます。処理はブラウザ内で行われるため、字幕ファイルがアップロードされることはありません。
- 字幕を貼り付けるかファイルを選ぶ. .srtファイルの中身を入力欄に貼り付けるか、パソコンからファイルを選びます。認識されたキューの数が妥当かどうかを確認してください。
- VTTファイルをダウンロードする. 結果をダウンロードします。変換ツールはWEBVTTヘッダーを追加し、ミリ秒の前のカンマをドットに変えます。タイミングは一切変わりません。
- プレーヤーで確認する. 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 を無料で試す
ファイルをアップロードするかリンクを貼り付けるだけで、数分で文字起こしが完成します。