Skip to content

SRT から VTT への字幕変換ツール

SubRip ファイルを Web サイト、YouTube、HTML5 動画プレーヤー用の WebVTT に変換します。

SRT ファイルをここにドラッグ&ドロップ

またはクリックして選択

50MB以下の.srtファイルに対応

コアエンジンアーキテクチャ

最も一般的な字幕形式の隔たりを解消

SRT は最も広く使われている字幕形式ですが、ブラウザは受け付けません。HTML5 仕様では <track> 要素に WebVTT が定められており、主要ブラウザはすべてこの要件を強制します。この変換ツールは、必須の WEBVTT ヘッダーを先頭に追加し、SRT のカンマ区切りミリ秒(00:01:30,500)を VTT のピリオド区切り(00:01:30.500)に変換し、VTT で使われない SRT のエントリー番号を削除します。出力は Chrome、Firefox、Safari、Edge、モバイルブラウザですぐ読み込めます。

ペイロード&構文インスペクター

SRT → VTT コード構文と構造の検証

ヘッダー定義、タイムスタンプ構文、キューペイロードのフォーマットを並べて比較し、コードレベルの対応関係を確認できます

ミリ秒同期
input.srt
SRT 入力
1
00:00:01,000 --> 00:00:04,000
Hello, world!
 
2
00:00:04,500 --> 00:00:08,000
This is a subtitle file.
 
3
00:00:08,500 --> 00:00:12,000
Converted locally!
output.vtt
VTT 出力
WEBVTT
 
00:00:01.000 --> 00:00:04.000
Hello, world!
 
00:00:04.500 --> 00:00:08.000
This is a subtitle file.
 
00:00:08.500 --> 00:00:12.000
Converted locally!
仕様シート

SRT vs VTT 技術仕様

規格準拠
入力形式

SRT

SRT

SRT(SubRip)は最も一般的なプレーンテキスト字幕形式です。各エントリーは連番、カンマ区切りミリ秒のタイムスタンプ行(00:01:30,500 --> 00:01:35,000)、1 行以上の字幕テキストで構成されます。SRT にはヘッダー、メタデータ、スタイル指定がなく、ブラウザ以外のほぼすべてのメディアプレーヤーと互換性があります。

出力形式

VTT

VTT

VTT(WebVTT)は HTML5 動画用の W3C 標準字幕形式です。ファイルは WEBVTT ヘッダーで始まり、各キューはエントリー番号なしのピリオド区切りタイムスタンプ(00:01:30.500 --> 00:01:35.000)を持ちます。VTT は位置合わせ用のキューセッティングや、コメント用の NOTE ブロックをサポートします。

フォーマットの違い

SRT のタイムスタンプはカンマ区切り(00:01:30,500)、VTT はピリオド区切り(00:01:30.500)です。
SRT エントリーは連番(1、2、3...)で始まります。VTT キューはオプションの文字列識別子を持てます。
SRT にはファイルヘッダーがありません。VTT は先頭行に WEBVTT という文字列が必要です。
SRT は位置やスタイルを指定できません。VTT はキューセッティング(line、position、align、size)をサポートします。
SRT は text/plain として扱われることが多く、VTT はウェブサーバーから text/vtt で提供すべきです。
SRT はデスクトップメディアプレーヤーで認識され、VTT はブラウザと JavaScript 動画プレーヤーで認識されます。

変換のトラブルシューティングと注意点

プレイヤー互換性、文字エンコーディング、タイミング同期に関する実践的な解決策

4 個の注意点
GOTCHA #1

ブラウザのコンソールで「Failed to load resource」が表示されたり、.vtt トラックが拒絶されるのはなぜですか?

Webブラウザでは、静的サーバーが WebVTT ファイルを正確な MIME タイプ「text/vtt; charset=utf-8」で配信する必要があります。また、動画と字幕が異なるドメインに配置されている場合は、サーバーが適切な CORS ヘッダー(Access-Control-Allow-Origin: *)を返す必要があります。設定されていない場合、セキュリティ上の理由から Chrome や Safari によって字幕トラックがブロックされます。

GOTCHA #2

HTML5 動画プレーヤー(Video.js、Plyr、ネイティブプレーヤー)で字幕の同期がずれたり狂ったりする

WebVTT はタイムスタンプが時系列順であることを厳格に要求します。元の SRT ファイルに順序の乱れ、重複したタイムスタンプ、負の継続時間が含まれている場合、ブラウザの WebVTT パーサーが以降のキューを表示できなくなることがあります。AllSubConverter は書き出し時にキューを時系列順に並べ替え、タイムスタンプ範囲を安全に正規化します。

GOTCHA #3

SRT の基本 HTML タグ(<b>、<i>、<font>)が WebVTT で意図通りに動作しないのはなぜですか?

WebVTT は音声タグ `<v 名前>`、CSS クラス `<c.クラス名>`、太字 `<b>`、斜体 `<i>` をネイティブにサポートしていますが、旧来の `<font color=...>` タグには対応していません。WebVTT トラックの文字色などを装飾する場合は、CSS の ::cue 擬似要素(例:video::cue { color: yellow; })を使用してください。

