SRT字幕はVTTに、VTT字幕はSRTに変換します
SRTとVTT(WebVTT)は、動画ファイルとは別に用意するテキスト形式の字幕です。上の変換ツールに字幕を貼り付けるかファイルを開くと、形式を自動で判別して反対の形式にすぐ変換します。字幕の開始・終了時刻は1000分の1秒までそのまま保ち、時刻のカンマとピリオド、書式タグ、位置の指定のように、2つの形式で書き方が異なる部分だけを規則に沿って書き換えます。
変換した結果は、上の画面で時刻どおりに表示して実際の再生に近い形で確認できます。手元の動画ファイルを開けば、その動画の上に結果の字幕を重ねてセリフと合っているかを確かめられ、ずれていれば同期のずらしに秒数を入れてすべての字幕をまとめて動かせます。貼り付けた字幕も開いた動画も、サーバーには送らずこのブラウザー内だけで処理します。
字幕の形式を変えたいとき
2つの形式は見た目が似ているため拡張子を変えるだけで済みそうに思えますが、受け取る側が決めた形式と違うと、字幕がまったく表示されなかったり時刻を読み取れなかったりします。次のような場面で形式を変換します。
- Webページの動画に字幕を付けるとき: HTMLの動画に字幕を付ける
<track>要素はWebVTTファイルを使います(MDN)。編集ソフトで書き出したSRTをWeb動画で使うには、VTTへの変換が必要です。 - YouTubeに字幕をアップロードするとき: YouTubeは両方の形式を受け付けますが、SRTは基本的な形式のみ対応で書式の指定は認識されず、UTF-8のファイルである必要があると案内されています。VTTは位置の指定と、太字・斜体・下線(b・i・u)に対応すると書かれています。斜体や画面上部の字幕を残したいなら、VTTでアップロードするほうが向いています。
- Webから入手したVTTを別のソフトで使うとき: オンライン講座や会議の録画からダウンロードしたVTT字幕を、SRTしか読めないプレーヤーや編集ソフトで使うには、SRTに変換します。
- 形式はそのままで同期だけ合わせたいとき: 動画の冒頭をカットした、あるいはオープニングを付け足したために字幕が一定の間隔で早い・遅いときは、出力形式を元データと同じにして、同期のずらしだけを入れて保存します。
変換ツールの使い方
- 字幕を入れる: 下のテキスト欄に貼り付けるか、ファイルを開くを押します。作業エリアにファイルをドラッグ&ドロップしても開けます。最初に表示されている例は、テキスト欄をクリックすると全体が選択されるので、貼り付けた時点で置き換わります。
- 形式を確認する: 一番上の元データの欄に、判別した形式と字幕の件数が表示されます。出力形式は反対の形式に自動で決まり、同期だけをずらすときは元データと同じ形式を選びます。
- 画面で再生して確認する: 再生ボタンか画面をクリックすると、結果の字幕が時刻どおりに表示されます。タイムラインのバーをクリックするとその字幕に移動し、タイムラインを選んだあとは矢印キーで前後の字幕に移れます。比較ウィンドウには、いま表示している字幕の元の行と結果の行が並んで表示されます。
- 自分の動画で見る: 動画ファイルを開くと画面がその動画に切り替わり、結果の字幕が上に重なります。動画はこのブラウザー内でのみ再生されます。
- 同期を合わせる: 字幕がセリフより遅いときは同期のずらしにマイナスの値(−0.5)、早いときはプラスの値(+0.5)を入れます。−と+のボタンは0.1秒ずつ動かします。
- 変更点を確認して持ち出す: 変換内容のチップをクリックすると、その種類に当てはまる字幕へ順に移動します。保存で.vttまたは.srtファイルとして書き出すか、コピーします。中央の⇄ボタンは、結果を元データに移して反対方向にもう一度変換してみる操作です。
SRTとVTTの違い
| 項目 | SRT | VTT(WebVTT) |
|---|---|---|
| 先頭行 | なし(すぐに1番の字幕) | WEBVTTで始める必要があり、ないと読み込まれない |
| 字幕の番号 | 1から順に振る | なくてもよい(識別子。文字でもよいが、ファイル内で重複は不可) |
| 時刻の表記 | 00:01:02,500(カンマ) | 00:01:02.500(ピリオド)、0時なら01:02.500も可 |
| 字幕の順序 | 決まった規則なし | 開始時刻が前の字幕より早いのは不可、重なるのは許容 |
| 書式 | HTML由来の太字・斜体・下線・色のタグ | b・i・u・c(クラス)・v(話者)・ruby・lang、単語ごとの時刻 |
| 文字色 | <font color> | 既定の色クラス8個(white・lime・cyan・red・yellow・magenta・blue・black)、それ以外はSTYLEブロックのCSS |
| 位置 | 決まった方法なし | 時刻行の末尾の設定(line・position・alignなど) |
| メモ・スタイル | なし | NOTE・STYLE・REGIONブロック |
| 特殊文字 | 文字のまま | &・<は&・<と書き、字幕内に-->は不可 |
| 文字エンコーディング | 決まった標準なし | UTF-8 |
| 規格 | 正式な規格なし(米国議会図書館の資料) | W3C WebVTT |
変換で引き継ぐものと外すもの
片方の形式にしかない表記は、対応する表記があれば引き継ぎ、入れる場所がなければ文字は残して表記だけを外します。外したものは何件あったかが変換内容に表示され、字幕ごとに何が変わったかは比較ウィンドウで確認できます。
| 元データ | 結果 | 説明 |
|---|---|---|
| SRT → VTT | ||
<i>ことば</i> | <i>ことば</i> | b・i・uは両方の形式にあるので、そのまま残します。 |
<font color="#ffff00">ことば</font> | <c.yellow>ことば</c> | WebVTTの既定の8色と同じ色は、色クラスに置き換えます。 |
<font color="#ff8800">ことば</font> | ことば | 既定の8色にない色とフォントのタグは、タグだけを外します。 |
{\an8}ことば | ことば | 画面上部の表記({\an7}~{\an9})は時刻行の末尾のline:0に置き換え、それ以外の{\…}表記は外します。 |
A & B < C | A & B < C | VTTで文字として使えない記号は、文字参照で書きます。 |
| VTT → SRT | ||
<v ゆき>ことば | ことば | 話者の表示は外します。スイッチをオンにすると、ゆき: ことばのように名前を前に付けます。 |
<c.yellow>ことば</c> | <font color="yellow">ことば</font> | 既定の8色のクラスは、font色に置き換えます。 |
<c.note>ことば</c> | ことば | STYLEで定義したクラスはSRTでは意味を持たないため、外します。 |
<00:00:01.500>ことば | ことば | 単語ごとの時刻はSRTにないので、外します。 |
<ruby>漢字<rt>かんじ</rt></ruby> | 漢字(かんじ) | ルビ(読み方)はかっこに入れます。 |
& < | & < | 文字参照は文字に戻します。 |
00:00:01.000 --> 00:00:02.000 align:start | 00:00:01,000 --> 00:00:02,000 | 位置・配置の設定はSRTに入れる場所がないので、外します。 |
NOTE・STYLE・REGIONブロック | (削除) | メモとスタイルの定義も外します。ファイル冒頭のKind:・Language:行も同様です。 |
出力形式を元データと同じにした場合は、上の表の変換は行わず、字幕の文章・設定・ブロックはそのままで、時刻だけをずらします。VTTからSRTに変換するときは字幕の番号を1から振り直し、SRTからVTTに変換するときは番号を書きません。
1つの字幕が変わる様子
例のSRTの4番・5番と同じく文字色と画面上部の指定を使った2つの字幕を、VTTに変換した結果です。
| SRTの元データ | VTTの結果 |
|---|---|
4
00:00:09,700 --> 00:00:12,600
<font color="#ffff00">黄色の文字</font>はそのまま
5
00:00:11,800 --> 00:00:14,000
{\an8}[画面上部] A & B | WEBVTT 00:00:09.700 --> 00:00:12.600 <c.yellow>黄色の文字</c>はそのまま 00:00:11.800 --> 00:00:14.000 line:0 [画面上部] A & B |
4番は黄色(#ffff00)がWebVTTの既定の8色に含まれるためc.yellowに置き換え、5番は画面上部の表記をline:0に、&を&に書き換えています。この2つの字幕は11.8秒から12.6秒までの0.8秒間重なっていますが、そのまま残します。WebVTTは字幕どうしが重なってもよいと定めており、2人が同時に話す場面のように、意図して重ねた字幕である可能性があるためです。
同期のずらしの計算方法
同期のずらしに入れた値は、すべての字幕の開始・終了時刻に同じだけ加えます。加えた結果が0秒より前になる場合、開始は0秒に合わせ、終了まで0秒より前になった字幕は結果から外します。
| 元の時刻 | +1.5秒 | −2秒 |
|---|---|---|
00:00:01,000 --> 00:00:03,400 | 00:00:02,500 --> 00:00:04,900 | 00:00:00,000 --> 00:00:01,400(開始は0秒に) |
00:00:00,500 --> 00:00:01,800 | 00:00:02,000 --> 00:00:03,300 | 削除(終了も0秒より前) |
最初は合っているのに、後半に行くほどずれが大きくなる場合は、1つの値では合わせられません。字幕を作るときに基準にした動画と、いま使っている動画で再生速度が違うと起こる現象で、この変換ツールは時刻を比率で伸ばしたり縮めたりはしません。
よくある間違い
- 拡張子だけを変える: .srtファイルの名前を.vttに変えただけでは、先頭行にWEBVTTがないため、WebVTT規格の解釈どおりならファイル全体が読み込まれません。時刻のカンマもそのまま残ります。
- カンマとピリオドが混ざる: 手作業で直したSRTに
00:00:01.500のようにピリオドが混ざると、読み込めないソフトがあります。この変換ツールは読み込み時にどちらも受け付け、結果は形式に合わせて書き直し、直した箇所は変換内容の「時刻の区切り文字を修正」として数えます。 - 字幕の間の空行が抜ける: SRTは空行で字幕を区切ります。空行が抜けると、次の番号と時刻が前の字幕の文章として読まれることがあります。変換ツールは番号と時刻の行を見て分け、「つながっていた字幕を分割」として知らせます。
- 終了時刻が開始時刻より前の字幕: 手作業で時刻を直しているときによく起こります。どちらの値が正しいのか推測できないため、変換を止めて何行目かを知らせます。元データで見るを押すとその行に移動します。
- 古い文字エンコーディングの字幕をそのままアップロードする: 古い日本語のSRTには、Shift_JISで保存されたファイルがあります。YouTubeはSRTがUTF-8である必要があると案内しているため、ファイルを開いて読み込んだあとに保存し、UTF-8のファイルにしてからアップロードします。
- 重なった字幕をエラーと見なして消す: タイムラインで斜線の表示になる重なった字幕は、意図して重ねてある場合があります。再生してみて、本当に誤りのときだけ元データで直します。
制限と注意
- SRTとVTTのテキストファイルを、10MB・字幕20,000個まで変換します。SMI・ASS・SBVなど他の字幕形式は読み込めません。
- プレビュー画面は、結果の字幕の時刻と文字、基本的な書式と色、画面上部の表示を再現します。実際のプレーヤーでは書体・サイズ・位置が異なる場合があり、STYLEブロックのCSSはプレビューに使いません。
- 動画は、このブラウザーが再生できる形式のものだけ開けます。動画も字幕もサーバーには送りません。
- 終了時刻が開始時刻より前か同じ字幕や、読み取れない時刻がある場合は変換しません。テキストのない字幕は削除し、その件数を知らせます。
- 結果はUTF-8(BOMなし)、改行はLFで保存します。
基準日 形式の規則とプラットフォームの案内は、2026-10-20に原文で確認しました。
出典
- 01W3C: WebVTT, The Web Video Text Tracks FormatWEBVTTで始まる・UTF-8、時刻の形式、識別子の一意性、開始時刻の順序と重なりの許容、字幕内の-->禁止と& <の文字参照、既定の色クラス8個、NOTE・STYLE・REGION
- 02米国議会図書館: SubRip Subtitle format (SRT)番号・時刻(カンマ)・文章・空行の構造、正式な規格がないこと、HTML由来の太字・斜体・下線・色、文字エンコーディングの標準がないこと
- 03MDN: <track> 要素動画・音声の字幕トラックファイルはWebVTT(.vtt)形式
- 04YouTubeヘルプ: 対応している字幕ファイルSRTは基本形式のみ・書式は非対応・UTF-8、WebVTTは位置指定に対応・書式はb・i・u
- 05WHATWG: Encoding Standardブラウザーが読み込めるEUC-KR・Shift_JIS・windows-1252のラベルとUTF-8のBOM
よくある質問
SRTとVTTは何が違いますか?
どちらも動画とは別に用意するテキスト形式の字幕です。VTT(WebVTT)は先頭行がWEBVTTで、時刻のミリ秒の前にピリオドを使い、位置・スタイル・メモを書けるW3Cの規格です。SRTは番号・時刻・文章を空行で区切り、ミリ秒の前にカンマを使う、正式な規格がないまま広く使われている形式です。
SRTをVTTに変換すると、同期はずれますか?
ずれません。開始・終了時刻は1000分の1秒までそのままで、表記だけを00:00:01,250から00:00:01.250に書き換えます。同期のずらしの欄に値を入れたときだけ、すべての時刻がその分だけ動きます。
字幕が映像より遅れて出るときは、どう合わせますか?
「自分の動画で見る」で動画を開き、再生しながらずれの大きさを確認します。字幕が遅いときは同期のずらしにマイナスの値(例: −0.8)、早いときはプラスの値を入れます。0秒より前に押し出された開始は0秒になり、終了まで0秒より前になった字幕は外れます。後半ほどずれが大きくなる場合は、1つの値では合わせられません。
斜体や色などの書式はそのまま残りますか?
b・i・uのタグは、どちらの形式でもそのまま残します。SRTのfont colorのうちWebVTT既定の8色(white・lime・cyan・red・yellow・magenta・blue・black)は、c.yellowのような色クラスに、反対方向の変換ではfont colorに置き換えます。それ以外の色やフォントのタグは、タグだけを外して文字は残します。
VTTの位置設定やNOTE・STYLEは、SRTに変換するとどうなりますか?
SRTにはそれらの情報を書く場所がないため、外します。何件外したかは変換内容に表示され、字幕ごとに何が外れたかは比較ウィンドウで確認できます。VTTのまま同期だけをずらしたいときは、出力形式をVTTにしておけば、設定とブロックがすべて残ります。
日本語の字幕が文字化けして見えるときは、どうすればよいですか?
ファイルを開くと、BOM、UTF-8、Shift_JISの順に文字エンコーディングを判別し、どれで読み込んだかをテキスト欄の上に表示します。結果は常にUTF-8で保存されるため、古いShift_JISの字幕も、開いてから保存すればUTF-8のファイルになります。すでに文字化けした文字を貼り付けた場合は、元のファイルを開き直してください。
字幕や動画のファイルはサーバーにアップロードされますか?
アップロードされません。字幕の変換も動画の再生もすべてこのブラウザー内で処理し、貼り付けた内容や開いたファイルを、サーバーへ送ったりアドレスや保存領域に残したりすることはありません。
どこまでのファイルを変換できますか?
SRTとVTT形式のテキストファイルを、10MB・字幕20,000個まで変換します。SMI・ASS・SBVなど他の字幕形式は読み込めません。終了時刻が開始時刻より前、または読み取れない時刻があるときは、変換を止めて何行目かを知らせます。