Skip to main content

Encoding & Decoding Options

Encoding and decoding options are format-specific settings that control how a profile reads or writes a caption file. They appear automatically in both the web application and the Job Description JSON when a profile that supports them is selected. Options vary considerably by format — some profiles have no configurable settings at all, while complex binary formats like EBU-STL expose dozens of metadata fields.

In the web application, options appear as collapsible panels beneath the source and target profile selectors. In the Job Description JSON, they are passed in the decoding_options and encoding_options arrays respectively.

Some advanced controls that users may think of as filters are actually profile-specific encoding options. Examples include 608 Options, 708 Options, Embed Options, V-Chip Information, and Program Information. These only appear when the selected target format supports them.

Decoding options

Encoding options

Metadata Passthrough​

Source header metadata is stored on the caption project at decode time, then copied into the target when an encoding option's selected value is the string "auto". Explicit values always win, and there is no separate passthrough toggle. Profile defaults do not copy source values — for example Language Code is typically en or English, and EBU-STL Country of Origin defaults to Canada.

"auto" is case-sensitive. In the web application, type auto into a text encoding option, or set "selected": "auto" in the Job Description JSON. List options such as EBU-STL Language Code, Country of Origin, and IMSC Rosetta Default Outline cannot pick auto from the dropdown; send it in the Job Description or the API instead.

What is copied​

Decode populates canonical metadata from:

  • TTML-family XML headers (xml, ttml, dfxp, itt, and related profiles): xml:lang, ttm:title, ttm:desc, ttm:copyright, programme name, and EBU-TT programme / publisher fields. Only the root <tt> and <head> are read.
  • EBU STL GSI header: language, original and translated programme / episode titles, translator, editor, publisher, subtitle list reference, and country of origin.
  • IMSC Rosetta: XML header fields plus font size (rh) and default outline.
  • ESEF: title and author.

Plain-text formats such as SubRip, WebVTT, and Scenarist SCC generally contribute no document metadata on this path.

At encode, "auto" is resolved only when the target profile exposes a mapped option:

Encoding optionCopied from
Language CodeSource language (BCP-47; converted to the EBU language list for STL)
Program Name, Program Title, Programme Title, TitleProgramme title
Episode TitleEpisode title
Translated Program Title, Translated Programme TitleTranslated programme title
Translated Episode TitleTranslated episode title
Translator, Translator's Name, Translator's Contact DetailsTranslator metadata
Editor's Name, Editor's Contact DetailsEditor metadata
PublisherPublisher
Subtitle List Ref CodeSubtitle list reference
Country of OriginCountry of origin (must match the target list)
DescriptionDescription
CopyrightCopyright
AuthorAuthor
Font Size, Default OutlineIMSC Rosetta font size (rh) and outline style (Rosetta targets only)

Richest targets include EBU STL (GSI fields), IMSC Rosetta (language, programme name, font size, outline), most TTML-family profiles (language, and often title / description / copyright), Spruce STL, ProCap Transfer, and ESEF. If the target has no matching option — for example SubRip or WebVTT — that field is not written.

Resolution order​

  1. An explicit selected value (for example "de") is never overwritten.
  2. "auto" with valid source metadata (including list membership and BCP-47 → EBU language conversion).
  3. The profile default when "auto" is set but no usable metadata exists (for example STL Language Code falls back to English).
  4. The option is dropped when "auto" is set, there is no metadata, and the profile default is empty — the encoder then uses its own fallback.

Format-specific auto values that have another meaning — Scenarist Channel, Scenarist Timecode Format, Cavena Font Family, and PAC Code Page — are left as "auto" and are not filled from document metadata.

When several sources are merged, metadata is taken from the first event group. Language is converted across formats — for example EBU STL French becomes TTML fr, and TTML fr-CA becomes STL French when the target list supports it.

API example​

The example below copies language and programme title from a TTML source into EBU STL. Contrast this with passing "English" or "Canada", which would overwrite the source values.

{
"source_profile": "Timed-Text Markup Language",
"target_profile": "EBU STL",
"encoding_options": [
{ "name": "Language Code", "selected": "auto" },
{ "name": "Program Title", "selected": "auto" },
{ "name": "Translator's Name", "selected": "auto" },
{ "name": "Country of Origin", "selected": "auto" }
]
}

Omitted options still use their profile defaults. You do not need every mapped field — only the options you set to "auto" are filled from source metadata. The same encoding_options array can be reused across files; Closed Caption Converter does not mutate "auto" in the Job Description.

Decoding Options​

Decoding options control how a source file is read and interpreted during the decode step. The most common decoding options are channel selection, metadata extraction, and control over which content layers are imported. The examples below are illustrative rather than exhaustive.

