Subtitle guide Workflow guides

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

Open VTT validator

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:

  • WEBVTT on 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:

  • 404 because the src path is wrong
  • 403 because the caption URL needs authentication
  • an HTML error page served from the caption URL
  • text/plain or application/octet-stream instead of text/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

  1. Validate the VTT file with the WebVTT Validator.
  2. Convert SRT or ASS captions to WebVTT if needed.
  3. Open the .vtt URL directly in Firefox.
  4. Confirm the request returns 200 and Content-Type: text/vtt.
  5. Check Firefox DevTools for CORS, MIME, or 404 errors.
  6. Use explicit kind, src, srclang, label, and default attributes.
  7. Add CORS headers if captions are cross-origin.
  8. Test the final HTTPS page, not only a local preview.

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