Work through the causes in this order
Resist the urge to re-download the file. Nearly every case is one of seven causes, and they are cheap to rule out one at a time.
| Symptom | Most likely cause | Fix |
|---|---|---|
| Nothing, ever, in any player | Wrong format or empty file | Convert; check the file has cues |
| Works in VLC, not on the web | SubRip instead of WebVTT | Convert to VTT |
| Works on desktop, not on TV | Filename or encoding | Match the video filename; save UTF-8 |
| Appears, then stops halfway | Malformed section or section slip | Clean, then check sync |
| Garbled characters but visible | Encoding damage | Repair encoding |
| Visible only at the very start | Timing shorter than the video | Re-time the track |
| Only some viewers see it | Track not enabled by default | Mark it default, or tell them to enable it |
1. The format does not match the destination
This is the most common cause by a wide margin. SubRip (.srt) is the universal file format, but an HTML5 <track> element accepts only WebVTT. Point a browser at an SRT and it will ignore it completely, with no console error. If your captions are on a web page, convert to VTT first.
Upload boxes are stricter still. Some platforms accept only one format regardless of what their documentation implies. See subtitle file formats for which one to send where.
2. The filename does not match
Desktop players and TVs load external subtitles by convention: the file sits beside the video and shares its name. movie.mp4 looks for movie.srt. A file called movie.eng.srt or subtitles.srt will often be ignored, and the behaviour differs between players — which is exactly why this cause is so confusing.
Rename to match the video exactly, or use the player's explicit "load subtitle file" menu item, which bypasses the convention entirely.
3. The track exists but is not enabled
With multiple language tracks, most players start with captions off unless one is marked default. On the web, that is the default attribute on the <track> element. In a media player, it is the subtitle or audio menu.
Before changing anything, switch captions on manually. If they appear, the file was fine all along.
4. The file is empty, or the cues are malformed
Open it in a text editor. A subtitle file must have a timestamp line containing --> for every cue, and a blank line between cues. WebVTT additionally needs the WEBVTT header and a blank line after it. A file missing the header parses as empty — valid-looking, zero cues.
Run the file through Clean subtitles to normalise spacing, drop empty cues and remove stray markup. If the output is still empty, the structure is broken and you should re-export from the original source.
5. The text is damaged, not missing
If captions appear but show Café, â or Cyrillic-looking garbage, the file is fine — it was read with the wrong character encoding. The bytes are intact, so this is fully recoverable: repair the encoding, then save the result as UTF-8.
If you see plain question marks or empty boxes instead, the characters were already lost when the file was written and cannot be recovered by any tool.
6. The timing is outside the video
Subtitles that appear for the first twenty seconds and then vanish are usually a timing problem, not a playback problem. It happens when a track was timed against a different cut of the video, or when the subtitle file is shorter than the recording.
Compare the last cue's timestamp with the video duration. If they differ by a constant amount, shift the track. If the error grows through the file, it is a frame-rate mismatch and you need to resample instead — see fixing out-of-sync subtitles.
7. Hardcoded versus soft subtitles
If captions are visible on every device, cannot be turned off and survive being uploaded anywhere, they are burned into the picture. No subtitle file will change them, and none needs to. Confusing the two leads people to chase a file problem that does not exist.
Soft subtitles are a separate track the player renders. If you need to go from soft to hard, that is a video encoding step, not a subtitle editing one.
A sixty-second checklist
- Open the file in a text editor — does it contain cues with
-->timestamps? - Is the text readable, or garbled?
- Does the extension match the destination's requirement?
- Does the filename match the video, if it is being auto-loaded?
- Are captions switched on in the player?
- Does the last timestamp roughly match the video length?
If all six pass and subtitles still do not appear, the problem is on the platform side — its upload may still be processing, or its caption settings may require the track to be published explicitly.