Why Firefox captions are not showing
TL;DR — Diagnose captions that fail in Firefox by checking WebVTT files, delivery headers, cross-origin requests, and HTML5 track setup.
Related tool
WebVTT Validator Online
Firefox caption problems usually come down to the same few browser delivery issues: the file is not valid WebVTT, the track URL is wrong, the server sends the wrong headers, or the caption track is loaded but not enabled.
Quick answer
Validate the caption file with the WebVTT Validator first. Firefox expects a real WebVTT file with a WEBVTT header, dot-based timestamps, valid cue timing, and blank lines between cues.
Then open the deployed .vtt URL directly in Firefox. If the URL returns an HTML error page, requires login, downloads as a generic file, or is blocked by CORS, the video player will not show captions reliably.
If your source captions are SRT, convert them with the SRT to VTT Converter before adding them to an HTML5 video track.
Validate the WebVTT file
Firefox does not read plain SRT syntax from a native HTML5 <track> element. A browser-ready VTT file should start 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- dot-based timestamps instead of SRT commas
- blank lines between cues
- cue start times before cue end times
- UTF-8 text that renders correctly
If the file was exported as SRT, convert it instead of renaming it. For a full workflow, see how to convert SRT to VTT for HTML5 video.
Check the VTT request in Firefox DevTools
Open Firefox Developer Tools, reload the page, and check 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 authentication- an HTML error page served from the caption URL
text/plainorapplication/octet-streaminstead oftext/vtt- CORS errors when the caption file is served from another origin
For server-side 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 a normal HTML5 video track with explicit 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 tells Firefox which caption track should be active when the video loads. Without it, the viewer may need to choose captions from the player controls.
If captions are hosted on another domain or CDN, keep crossorigin="anonymous" on the video element and send a matching Access-Control-Allow-Origin header from the caption host.
Check caption controls and styling
If Firefox loads the VTT file but captions still do not appear, confirm the track is selected in the video controls. Also check that custom CSS is not hiding the caption area or making text unreadable.
Firefox may show different native controls from Chrome or Safari, so test the actual browser instead of assuming one browser’s result applies everywhere.
Common Firefox caption mistakes
Renaming SRT to VTT
Firefox expects WebVTT structure, not just a .vtt extension.
Fix: Convert the file with the SRT to VTT Converter and validate the output.
Wrong MIME type
Some static hosts serve .vtt files as text/plain or application/octet-stream.
Fix: Configure .vtt files to use Content-Type: text/vtt.
Cross-origin captions without CORS
If the page is on one origin and captions are on another, Firefox needs permission to read the track file.
Fix: Add CORS headers to the caption response and use crossorigin="anonymous" on the video element.
Caption track is loaded but not selected
The file can load successfully while captions remain off.
Fix: Add default for the primary track or manually enable captions from the browser video controls during testing.
Troubleshooting checklist
- Validate the VTT file with the WebVTT Validator.
- Convert SRT or ASS captions to WebVTT if needed.
- Open the
.vttURL directly in Firefox. - Confirm the request returns
200andContent-Type: text/vtt. - Check Firefox DevTools for CORS, MIME, or 404 errors.
- Use explicit
kind,src,srclang,label, anddefaultattributes. - Add CORS headers if captions are cross-origin.
- Test the final HTTPS page, not only a local preview.
Related guides
- Why subtitles do not show in HTML5 video
- Why VTT captions are not loading
- Why Chrome captions are not showing
- Why Safari captions are not showing
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