WebVTT: the player-side subtitle format
The format every HLS player already understands. SyncWords produces live WebVTT tracks per language, and viewers pick theirs in the player's own caption menu.
- Player-native display
- Every script, natively
- Live and post-event
- Position & length control
Where it rides
Two ways WebVTT reaches your viewers
The path decides how much of the format you get. Direct at the origin, nearly the whole spec is usable. Via a packager, the usable subset is whatever that packager supports.
Direct: HLS at the origin
SyncWords writes WebVTT tracks straight into your existing HLS stream. Because the output targets players rather than a packager, this is the position with the richest styling and positioning.
Converted: CMAF ingest
Between transcoder and packager, SyncWords delivers TTML and your packager converts it, typically to WebVTT. Styling is limited to the subset the packager understands.
The players
JW Player, THEOplayer, HLS.js, Video.js and players built on them render the tracks natively, on desktop, mobile and connected TVs, with DVR and DRM preserved.
After the broadcast
A corrected transcript and VTT file are generated automatically after a live session, ready for the VOD version, and cleaned timed files ship after events.
Presentation control
How the subtitles look
On the direct HLS path, what you configure is what renders.
- Line length
- Maximum line length from 12 to 120 characters, matched to your player layout.
- Line count
- One to five lines per cue.
- Vertical position
- Bottom margin from 0 to 90% of the viewport, to clear lower-thirds and player chrome.
- Scripts
- Cyrillic, Arabic, CJK and Hebrew ride natively, with per-language text direction settable rather than only inferred.
- Language tracks
- Each language is its own track in the manifest, so the player's own selector does the switching.
Frequently asked questions
When should we use WebVTT instead of embedded EIA-608?
Whenever the viewer is on a player rather than a set-top box, and always when the languages go beyond the seven that 608 supports. Many distributions run both: 608 for the broadcast feed, WebVTT tracks for OTT, from the same live session.
Why does styling differ between the HLS path and CMAF ingest?
On the HLS path SyncWords writes the WebVTT itself, so nearly the full spec is usable. On CMAF ingest the packager converts our TTML to WebVTT, so every feature has to survive that conversion; assume a limited subset and confirm against your packager.
How far behind the audio do WebVTT subtitles appear?
For same-language captions in HLS workflows, viewers typically see captions about 5 seconds behind the program audio. Translated subtitles are delivered in real time; the exact behaviour depends on buffer configuration, explained on the latency page.
Can subtitles be burned into the video instead?
Yes, burned-in open captions are available in HLS delivery where a player-side track will not work, for example a screen with no caption support. Most chains prefer the track: viewers can turn it off, and every language can ride the same stream.
Can we reuse the live subtitles for the on-demand version?
Yes. A corrected transcript and VTT are generated immediately after the live session, and the pre-recorded platforms export SRT, WebVTT, TTML/IMSC, SCC and other formats for your archive.
See WebVTT on your player
Bring a test stream and check the rendering in your own player and app before you commit.