The HTML <track>
element is used as a child of the media elements, <audio>
and <video>
. It lets you specify timed text tracks (or time-based data), for example to automatically handle subtitles. The tracks are formatted in WebVTT format (.vtt
files) — Web Video Text Tracks.
Content categories | None |
---|---|
Permitted content | None, it is an empty element. |
Tag omission | As it is a void element, the start tag must be present and the end tag must not be present. |
Permitted parents | |
Implicit ARIA role | No corresponding role |
Permitted ARIA roles | No role permitted |
DOM interface | HTMLTrackElement |
Attributes
This element includes the global attributes.
default
- This 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
track
element per media element. kind
- How 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
(Versions of Chrome earlier than 52 treated an invalid value assubtitles
). The following keywords are allowed:subtitles
- Subtitles provide translation of content that cannot be understood by the viewer. For example dialogue 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.
captions
- Closed captions provide a transcription and possibly a translation of audio.
- It may include important non-verbal information such as music cues or sound effects. It may indicate the cue's source (e.g. music, text, character).
- Suitable for users who are deaf or when the sound is muted.
descriptions
- Textual description of the video content.
- Suitable for users who are blind or where the video cannot be seen.
chapters
- Chapter titles are intended to be used when the user is navigating the media resource.
metadata
- Tracks used by scripts. Not visible to the user.
label
- A user-readable title of the text track which is used by the browser when listing available text tracks.
src
- Address of the track (
.vtt
file). 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 thetrack
element has acrossorigin
attribute. srclang
- Language of the track text data. It must be a valid BCP 47 language tag. If the
kind
attribute is set tosubtitles
, thensrclang
must be defined.
Usage notes
Track data types
The type of data that track
adds to the media is set in the kind
attribute, which can take values of subtitles
, captions
, descriptions
, chapters
or metadata
. 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 one track
with the same kind
, srclang
, and label
.
Detecting cue changes
The underlying TextTrack
, indicated by the track
property, receives a cuechange
event every time the currently-presented cue is changed. This happens even if the track isn't associated with a media element.
If the track is associated with a media element, using the <track>
element as a child of the <audio>
or <video>
element, the cuechange
event is also sent to the HTMLTrackElement
.
let textTrackElem = document.getElementById("texttrack"); textTrackElem.addEventListener("cuechange", (event) => { let cues = event.target.track.activeCues; });
In addition, you can use the oncuechange
event handler:
let textTrackElem = document.getElementById("texttrack"); textTrackElem.oncuechange = (event) => { let cues = event.target.track.activeCues; });
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="descriptions" src="sampleDescriptions.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>
Specifications
Specification | Status | Comment |
---|---|---|
HTML Living Standard The definition of 'track element' in that specification. |
Living Standard | |
HTML5 The definition of 'track element' in that specification. |
Recommendation | Initial definition |
Browser compatibility
Desktop | Mobile | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
track | Chrome Full support 23 | Edge Full support 12 | Firefox
Full support
31
| IE Full support 10 | Opera Full support 12.1 | Safari Full support 6 | WebView Android
Full support
Yes
| Chrome Android
Full support
25
| Firefox Android
Full support
31
| Opera Android ? | Safari iOS Full support 6 | Samsung Internet Android
Full support
1.5
|
default | Chrome Full support 23 | Edge Full support 12 | Firefox
Full support
31
| IE Full support 10 | Opera Full support 12.1 | Safari Full support 6 | WebView Android Full support 4.4 | Chrome Android Full support 25 | Firefox Android
Full support
31
| Opera Android ? | Safari iOS ? | Samsung Internet Android Full support 1.5 |
kind | Chrome Full support 23 | Edge Full support 12 | Firefox
Full support
31
| IE Full support 10 | Opera Full support 12.1 | Safari Full support 6 | WebView Android Full support 4.4 | Chrome Android Full support 25 | Firefox Android
Full support
31
| Opera Android ? | Safari iOS ? | Samsung Internet Android Full support 1.5 |
label | Chrome Full support 23 | Edge Full support 12 | Firefox
Full support
31
| IE Full support 10 | Opera Full support 12.1 | Safari Full support 6 | WebView Android Full support 4.4 | Chrome Android Full support 25 | Firefox Android
Full support
31
| Opera Android ? | Safari iOS ? | Samsung Internet Android Full support 1.5 |
src | Chrome Full support 23 | Edge Full support 12 | Firefox
Full support
31
| IE Full support 10 | Opera Full support 12.1 | Safari Full support 6 | WebView Android Full support 4.4 | Chrome Android Full support 25 | Firefox Android
Full support
31
| Opera Android ? | Safari iOS ? | Samsung Internet Android Full support 1.5 |
srclang | Chrome Full support 23 | Edge Full support 12 | Firefox
Full support
31
| IE Full support 10 | Opera Full support 12.1 | Safari Full support 6 | WebView Android Full support 4.4 | Chrome Android Full support 25 | Firefox Android
Full support
31
| Opera Android ? | Safari iOS ? | Samsung Internet Android Full support 1.5 |
Legend
- Full support
- Full support
- Compatibility unknown
- Compatibility unknown
- See implementation notes.
- See implementation notes.
- User must explicitly enable this feature.
- User must explicitly enable this feature.