Subtitle formats and HLS support
| Subtitle source | Supported path | What to expect |
|---|---|---|
| Local .vtt file | Drag the WebVTT file into the player. | The browser can attach it directly as a subtitle track. |
| Local .srt file | Drag the SRT file into the player. | The player converts it to WebVTT locally before adding the track. |
| HLS WebVTT track | Play the stream normally if the manifest advertises subtitles. | Browser and player support depends on the manifest and track metadata. |
| .ass or .ssa file | Convert it to SRT or VTT before loading. | Styled subtitle formats are not attached directly by this browser player. |
| Burned-in captions | No extra file is needed. | Text is part of the video pixels and cannot be toggled as a track. |
How to add subtitles to an M3U8 stream
- 1Play the M3U8 streamPaste the HLS URL and press Play so the video is loaded before attaching an external subtitle file.
- 2Add a local subtitle fileDrag a .srt or .vtt file onto the video area, or use the subtitle control in the player toolbar.
- 3Let SRT convert to WebVTTIf the file is SRT, the browser converts cue timing and text to WebVTT because native HTML tracks require VTT.
- 4Check timing and languageStart playback and confirm the captions line up with speech. If timing is off, adjust the subtitle file in an editor and reload it.
- 5Use proxy only for stream accessSubtitles are local, but the HLS stream may still need the proxy if CORS or Referer protection blocks playback.
Why SRT needs conversion before browser playback
HTML video tracks use WebVTT, not SubRip SRT. The player reads your local SRT file, converts timestamps and cues into a WebVTT blob in the browser, then attaches that blob to the video element. The conversion is local and does not send the subtitle file to a server.
When external subtitles are better than embedded tracks
External subtitles are useful when the HLS stream has no caption track, the embedded language is wrong, or you are QA-testing translated subtitles before publishing. They also let editors check caption timing against the live HLS playback path instead of a local MP4 export.
What to check when subtitles do not appear
Confirm the file extension is .srt or .vtt, the cue timestamps are valid, and the video has started. If the stream itself is blocked, fix playback first with CORS or Referer settings. Subtitle loading cannot repair a stream that never reaches the player.
Related playback and conversion pages
- HLS stream tester checks whether the stream itself is healthy before subtitle QA starts.
- M3U8 link troubleshooting covers the playback failures that can prevent subtitles from being tested.
- M3U8 to MP4 with no upload explains local browser conversion when you need a file after previewing captions.
Frequently asked questions
Can I add subtitles to an M3U8 stream online?
Yes. Play the M3U8 stream, then add a local .srt or .vtt subtitle file. The subtitle is attached in the browser and is not uploaded.
Does the player support SRT subtitles?
Yes. SRT files are converted to WebVTT locally because browsers display external text tracks through WebVTT.
Are my subtitle files uploaded?
No. The subtitle file is read by your browser, converted if needed, and attached as a local text track. It is not sent to a server.
Can I use ASS or SSA subtitles?
Not directly. Convert ASS or SSA subtitles to SRT or VTT first, then load the converted file into the player.
Why are captions out of sync?
Subtitle timing comes from the subtitle file. If captions are early or late, adjust the cue timestamps in a subtitle editor and reload the corrected file.