files/en-us/web/api/texttracklist/index.md
{{APIRef("HTML DOM")}}
The TextTrackList interface is used to represent a list of the text tracks defined for the associated video or audio element, with each track represented by a separate {{domxref("TextTrack")}} object in the list.
Text tracks can be added to a media element declaratively using the {{HTMLElement("track")}} element or programmatically using the {{domxref('HTMLMediaElement.addTextTrack()')}} method.
An instance of this object can be retrieved using the {{domxref('HTMLMediaElement.textTracks', 'textTracks')}} property of an {{domxref('HTMLMediaElement')}} object.
For a given {{domxref('HTMLMediaElement')}} object media, the individual tracks can be accessed using:
media.TextTracks[n], to get the n-th text track from the object's list of text tracksmedia.textTracks.getTrackById() method{{InheritanceDiagram}}
This interface also inherits properties from its parent interface, {{domxref("EventTarget")}}.
This interface also inherits methods from its parent interface, {{domxref("EventTarget")}}.
TextTrackList whose {{domxref("TextTrack.id", "id")}} matches the specified string. If no match is found, null is returned.addtrack
onaddtrack property.change
onchange property.removetrack
onremovetrack property.In addition to being able to obtain direct access to the text tracks present on a media element, TextTrackList lets you set event handlers on the {{domxref("TextTrackList/addtrack_event", "addtrack")}} and {{domxref("TextTrackList/removetrack_event", "removetrack")}} events, so that you can detect when tracks are added to or removed from the media element's stream.
To get a media element's TextTrackList, use its {{domxref("HTMLMediaElement.textTracks", "textTracks")}} property.
const textTracks = document.querySelector("video").textTracks;
In this example, we have an app that displays information about the number of channels available. To keep it up to date, handlers for the {{domxref("TextTrackList/addtrack_event", "addtrack")}} and {{domxref("TextTrackList/removetrack_event", "removetrack")}} events are set up.
textTracks.onaddtrack = updateTrackCount;
textTracks.onremovetrack = updateTrackCount;
function updateTrackCount(event) {
trackCount = textTracks.length;
drawTrackCountIndicator(trackCount);
}
{{Specifications}}
{{Compat}}