Best subtitle format for Video.js
TL;DR — Learn why WebVTT is safest for Video.js captions, when SRT needs conversion, and how to test subtitle files in browser playback.
For most Video.js subtitle workflows, VTT is the safest default format.
Video.js runs in the browser, so caption delivery should follow browser-friendly subtitle rules. SRT can be a good source format, but WebVTT is the safer final file for a player integration.
Quick answer
If your source subtitles are in SRT, convert them to VTT before attaching them to a browser video player.
That keeps your caption workflow aligned with the format most commonly expected in web playback.
Why VTT fits Video.js better
Video.js sits in a browser-first environment, so it benefits from the subtitle format designed for that environment.
WebVTT is a good match because it:
- is built for web playback
- uses the
WEBVTTstructure browser tooling expects - is easier to reason about in HTML5 video workflows
It also gives developers a cleaner debugging path. If the VTT file is valid, caption issues are more likely to come from the player setup, track configuration, or how the file is served.
When SRT still appears
SRT still shows up because it is common in:
- exports from transcription tools
- old subtitle archives
- handoffs from collaborators
That does not make it the best final delivery format for a browser player.
Use SRT for review, translation, or archive. Convert the browser delivery copy to VTT before wiring it into Video.js.
Video.js caption checklist
- Use a
.vttfile for browser playback. - Confirm the file begins with
WEBVTT. - Confirm timestamps use dots, not commas.
- Serve the caption file from a URL the page can request.
- Test with the same Video.js setup that will be used in production.
Practical workflow
- Start with the original subtitle file.
- If it is already
VTT, test it directly. - If it is
SRT, use the SRT to VTT Converter. - If it is
ASS, convert it to VTT before browser playback. - Attach the VTT file to the player and test caption rendering.
If Video.js does not show captions
Check the file first. A missing header, SRT-style timestamps, broken encoding, or a file renamed without conversion can stop captions before Video.js configuration becomes relevant.
If the file passes those checks, inspect the player track configuration, caption URL, and browser console. For a broader failure checklist, use Why subtitles do not show in HTML5 video.
Common mistakes
Treating every subtitle file as interchangeable
Two files can contain the same lines and timing but still behave differently in browser playback because their wrappers differ.
Testing only in an editor
Always test the final file in the real playback environment. A subtitle file that looks fine in a text editor can still fail in the player.
Shipping the source file instead of the delivery file
Keep the SRT or ASS source if it helps the workflow, but ship the VTT file to Video.js unless your implementation has a specific reason to do otherwise.
Related guides
Use the SRT to VTT Converter
Convert SubRip subtitle files into WebVTT format for HTML5 video and browser players. No signup, no upload, and everything runs locally in the browser.
Open SRT to VTT