Video

Subtitles

Subtitle tracks that viewers can turn on and off, and how they differ from captions.

Subtitles are the words of a video, delivered next to the picture instead of inside it. The editor makes them from the same captions you create on the Captions page.

Captions and subtitles

Captions are drawn into the picture. Every viewer sees them in every player, and they look exactly as you styled them. The viewer cannot switch them off.

Subtitles travel beside the picture. The viewer's player shows them, and the viewer can switch them on and off. The player also decides how they look.

CaptionsSubtitle trackCaption file
Where the words areDrawn into the pictureA track inside the MP4 fileA separate .srt, .vtt, or .txt file
The viewer can switch them offNoYesYes, where the platform allows it
Your caption styles are keptYesNo, the player draws the wordsNo, the platform draws the words
Word highlightingYesNoNo

Captions work in every player and on every social platform. YouTube and Vimeo ask for an SRT file.

Captions are the default. A video exported with captions has them drawn into the picture.

SRT and VTT import

An imported .srt or .vtt file becomes captions on the video. From there, the words can leave the editor as captions, as a subtitle track, or as a separate file (.srt, .vtt, or .txt). See SRT and VTT import.

Subtitle tracks

A subtitle track puts the words and their times inside the MP4 file, next to the video and the sound. Players such as QuickTime and VLC let the viewer switch the track on and off.

Only an MP4 file carries a subtitle track. In a WebM file or a GIF, the captions are always drawn into the picture. For web players, give them the .vtt file.

The Advanced step of the Export panel has a Captions field while the video has captions. It has three choices:

ChoiceWhat the file contains
In the pictureThe default. The captions are drawn into every frame, exactly as styled. Viewers cannot switch them off.
Subtitle trackA track that viewers switch on and off. Nothing is drawn into the picture, so the words never appear twice.
BothThe captions in the picture, and a subtitle track. A viewer who switches the track on sees the words twice.

The choice applies to every file of the export, Save & Exit included. From your own code, the exportStart action takes the same choice as subtitles: 'burn' | 'track' | 'both'. Leaving it out means 'burn', which draws the captions into the picture. See Editor actions.

The track carries only the words and their times. Each player uses its own font, color, and position, so your caption styles and word highlighting do not apply.

SRT export

While the video has captions, the Export panel shows a Captions file row with three buttons: Download .srt, Download .vtt, and Download .txt. Download .srt saves the captions as exported-video.srt, with the times of the finished video. The file is made in the browser from the design, so nothing is exported or uploaded. Upload this file to YouTube, Vimeo, or any other platform that accepts subtitle files.

The file uses the standard SRT format: a number, a time line, and the text of each caption.

1
00:00:00,500 --> 00:00:02,500
Welcome to the product tour.

2
00:00:02,800 --> 00:00:05,000
Here is how captions work.

Each time is rounded to the nearest millisecond, so 2.8 seconds is written 00:00:02,800.

Speaker names

Include speaker names appears in the Captions file row when at least one caption line names a speaker. It is off by default. When it is on, all three files carry the name at the start of the line:

FileA line with the speaker Anna
.srt[Anna] Welcome to the product tour.
.vtt<v Anna>Welcome to the product tour.
.txtAnna: Welcome to the product tour.

The editor reads a speaker name back from the .srt form and from the .vtt form when it imports a file. See SRT and VTT import.

Files in onExport

Every export of a video with captions also hands the caption files to your code. onExport receives them in its second argument as extras.srt, extras.vtt, and extras.txt. Each has two fields: text, the text of the file, and file, the same text as a File. The types are application/x-subrip, text/vtt, and text/plain. Each file is named after the video, so exported-video.mp4 comes with exported-video.srt, exported-video.vtt, and exported-video.txt. The three fields are present only when the video has captions:

onExport={(file, extras) => {
  console.log(`Exported ${file.name}`);
  if (extras?.vtt) {
    console.log(`Captions: ${extras.vtt.file.name}, ${extras.vtt.text.length} characters`);
  }
}}

The caption files come with every file that onExport receives: from Export, Save & Exit, Share…, and Export current canvas. They carry speaker names when Include speaker names was on. Export current canvas never adds speaker names.

From your own code, the readCaptionsFile action returns the same text as the three buttons, with format set to srt, vtt, or txt. See Editor actions. When the video has no captions, it answers ok: false with "There are no captions to write."

VTT export

Download .vtt saves the captions as exported-video.vtt, in the WebVTT format. Web players read this format with the HTML <track> element, and YouTube and Vimeo accept it too. The file starts with a WEBVTT line, and a time uses a full stop before the milliseconds:

WEBVTT

1
00:00:00.500 --> 00:00:02.500
Welcome to the product tour.

2
00:00:02.800 --> 00:00:05.000
Here is how captions work.

The characters &, <, and > in the words are written as &amp;, &lt;, and &gt;, as the format requires.

Transcript export

Download .txt saves the words as exported-video.txt, a plain transcript with no times. Each caption line is one paragraph, with an empty line between paragraphs:

Welcome to the product tour.

Here is how captions work.

Additional resources

On this page