Scenarist (SCC) — Decode Options​

OptionTypeDefaultDescription
ChannelListautoSpecifies which CEA-608 channel to read from the file. Options are auto, ch01, ch02, ch03, and ch04. When set to auto, the decoder reads the most populated channel.

MacCaption 608/708 (MCC) — Decode Options​

OptionTypeDefaultDescription
ChannelListch01Specifies which caption channel or service to read. Options include ch01–ch04 (608 channels) and programA–programF (708 services).

EBU-STL — Decode Options​

OptionTypeDefaultDescription
Decode Speakers By ColorListfalseWhen enabled, the STL colour attribute is used to identify different speakers and populate the CCPRJ speaker object.
Speaker IdentifierText(empty)A text string used to identify speaker names within subtitle text. If the text of an event begins with this string, the prefix is treated as a speaker label and extracted accordingly.
Insert Speaker IdentifierListfalseWhen enabled, the decoded speaker name is prepended to each event's text in the output.
Speaker Is Greater ThanNumber1The minimum number of characters a speaker identifier must contain to be recognised.

Cavena 890 — Decode Options​

OptionTypeDefaultDescription
Decode Line 1ListyesWhether to decode the first subtitle line track from the binary file.
Decode Line 2ListyesWhether to decode the second subtitle line track.

Text Transcript — Decode Options​

OptionTypeDefaultDescription
Max Characters Per LineNumber32The maximum characters per line used when segmenting a plain-text transcript into timed events.
Max Lines Per EventNumber2The maximum number of lines per event generated from the transcript.
Reading RateNumber20The reading rate in characters per second used to calculate event durations from the transcribed text.
Split on CommaListnoWhether to create a new event at each comma.
Split on PunctuationListyesWhether to create a new event at each sentence boundary.
Block ImportListnoWhen enabled, imports paragraphs (blank-line-separated blocks) as single events rather than splitting by punctuation.

Encoding Options​

Encoding options control how the target file is written. They cover metadata fields required by the format specification, formatting preferences, channel assignments, and structural settings.

Scenarist (SCC) — Encode Options​

OptionTypeDefaultDescription
ChannelListch01The CEA-608 channel to write caption data into. Options: ch01, ch02, ch03, ch04. Use ch01 for the primary language and ch03 for a secondary language in dual-language deliveries.
Line EndingsListunixThe line ending style of the output text file. Options: windows (CRLF), unix (LF), macintosh (CR).
Timecode FormatListautoControls whether semicolons (drop-frame) or colons (non-drop-frame) are used in timecode strings in the SCC file. auto selects based on the job frame rate.

MacCaption 608/708 (MCC) — Encode Options​

OptionTypeDefaultDescription
MCC VersionList2.0The MCC file format version to write. Version 2.0 supports both CEA-608 and CEA-708 data. Version 1.0 is a legacy option for older decoders.
Compress OutputListyesWhether to apply MCC's native run-length compression to the binary packet data in the output file, which reduces file size.

EBU-STL — Encode Options​

EBU-STL has the most extensive set of encoding options because the format mandates a large header block (the GSI block) containing programme and distribution metadata. All text fields in the GSI block can be populated directly. Set a mapped field to auto to copy matching source metadata instead of typing a value; see Metadata Passthrough. Language Code and Country of Origin are list options, so auto must be sent in the Job Description JSON or the API.

OptionTypeDefaultDescription
Display Standard CodeListOpen subtitlingThe STL display standard: Undefined, Open subtitling, Level-1 teletext, or Level-2 teletext.
Double Height CharactersListnoWhether to use double-height character rendering for the subtitle text.
Program TitleText(empty)Programme title written into the GSI block. Set to auto to copy the source programme title.
Episode TitleText(empty)Episode title written into the GSI block.
Translated Program TitleText(empty)Translated programme title for the GSI block.
Translated Episode TitleText(empty)Translated episode title for the GSI block.
Translator's NameText(empty)Translator name for the GSI block.
Translator's Contact DetailsText(empty)Contact details for the translator.
Subtitle List Ref CodeText(empty)Reference code for the subtitle list.
PublisherText(empty)Distributor or publisher name.
Editor's NameText(empty)Subtitling editor name.
Editor's Contact DetailsText(empty)Editor contact details.
Language CodeListEnglishThe language of the subtitle content, written into the GSI language code field. Full list of EBU-defined languages is supported. Set to auto in the Job Description or API to copy the source language.
GSI Character SetListMultilingualThe GSI character set code. Options: United States, Multilingual, Portuguese, Canada-French, Nordic.
Character Code TableListLatinThe character code table used for subtitle text encoding. Options: Latin, Cyrillic, Arabic, Greek, Hebrew.
Country of OriginListCanadaThe country of origin for the STL file's GSI block, selected from the full ISO 3166 country list. Set to auto in the Job Description or API to copy the source country when it matches the list.
SOM (Start of Message)Text00:00:00:00The programme start timecode written into the GSI block.
Max Number of RowsNumber23Maximum number of subtitle rows, written into the GSI block.
Max Number of Characters Per RowNumber40Maximum characters per row, written into the GSI block.
Include Blank Subtitle At StartListnoWhen enabled, a blank subtitle event is inserted at the beginning of the file, which some STL systems require.

