Captions

Timed on-screen text of everything you would hear in a video: the dialogue, who is speaking, and the sounds that matter.

subtitles for deaf peoplethe words on the videoclosed captionsCCsubtitlescaptioningcaptinstext on the video for people who can't hear it

See it

Live demo coming soon

What it is

Captions are timed text of everything audible in a video, synced to the picture. In the split most standards use, subtitles assume you can hear and only translate the dialogue, while captions also name the speaker and mark meaningful non-speech audio (a phone buzzing, a door slamming, music swelling). Do not hold that line too tightly: the words vary by region and platform, and 'subtitles for the deaf and hard of hearing' across much of Europe means what a US broadcaster calls captions. Agree on what you are shipping rather than on the label. WCAG 1.2.2 requires captions for prerecorded video with audio, and 1.2.4 requires them live.

On the web the default is closed captions: a separate WebVTT file attached with a track element whose kind is 'captions', which viewers can toggle, restyle, and translate. Open captions are burned into the video pixels, so they always show but can never be resized, hidden, or swapped for another language. Beyond compliance, captions are what makes video work in the muted-autoplay social feed where most people watch.

Gotcha: auto-generated captions are a first draft, not a deliverable. They mangle names and product jargon, skip punctuation, and go badly wrong on accents and crosstalk. Nothing fails for being machine-made, to be clear: conformance turns on whether the captions are accurate and complete, and raw speech-recognition output usually is not, so read it and correct it before shipping. Also, captions are not a transcript: a transcript is the full readable text you can skim without pressing play, and long or audio-heavy content usually needs both.

Ask AI for it

Add closed captions to this video player. First ask me for the media file itself or a time-coded transcript, and do not start without one: never invent cue timings you cannot verify against the audio. From that source, author a WebVTT (.vtt) file with accurate cue timings, speaker labels at each change of speaker, and bracketed descriptions of meaningful non-speech audio. Attach it inside the video element with a track element carrying kind='captions', a src pointing at the .vtt file, srclang, a human-readable label, and the default attribute. Keep native controls (or expose a labelled caption toggle button), and make sure the caption track is on by default when the video autoplays muted. Keep cues to two lines of about 40 characters each and never let a cue outlast the line being spoken.

You might have meant

captions and transcriptsaudio descriptionautoplay control and flashing contentscreen readerwcag