The ::cue CSS pseudo-element matches WebVTT cues within a selected element. This can be used to style captions and other cues in media with VTT tracks.

Try it

The properties are applied to the entire set of cues as if they were a single unit. The only exception is that background and its longhand properties apply to each cue individually, to avoid creating boxes and obscuring unexpectedly large areas of the media.

In the example above, the ::cue(u) selector selects all the <u> elements inside the cue text.


::cue | ::cue(<selector>) {
  /* ... */

Permitted properties


Styling WebVTT cues as white-on-black

The following CSS sets the cue style so that the text is white and the background is a translucent black box.

::cue {
  color: #fff;
  background-color: rgb(0 0 0 / 60%);

Styling WebVTT internal node objects

Cue text can include internal node objects as the tags (similar to HTML elements) <c>, <i>, <b>, <u>, <ruby>, <rt>, <v>, and <lang>. The ::cue() selector can be used to apply styles to content inside these tags to customize how the WebVTT track is displayed. Consider the following cue text that uses the <u> tag to underline some text:

00:00:01.500 --> 00:00:02.999 line:80%
Tell me, is the <u>lord of the universe</u> in?

The following CSS rule customizes the text inside the <u> tag with a color and a text-decoration:

::cue(u) {
  color: red;
  text-decoration: wavy overline lime;


WebVTT: The Web Video Text Tracks Format
# the-cue-pseudo-element

Browser compatibility

BCD tables only load in the browser

See also