Cavena 890 — Encode Options​

OptionTypeDefaultDescription
Line 1 LanguageListEnglishLanguage of the first subtitle track: Danish, Norwegian, English, Russian, Greek, Romanian, Swedish, Arabic, Hebrew, Traditional Chinese, Simplified Chinese.
Line 2 LanguageListEnglishLanguage of the second subtitle track.
Font Family Line 1ListautoThe font family code for the first track, corresponding to Cavena hardware font IDs.

Text Transcript — Encode Options​

OptionTypeDefaultDescription
Include Speaker NameListnoWhether to prepend the speaker name to each event's text in the output.
Include TimestampListnoWhether to include a timestamp at the start of each line.
Split On Event GapNumber4The minimum gap in seconds between events that triggers a paragraph break in the output text.
Max WordsNumber99999Maximum number of words per output file.
Event PrefixText(empty)A string prepended to each event in the output.
Event SuffixText(empty)A string appended to each event in the output.
Encode FormattingListfalseWhether to include inline formatting codes (italic, bold) in the output text.

TTML / DFXP / IMSC Variants — Common Encode Options​

Most TTML-family profiles expose the following options where applicable. Set Language Code, Title, Description, or Copyright to auto to copy matching source metadata; see Metadata Passthrough. Several TTML-family profiles also stamp the Closed Caption Converter version into the encoded file; that stamp is not an encoding option. See Profiles & Formats.

OptionTypeDefaultDescription
Language CodeTextenThe BCP-47 language tag written into the TTML xml:lang attribute (e.g. en, fr, de, ja). Set to auto to copy the source language.
TimebaseListmediaWhether timecodes are expressed relative to media time (media) or wall-clock time (clock).
TitleText(empty)The programme title written into the TTML metadata header. Set to auto to copy the source title.
DescriptionText(empty)Description metadata written into the TTML header. Set to auto to copy the source description.
CopyrightText(empty)Copyright string written into the TTML header. Set to auto to copy the source copyright.

Passing Options in the API​

When submitting a Job Description to the API, encoding and decoding options are passed as the encoding_options and decoding_options fields respectively. Each field is an array of option objects — the same structure returned by the GET /help/profiles/all endpoint. Every option object contains four fields:

FieldDescription
nameThe option name, matching the label shown in the web application.
typeThe input type: list, text-input, number-input, or textarea.
valuesFor list types, an array of allowed values. For other types, an empty string.
selectedThe value to use for this conversion. Set this to override the default, or to "auto" on mapped metadata fields to copy matching source header values.

The easiest way to construct the options array is to call GET https://api.closedcaptionconverter.com/help/profiles/all, find your profile, copy the decode or encode array from the response, and then set the selected field on any options you want to change.

The example below converts from EBU STL to Scenarist V1.0, using the ch02 channel on the target:

{
"source_profile": "EBU STL",
"target_profile": "Scenarist V1.0",
"decoding_options": [
{
"name": "Decode Speakers By Color",
"type": "list",
"values": [true, false],
"selected": false
},
{
"name": "Speaker Identifier",
"type": "text-input",
"values": "",
"selected": ""
},
{
"name": "Insert Speaker Identifier",
"type": "list",
"values": [true, false],
"selected": false
},
{
"name": "Speaker Is Greater Than",
"type": "number-input",
"values": "",
"selected": 1
}
],
"encoding_options": [
{
"name": "Channel",
"type": "list",
"values": ["ch01", "ch02", "ch03", "ch04"],
"selected": "ch02"
},
{
"name": "Line Endings",
"type": "list",
"values": ["windows", "unix", "macintosh"],
"selected": "unix"
},
{
"name": "Timecode Format",
"type": "list",
"values": ["colon", "semi-colon", "auto"],
"selected": "auto"
}
]
}

You do not need to include every option in the array — omitted options use their profile defaults. However, if you do include an option object, the entire object (including name, type, and values) must be present and accurate; only the selected field needs to differ from the default.