👀 Live Preview
A minimal video with an embedded WebVTT subtitles track (open the CC menu in the player if needed):
The <track> uses kind="subtitles" and a data-URI src for this inline demo. In production, host .vtt files on your server.

The kind attribute is used on the <track> element to tell the browser what type of text track you are providing—subtitles, captions, audio descriptions, chapter markers, or metadata. Text tracks live inside <video> or <audio> and point to a WebVTT (or similar) file via the src attribute. They are essential for accessible, multilingual media.
Where kind belongs.
subtitles to metadata.
Accessibility roles.
src + srclang + label.
Pre-selected option.
Change at runtime.
kindThe primary purpose of the kind attribute is to classify a text track so the browser and assistive technologies know how to present it. A track with kind="captions" is treated as closed captions; kind="descriptions" provides spoken narration of visual action for blind users; kind="chapters" supplies navigation markers; and kind="metadata" exposes data cues that scripts can read without showing on screen.
Without a meaningful kind, browsers default to subtitles. Choosing the correct value helps users pick the right option from the media player’s captions menu and ensures accessibility guidelines are met.
The <source> element picks alternate media files (MP4, WebM) using src and type—it has no kind attribute. Put kind on <track> only.
Add one or more <track> elements as children of <video> or <audio>:
<video controls>
<source src="movie.mp4" type="video/mp4">
<track
kind="subtitles"
src="movie-en.vtt"
srclang="en"
label="English"
default>
</video><track> elements inside <video> or <audio>.kind with src (WebVTT URL), srclang (BCP 47 language), and label (user-visible name).default boolean attribute on one track to pre-select it when the media loads.subtitles.kind but differ in srclang (e.g. English and Spanish subtitles).kind on <source>—that element describes media containers, not text overlays.The kind attribute accepts one of five keyword values defined in the HTML specification:
subtitles — Translation or transcription of dialogue. Assumes the viewer can hear non-speech audio. Default when kind is omitted.captions — Transcription of dialogue and relevant sound effects (e.g. [door slams]). For deaf and hard-of-hearing viewers.descriptions — Text describing visual content, often read aloud by screen readers or synthesized speech as an audio description track.chapters — Chapter titles or section markers the user can jump to in supported players.metadata — Cues for scripts or APIs; not intended for on-screen display to end users.In JavaScript, read or set the property on the track element:
document.querySelector("track").kind = "captions";| Use Case | kind Value | Notes |
|---|---|---|
| Translate dialogue | subtitles | Default; assumes hearing audience |
| Full accessibility text | captions | Includes sound effects |
| Describe visuals | descriptions | Audio description content |
| Chapter navigation | chapters | Jump points in timeline |
| Script-readable data | metadata | Hidden from typical UI |
| Pre-selected track | Any + default | One track per media element |
| Element / Context | Supported? | Notes |
|---|---|---|
<track> in <video> | Yes | Primary use case |
<track> in <audio> | Yes | Lyrics, transcripts, chapters |
<source> | No | Use type for MIME type |
<video> or <audio> directly | No | kind belongs on child <track> |
subtitles vs captions| Feature | subtitles | captions |
|---|---|---|
| Target audience | Viewers who hear audio | Deaf / hard-of-hearing viewers |
| Dialogue | Yes | Yes |
| Sound effects | Usually omitted | Included (e.g. [applause]) |
| Typical use | Foreign-language films | Broadcast TV, accessibility law |
| Default if kind omitted | Yes (subtitles) | No—must set explicitly |
English subtitles on a video, multiple track kinds for accessibility, and updating kind with JavaScript.
A minimal video with an embedded WebVTT subtitles track (open the CC menu in the player if needed):
The <track> uses kind="subtitles" and a data-URI src for this inline demo. In production, host .vtt files on your server.
Let’s look at a basic example of how to use the kind attribute on a <track> element:
<video controls>
<source src="movie.mp4" type="video/mp4">
<track
kind="subtitles"
src="movie-en.vtt"
srclang="en"
label="English"
default>
Your browser does not support the video tag.
</video>The <source> element supplies the video file. The sibling <track> supplies timed text cues. The kind value tells the browser this track is subtitles—not full captions or chapter data.
Provide captions and audio descriptions alongside subtitles for the same video:
<video controls>
<source src="lecture.mp4" type="video/mp4">
<track kind="captions" src="lecture-en-cc.vtt" srclang="en" label="English CC" default>
<track kind="subtitles" src="lecture-es.vtt" srclang="es" label="Español">
<track kind="descriptions" src="lecture-ad.vtt" srclang="en" label="Audio description">
<track kind="chapters" src="lecture-chapters.vtt" srclang="en" label="Chapters">
</video>Each <track> has its own kind, src, and language. The browser groups them by purpose so captions and subtitles appear in the text track menu while chapter tracks may appear in a separate navigation UI.
Change the track classification at runtime—useful when reusing one VTT file for a different role after user preference:
<video id="myVideo" controls>
<source src="clip.mp4" type="video/mp4">
<track id="dynamicTrack" kind="subtitles" src="clip.vtt" srclang="en" label="English">
</video>
<script>
document.getElementById("dynamicTrack").kind = "descriptions";
</script>The DOM property kind on HTMLTrackElement mirrors the content attribute. Changing it reclassifies how the browser exposes the track. For production, set the correct kind in HTML rather than patching it in script.
kind="captions" for deaf users — Include non-speech sounds, not just dialogue.descriptions tracks — Narrate important visual action for blind viewers when video conveys information only on screen.label text — Users choose tracks from the menu by label; “English CC” is clearer than “Track 1”.srclang accurately — Assistive tech and browsers use BCP 47 language tags (e.g. en, es).default — Pre-enable the most accessible option (often captions in the viewer’s language).Inside video or audio.
Timed text cues loaded.
Captions, subs, chapters, etc.
Tracks appear in the player menu.
The kind attribute on <track> is supported in all modern browsers alongside the HTML5 media elements. Older browsers without <track> support ignore text tracks entirely—provide transcripts on the page as a fallback.
Chrome, Firefox, Safari, and Edge render WebVTT subtitles and captions from <track kind>.
Bottom line: Use WebVTT tracks with correct kind values; offer a page-level transcript for maximum accessibility.
kind on <track>, not <source>captions for accessibility compliancelabel and accurate srclangdefault on the track most users should see firstsrc or use non-WebVTT formats without fallbacksdefaultThe kind attribute is a valuable tool in HTML for classifying text tracks on <video> and <audio> media. It tells browsers and users whether a track provides subtitles, captions, descriptions, chapters, or metadata.
By choosing the correct kind, pairing it with WebVTT files, and writing clear labels, you make multimedia content accessible to more people and easier to navigate across languages and abilities.
kindBookmark these before adding captions to video.
Not on source.
Elementsubs to metadata
SyntaxSound effects matter
A11yTimed cue files
FilesUser-facing names
i18nkind attribute applies to <track> elements inside <video> or <audio>. It does not belong on <source> elements.subtitles, captions, descriptions, chapters, and metadata. If omitted, browsers treat the track as subtitles..vtt) is the standard format. The file contains timed text cues the browser displays according to the track kind.trackElement.kind = "captions" on the HTMLTrackElement. Prefer setting the correct value in HTML for clarity and SEO.default attribute. That track loads automatically when playback starts.Practice kind on <track> elements and compare subtitles, captions, and descriptions in the Try It editor.
5 people found this page helpful