<track>: The Embed Text Track element
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
The<track>HTML element is used as a child of the media elements,<audio> and<video>.Each track element lets you specify a timed text track (or time-based data) that can be displayed in parallel with the media element, for example to overlay subtitles or closed captions on top of a video or alongside audio tracks.
Multiple tracks can be specified for a media element, containing different kinds of timed text data, or timed text data that has been translated for different locales.The data that is used will either be the track that has been set to be the default, or a kind and translation based on user preferences.
The tracks are formatted inWebVTT format (.vtt files) — Web Video Text Tracks.
In this article
Try it
<video controls src="/shared-assets/videos/friday.mp4"> <track default kind="captions" srclang="en" label="English" src="/shared-assets/misc/friday.vtt" /> Download the <a href="/shared-assets/videos/friday.mp4">MP4</a> video, and <a href="/shared-assets/misc/friday.vtt">subtitles</a>.</video>video { width: 250px;}video::cue { font-size: 1rem;}Attributes
This element includes theglobal attributes.
defaultThis attribute indicates that the track should be enabled unless the user's preferences indicate that another track is more appropriate. This may only be used on one
trackelement per media element.kindHow the text track is meant to be used. If omitted the default kind is
subtitles. If the attribute contains an invalid value, it will usemetadata.The following keywords are allowed:subtitlesSubtitles provide transcription or translation of the dialog. They are suitable for when the sound is available but not understood, such as speech or text that is not English in an English language film. Subtitles may contain additional content, usually extra background information. For example the text at the beginning of the Star Wars films, or the date, time, and location of a scene. Subtitles' information complements the audio and video. It is often embedded in the video itself, but can also be provided separately, especially for whole-film translations.
captionsClosed captions provide transcription or translation of the dialog, sound effects, relevant musical cues, and other relevant audio information, such as the cue's source (e.g., character, environment). They are suitable for when sound is unavailable or not clearly audible (e.g., because it is muted, drowned-out by ambient noise, or because the user is deaf).
descriptionsDescriptions summarize thevideo component of the media resource. They are intended to be synthesized as audio when the visual component is obscured, unavailable, or not usable (e.g., because the user is interacting with the application without a screen while driving, or because the user is blind).
chaptersChapter titles are intended to be used when the user is navigating the media resource.
metadataTracks used by scripts. Not visible to the user.
labelA user-readable title of the text track which is used by the browser when listing available text tracks.
srcAddress of the track (
.vttfile). Must be a valid URL. This attribute must be specified and its URL value must have the same origin as the document — unless the<audio>or<video>parent element of thetrackelement has acrossoriginattribute.srclangLanguage of the track text data. It must be a validBCP 47 language tag. If the
kindattribute is set tosubtitles, thensrclangmust be defined.
Usage notes
>Track data types
The type of data thattrack adds to the media is set in thekind attribute, which can take values ofsubtitles,captions,chapters ormetadata. The element points to a source file containing timed text that the browser exposes when the user requests additional data.
A media element cannot have more than onetrack with the samekind,srclang, andlabel.
Detecting cue changes
The underlyingTextTrack, indicated by thetrack property, receives acuechange event every time the currently-presented cue is changed. This happens even if the track isn't associated with a media element.
If the trackis associated with a media element, using the<track> element as a child of the<audio> or<video> element, thecuechange event is also sent to theHTMLTrackElement.
let textTrackElem = document.getElementById("text-track");textTrackElem.addEventListener("cuechange", (event) => { let cues = event.target.track.activeCues;});Adding text tracks programmatically
The JavaScript interface that represents the<track> element isHTMLTrackElement.The text track associated with an element can be obtained from theHTMLTrackElement.track property, and is of typeTextTrack.
TextTrack objects also can be added to aHTMLVideoElement orHTMLAudioElement elements using theHTMLMediaElement.addTextTrack() method.TheTextTrack objects associated with a media element stored in aTextTrackList, which can be retrieved using theHTMLMediaElement.textTracks property.
Examples
<video controls poster="/images/sample.gif"> <source src="sample.mp4" type="video/mp4" /> <source src="sample.ogv" type="video/ogv" /> <track kind="captions" src="sampleCaptions.vtt" srclang="en" /> <track kind="chapters" src="sampleChapters.vtt" srclang="en" /> <track kind="subtitles" src="sampleSubtitles_de.vtt" srclang="de" /> <track kind="subtitles" src="sampleSubtitles_en.vtt" srclang="en" /> <track kind="subtitles" src="sampleSubtitles_ja.vtt" srclang="ja" /> <track kind="subtitles" src="sampleSubtitles_oz.vtt" srclang="oz" /> <track kind="metadata" src="keyStage1.vtt" srclang="en" label="Key Stage 1" /> <track kind="metadata" src="keyStage2.vtt" srclang="en" label="Key Stage 2" /> <track kind="metadata" src="keyStage3.vtt" srclang="en" label="Key Stage 3" /> <!-- Fallback --> …</video>Technical summary
| Content categories | None |
|---|---|
| Permitted content | None; it is avoid element. |
| Tag omission | Must have a start tag and must not have an end tag. |
| Permitted parents | |
| Implicit ARIA role | No corresponding role |
| Permitted ARIA roles | Norole permitted |
| DOM interface | HTMLTrackElement |
Specifications
| Specification |
|---|
| HTML> # the-track-element> |