GOTCHA #4

アクセント付き文字や絵文字が Web ページで文字化けするのはなぜですか?

WebVTT ファイルは常に UTF-8 でエンコードする必要があります。元の SRT が ANSI/Windows-1252 や GBK で作られていると、ASCII 外の文字は壊れます。本ツールはバイト順マーク(BOM)なしの UTF-8 で出力します。

機能

ブラウザーが要求する必須の WEBVTT ヘッダーを先頭行に追加
SRT のカンマ区切りタイムスタンプ(00:01:30,500)を VTT のピリオド区切り(00:01:30.500)に変換
VTT 形式では不要な SRT の連番エントリー番号を削除
オプション識別子なしのキューを出力し、VTT を最小構成に保つ
BOM、CRLF、LF 行末の SRT ファイルを柔軟に処理
改行や特殊文字を含む字幕テキストを正確に保持
最新ブラウザとウェブプレーヤーが認識する UTF-8 の VTT を出力
字幕をアップロードせず、ブラウザ内でローカル処理

変換する理由

HTML5 の <video> 要素で <track> タグ経由で読み込めるのは WebVTT だけです。ブラウザは SRT ファイルを無視します。
YouTube の字幕アップロードは、キュー時間を保持した VTT ファイルを受け付けます。
Video.js、Plyr、JW Player、Shaka Player は標準トラック API を通じて VTT をネイティブに読み込みます。
WebVTT は HTML5 動画やブラウザプレイヤーのキャプションとして広く利用されています。
学習管理システムでは、アクセシブルな動画キャプションに VTT がよく使われます。
VTT のキューセッティングにより、SRT では表現できない基本的な位置指定が可能になります。
CDN で配信される VTT ファイルは、ウェブサーバーが正しい text/vtt MIME タイプで提供することでブラウザ互換性が保たれます。
Scenarios

主なユースケース

ウェブサイト動画の埋め込み

ウェブサイトの HTML5 動画に字幕を追加します。ブラウザは <track> 要素経由の VTT を要求し、SRT 字幕は表示しません。

YouTube キャプションのアップロード

YouTube Studio から VTT 字幕をアップロードし、動画に正確に同期したキャプションを提供します。

e ラーニングのアクセシビリティ

教育動画に VTT キャプショントラックを用意し、アクセシビリティ要件に合わせて内容とタイミングを確認します。

独自動画プレーヤー開発

Video.js、Plyr、Shaka Player などの JavaScript 動画プレーヤーで、標準 <track> API を使って VTT 字幕トラックを読み込みます。

SNS 動画字幕

一部の SNS やウェブベースの動画エディタは VTT を受け付けるため、宣伝動画や SNS 動画にキャプションを追加できます。

Format Ecosystem

関連フォーマット

使い方

  1. 1

    .srt ファイルを変換ツールにドラッグするか、クリックして選択します。

  2. 2

    パーサーが各 SRT エントリーの番号、タイムスタンプ行、テキストブロックを読み取ります。

  3. 3

    タイムスタンプのカンマをピリオドに置き換えます(00:01:30,500 は 00:01:30.500 になります)。

  4. 4

    VTT ではオプションのキュー識別子を使うため、SRT の連番エントリー番号を削除します。

  5. 5

    出力の先頭行に WEBVTT ヘッダーを追加します。

  6. 6

    整理された各エントリーが、タイムスタンプとテキストを含む VTT キューブロックになります。

  7. 7

    最終的な VTT コンテンツは UTF-8 としてエンコードされ、ダウンロードできます。

よくある質問

HTML5 仕様では、<track> 要素に使える字幕形式として WebVTT だけが定められています。ブラウザには SRT パーサーがなく、<track> タグで SRT ファイルを指定しても無視されます。SRT を VTT に変換すると、ブラウザ互換の字幕ファイルになります。

違いは小数点区切りだけです。SRT はカンマ(00:01:30,500)、VTT はピリオド(00:01:30.500)を使います。変換ツールはタイムスタンプ行のカンマをピリオドに置き換えます。時間、分、秒、ミリ秒のほかの要素はすべて同じです。

はい。YouTube は字幕アップロードに VTT ファイルを受け付けます。YouTube Studio で動画を選び、字幕セクションから VTT をアップロードし、取り込み後のタイミングを確認してください。

すべての VTT ファイルは先頭行に WEBVTT という文字列と、その後の空行が必要です。このヘッダーがないとブラウザはファイルを拒否し、字幕が表示されません。変換ツールが自動的に追加します。

はい。VTT は SRT のような連番を使いません。代わりにオプションの文字列識別子をキューに指定できます。このツールは SRT の数値エントリーを削除します。識別子が必要な場合は後から追加できますが、VTT 仕様上は必須ではありません。

いいえ。字幕テキストは正確に保持されます。変更されるのはファイル形式だけです。ヘッダーの追加、タイムスタンプ区切りのカンマからピリオドへの変更、エントリー番号の削除が行われ、改行、特殊文字、テキストはすべて元のままです。

字幕を変換する準備はできましたか?

SRT ファイルをここにドロップして VTT に即座に変換。