Vimeo embed captions on by default: texttrack and cc parameters

Add texttrack=en to a Vimeo embed URL to open with captions on. What cc does, when texttrack is ignored, and when a burned-in caption is the safer fix.

4 min readSume
All posts

Append texttrack to the embed's player URL, for example ?texttrack=en, and the Vimeo player shows that caption or subtitle track by default, if the video has one. If the language was never uploaded, Vimeo says the setting is ignored and the embed may load with captions off. The cc parameter is separate: it only controls whether the captions button exists. So texttrack covers the "captions on at load" case, and a burned-in caption is what you use when it has to work whatever the viewer or the track does.

All parameter details here come from Vimeo's About Player Parameters help page, which was updated November 6, 2025 and read 2026-10-03.

What do texttrack and cc do?

Vimeo's parameter table lists both, and the page notes that URL parameters apply only to the specific embed code where you add them.

Vimeo Help, About Player Parameters, read 2026-10-03.
ParameterSupported valuesDefaultWhat Vimeo says it does
texttrackA lowercase language code, optionally with locale and type: en, en-US, en.captions, en.subtitlesfalseDisplays the specified caption or subtitle track by default, if available
cctrue, false or 1, 0trueWhether the closed captions button is enabled

What happens when the track is missing?

Vimeo's note on texttrack is blunt: if you pick a language that has not been uploaded for the video, the setting is ignored and the embed may load with captions or subtitles off. It also says the captions and subtitles must be uploaded by the video owner. So the parameter selects among tracks that exist; it never creates one. If you embed someone else's video, you cannot rely on it.

The cc parameter lists an account requirement: the video must be hosted by a Starter, Standard, Advanced, Plus, Pro, Business, Premium or Enterprise account.

Which texttrack value should you pick?

Vimeo's examples show four shapes: en, en-US, en.captions and en.subtitles. The page describes the value as a lowercase language code and optionally the locale and the type of text track, so the longer forms let you aim at a captions track or a subtitles track, or at a regional variant, when a video carries more than one for the same language. Start with the shortest form that matches your upload and test it in a private window, because a mismatch fails silently by design: the player just loads with captions off.

Because parameters apply only to the embed code where you add them, a video embedded on five pages needs the parameter five times. Nothing carries over from one embed to the next.

  • Confirm the track is uploaded under the language you name before you publish the page.
  • Keep cc at its default of true unless you deliberately want to hide the captions button.

What does the embed code look like?

Vimeo's own example appends a parameter after a question mark in the iframe src. This version asks for English captions on load and keeps the captions button.

<iframe
  src="https://player.vimeo.com/video/76979871?texttrack=en.captions&cc=1"
  width="640" height="360" frameborder="0" allowfullscreen>
</iframe>

When should you burn the captions instead?

Use the parameter when you own the video, have uploaded the track, and want viewers to be able to switch captions off. Burn the captions when the clip is shared outside the player, when you cannot upload tracks, or when the words must read exactly the same everywhere. Burned-in text cannot be toggled, and Vimeo's parameters cannot touch it.

With Sume, POST /v1/video-captions takes a public HTTPS video_url and returns a captioned video as a job. Pass script_text when you know the spoken script, or cues for a silent clip. A job for up to 60 seconds is $0.20, per the video captions docs. Upload the burned version as the video you embed, and keep a separate track on the original if your audience needs captions they can turn off.

Sources

Related posts

More in Integrations

All Integrations posts

Written by Sume