---
title: Caption Formats
url: https://docs.kaltura.com/docs/rich-media-cms-apis/content-management/captions-caption-formats
---

## Caption Formats


### Supported Formats

| Value | Name | Description |
|-------|------|-------------|
| 1 | SRT | SubRip subtitle format |
| 2 | DFXP | Distribution Format Exchange Profile (TTML/XML) |
| 3 | WEBVTT | Web Video Text Tracks (W3C standard) |
| 4 | CAP | Cheetah CAP (broadcast systems) |
| 5 | SCC | Scenarist Closed Captions (CEA-608, broadcast TV) |

### Format Comparison

| Format | Best For | Styling | Positioning | Standard |
|--------|----------|---------|-------------|----------|
| SRT | Universal compatibility | Basic HTML (`<b>`, `<i>`) | No | De facto |
| WebVTT | HTML5 video, web players | CSS cue styling | Yes (line, position, align) | W3C |
| DFXP/TTML | OTT/Netflix, broadcast | Full XML styling, regions | Yes (precise regions) | W3C/SMPTE |
| SCC | Broadcast TV (CEA-608) | Roll-up/pop-on modes | Yes (row/column) | FCC |
| CAP | Broadcast (Cheetah systems) | System-specific | System-specific | Proprietary |

### SRT Format Reference


```
1
00:00:00,000 --> 00:00:05,000
Welcome to the presentation.

2
00:00:05,000 --> 00:00:10,000
Today we cover the Kaltura API.
<i>Let's get started.</i>
```


Timing format: `HH:MM:SS,mmm --> HH:MM:SS,mmm`. Supports `<b>`, `<i>`, `<u>` HTML tags. Blank line separates cues.

### WebVTT Format Reference


```
WEBVTT

00:00:00.000 --> 00:00:05.000 position:10% align:start
Welcome to the presentation.

00:00:05.000 --> 00:00:10.000
<v Speaker>Today we cover the Kaltura API.</v>
```


Requires `WEBVTT` header on first line. Timing uses `.` as the millisecond separator. Supports cue settings (`position`, `line`, `align`, `size`), speaker identification (`<v>`), and CSS styling.

### DFXP/TTML Format Reference


```xml
<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xml:lang="en">
  <body>
    <div>
      <p begin="00:00:00.000" end="00:00:05.000">Welcome to the presentation.</p>
      <p begin="00:00:05.000" end="00:00:10.000">Today we cover the Kaltura API.</p>
    </div>
  </body>
</tt>
```


XML-based format with full region support, multi-language tracks in a single file, and precise styling via TTML profiles.

### Browser/Player Compatibility

WebVTT is natively supported by all modern browsers. Kaltura Player v7 auto-converts all formats to WebVTT for display using `serveWebVTT`. Store captions in any supported format — the player handles conversion.

### Format Conversion Behavior

- **SCC to SRT:** Auto-converted on upload via server batch job. SCC positioning data (row/column) is lost in the conversion.
- **Any format to WebVTT:** On-the-fly conversion via `captionAsset.serveWebVTT`. TTML regions and SCC positioning are simplified.
- **Any format to JSON:** On-the-fly conversion via `captionAsset.serveAsJson`. Structured output for programmatic consumption.

### Caption Languages

Use `KalturaLanguage` enum values — human-readable language names: `"English"`, `"Spanish"`, `"French"`, `"German"`, `"Japanese"`, `"Chinese"`, `"Arabic"`, `"Portuguese"`, `"Russian"`, `"Korean"`, `"Italian"`, `"Dutch"`, `"Hebrew"`, `"Hindi"`, etc. (300+ languages supported).

The `languageCode` field is automatically derived as a read-only ISO 639 code from the `language` value.
