Why Chrome captions are not showing
TL;DR — Diagnose captions that fail in Chrome by checking WebVTT files, delivery headers, cross-origin access, and HTML5 track markup.
Related tool
WebVTT Validator Online
Chrome caption problems are usually easier to debug than Safari issues because DevTools shows failed track requests clearly. The hard part is knowing whether the browser rejected the caption file, never loaded it, or loaded it but did not enable the track.
Quick answer
Start with the WebVTT Validator. Chrome’s HTML5 <track> element expects a real WebVTT file with a WEBVTT header, dot-based timestamps, and valid cue order.
Then open the deployed .vtt URL directly in Chrome. If the URL returns HTML, a 404 page, a login page, or a file served with the wrong headers, the video player will not show captions reliably.
If your source file is SRT, convert it with the SRT to VTT Converter before attaching it to a browser video player.
Check the VTT file first
Chrome does not read SRT syntax from an HTML5 track. A valid VTT file starts like this:
WEBVTT
00:00:01.000 --> 00:00:03.500
First caption line.
00:00:04.000 --> 00:00:06.200
Second caption line.
Check for:
WEBVTTon the first line- timestamps with dots, not SRT commas
- blank lines between cues
- cue start times before cue end times
- readable UTF-8 text
If the file was exported as SRT, do not rename it to .vtt. Convert it. For the full workflow, see how to convert SRT to VTT for HTML5 video.
Check the track request in DevTools
Open Chrome DevTools, reload the page, and look at the Network tab for the .vtt request.
The track URL should return:
HTTP/2 200
Content-Type: text/vtt
Common failures include:
404because thesrcpath is wrong403because the caption URL needs authenticationtext/htmlbecause the server returned an error pagetext/plainorapplication/octet-streambecause the host does not know the VTT MIME type- CORS errors when captions are served from another domain
For delivery fixes, use how to fix VTT MIME type for HTML5 video and how to fix CORS errors for VTT subtitles.
Check the HTML track markup
Use explicit track metadata:
<video controls crossorigin="anonymous">
<source src="/videos/demo.mp4" type="video/mp4" />
<track
kind="captions"
src="/captions/demo.en.vtt"
srclang="en"
label="English"
default
/>
</video>
The default attribute makes Chrome enable that track automatically. Without it, viewers may need to turn captions on from the player menu.
If the VTT file is cross-origin, keep crossorigin="anonymous" on the video element and send the matching CORS header from the caption host.
Check Chrome caption settings
If the VTT file loads and the track is enabled but captions are still invisible, check browser-level caption styling.
In Chrome, open:
chrome://settings/accessibility
Then review live caption and caption style settings. This is less common than a broken VTT file or blocked track URL, but it can make captions look hidden or unreadable during testing.
Common Chrome caption mistakes
Using SRT in a track element
Chrome does not support SRT directly in native HTML5 text tracks.
Fix: Convert SRT to WebVTT with the SRT to VTT Converter.
Serving captions from a private URL
The page may load for you while the caption file returns a login page, signed URL error, or 403 response.
Fix: Open the VTT URL in a private browser window and confirm it returns caption text.
Forgetting CORS for CDN captions
If the video page and caption file are on different origins, Chrome needs permission to read the VTT file.
Fix: Add Access-Control-Allow-Origin on the caption response and crossorigin="anonymous" on the video element.
Track exists but is not enabled
The file can be valid and loaded, but no track is selected.
Fix: Add default for the primary caption track or test by manually enabling captions from the player controls.
Troubleshooting checklist
- Validate the file with the WebVTT Validator.
- Convert SRT or ASS captions to WebVTT if needed.
- Open the
.vttURL directly in Chrome. - Confirm the request returns
200andContent-Type: text/vtt. - Check the DevTools console for CORS or MIME warnings.
- Use explicit
kind,src,srclang,label, anddefaultattributes. - Add CORS headers if the caption file is cross-origin.
- Check Chrome accessibility caption settings if the track loads but text is invisible.
Related guides
- Why subtitles do not show in HTML5 video
- Why VTT captions are not loading
- Why Safari captions are not showing
- How to fix VTT MIME type for HTML5 video
Related tools
Use the WebVTT Validator Online
Validate WebVTT captions online and check missing WEBVTT headers, timestamp syntax, cue order, and HTML5 caption issues. No signup, no upload, and everything runs locally in the browser.
Open VTT validator