# getTextTracks

The text tracks a filter or track definition matches, from the media or the app

## Import

```ts
import { getTextTracks } from '@videojs/html';
```

`getTextTracks` returns the tracks in `textTrackList` that a filter or [track definition](https://videojs.org/docs/framework/html/reference/api/define-text-track) matches, from the media and the app alike. Each track’s `source` says which. The list comes from the [text track feature](https://videojs.org/docs/framework/html/reference/api/feature-text-tracks).

A filter picks tracks by `kind`, `label`, or `language`, or with a function. Each given field must match, and a list of kinds matches any kind in it. Without a filter, `getTextTracks` returns every track.

## Usage

Read the tracks in a `player.store.subscribe()` callback to follow changes:

```ts
const player = document.querySelector('video-player')!;

player.store.subscribe(() => {
  const captions = getTextTracks(player.store, { kind: ['captions', 'subtitles'] });
  console.log(captions.map((track) => track.label));
});
```

## API Reference

`getTextTracks(source, filter?): MediaTextTrack[]`

### Parameters

| Parameter | Type | Default | Description |
| --- | --- | --- | --- |
| `source` (required) | `{ textTrackList: readonly MediaTextTrack[] }` | — | State that lists text tracks, such as the player store. |
| `filter` | `{ kind?: TextTrackKind \| readonly TextTrackKind[]; label?: string; language?: string } \| ((track: MediaTextTrack) => boolean) \| { kind: 'subtitles' \| 'captions' \| 'descriptions' \| 'chapters' \| 'metadata'; label?: string; language?: string; schema?: StandardSchemaV1 }` | `{}` | Picks tracks by kind, label, or language, or with a function. Defaults to every track. |

### Return Value

`MediaTextTrack[]`

---

HTML documentation: https://videojs.org/docs/framework/html/llms.txt
All documentation: https://videojs.org/llms.txt
