Caption Format Reference

SAMI File Format (.smi)

SAMI is Microsoft's caption format from the Windows Media era, and it looks like HTML because it essentially is. Two things make it worth understanding: it holds several languages in one file, which almost nothing else does, and it has no end times, which catches out every converter written by someone who assumed it did.

What can a SAMI file be converted to?

SAMI converts to SRT, WebVTT, TTML, IMSC and SCC without difficulty. The one decision every conversion has to make is how to derive end times, because SAMI stores only a start time for each caption and clears the screen with an empty entry.

SAMI at a glance

SAMI is plain text with an HTML-like structure: a head containing CSS class definitions, and a body of time-stamped paragraphs that reference those classes.

Technical properties of the Synchronized Accessible Media Interchange (SAMI) file format
PropertyValue
Full nameSynchronized Accessible Media Interchange
Extensions.smi, .sami
OriginMicrosoft, for Windows Media Player
File structureHTML-like markup with a CSS style block in the head
File encodingUndeclared in practice. Often a legacy Windows code page
TimingMillisecond start values on each synchronisation point
Timing modelStart only. A caption clears when an empty entry follows it
PositioningThrough CSS in the style block, inconsistently honoured
StylingCSS class definitions: colour, font, alignment
Languages per fileMultiple, using one CSS class per language
Current statusLegacy. Encountered as archive material
Closed Caption CreatorRead and write

Note that .smi is also used by SMIL, an unrelated multimedia format. A readable file beginning with a <SAMI> element is SAMI.

What SAMI can and cannot carry

SAMI's capability set is unusual: richer than SRT in some respects, poorer in the one that matters most for conversion, and with a genuinely distinctive multi-language design.

Features supported and not supported by the SAMI caption format
CapabilitySupportedNotes
Dialogue textYesSubject to the file's encoding being identified correctly
Multiple languages in one fileYesOne CSS class per language, selected by the player
Explicit end timesNoA caption stays up until an empty entry replaces it
Text colourYesDefined in the CSS style block
Font family and sizeYesRequested through CSS, honoured at the player's discretion
Text alignmentPartialExpressible in CSS, but support varied widely between players
PositioningPartialCSS-based, and unreliable outside Windows Media Player
Italics and boldYesThrough inline tags or CSS classes
Speaker identificationNoWritten into the caption text itself
Declared encodingNoThe most common cause of unreadable SAMI files
Frame-accurate timingNoMilliseconds do not align to a frame boundary

Where do SAMI files come from?

SAMI is not specified for new work. It shows up when older material resurfaces, particularly corporate, education and government video from the Windows Media era.

  • Archive and e-learning libraries built between the late 1990s and the early 2010s.
  • Government and public sector video estates with long retention requirements.
  • Corporate training catalogues being migrated to a modern platform.
  • Older Windows Media and Silverlight streaming workflows.

The destination is almost always WebVTT for web playback or SRT for general use. For broadcast re-use, SCC or MCC.

How do I open a SAMI file?

SAMI is plain text and opens in any editor. You will see a SAMI root element, a style block defining one class per language, and a series of time-stamped entries below it.

If the text is garbled, the cause is encoding. SAMI carries no encoding declaration, and most surviving files were written in a Windows code page rather than UTF-8. Re-open with the correct encoding rather than trying to repair the characters.

Because the format is readable and HTML-like, hand-editing is tempting and mostly safe — but remember that the empty entries between captions are not padding. Deleting one leaves the previous caption on screen indefinitely.

Converting SAMI to another format

Every conversion out of SAMI has to solve the same problem first: turning start-only timing into the start and end times every modern format expects.

What survives when converting a SAMI file to other caption and subtitle formats
Convert SAMI toWhat survivesWhat to watch for
WebVTTText, basic styling, language separationEnd times must be derived. Each language class becomes its own WebVTT track.
SRTText and line breaksEnd times derived, styling discarded, and one file produced per language.
TTML / IMSCText, styling, language separationThe most complete target. CSS classes map onto named styles, and languages onto separate divisions.
SCCText and italicsEnd times derived, then re-encoded as 608 erase commands. Output must be 29.97 fps, and only one language can be carried per channel.
MCCText, italics, colourAs SCC, with a wider choice of frame rate and room for a second language as a separate service.
EBU-STLText and colourEnd times derived, a 25 fps base chosen, and a character table selected.

Converting another format to SAMI

Converting into SAMI is uncommon and generally only worth doing to feed a legacy player that accepts nothing else.

What to check when converting other caption formats to SAMI
Convert to SAMI fromWhat carries overWhat the conversion has to decide
SRTText and line breaksEnd times become empty clearing entries rather than being stored directly.
WebVTTText and basic stylingCue settings have no reliable SAMI equivalent. Styling moves into CSS classes.
TTML / IMSCText and stylingRegions flatten. Multiple language divisions can become multiple SAMI classes.
SCCText and italicsGrid placement is discarded, and colour has to be re-expressed as CSS.

Closed Caption Creator reads and writes every format in both tables. See the full file format support list, or the conversion API and CLI for batch archive migrations.

Where SAMI conversions go wrong

SAMI's two quirks — no end times and no declared encoding — account for nearly every conversion problem.

  • Ignoring the clearing entries. The empty entries between captions are what set the end times. A converter that skips them leaves every caption on screen until the next one arrives.
  • Guessing the encoding. There is no encoding declaration. A Windows code page file read as UTF-8 turns accented characters into symbols, and the damage is not recoverable after saving.
  • Merging the languages. A multi-language SAMI converted without separating the CSS classes produces one file with every language interleaved at the same timecodes.
  • Expecting CSS positioning to survive. SAMI positioning was unreliable even in its own era. Treat placement as advisory and re-check it against picture after conversion.

For migrating a legacy caption library in bulk, see the conversion API and CLI.

Frequently asked questions

SAMI conversion questions

Common questions about opening and converting legacy SAMI caption files.

Yes, and it is the format's most distinctive feature. Each language is defined as a CSS class in the style block, and every caption references the class it belongs to. A player offers those classes as selectable tracks. Almost no other sidecar caption format does this, which is why converting a SAMI usually produces several output files rather than one.

Because SAMI has no end times, and the converter ignored the entries that clear the screen. A caption remains displayed until a later synchronisation point replaces it, and files signal a gap by including an entry with empty text. Skip those and every caption runs on until the next line of dialogue.

Yes. The text and start times convert directly, and end times are derived from the following entry or clearing entry. Styling defined in the CSS block is discarded, since SRT has nowhere to put it. If the SAMI holds several languages, expect one SRT per language rather than a single combined file.

Both formats use the extension, and they are unrelated. Open the file in a text editor: a SAMI file begins with a <SAMI> element and contains a CSS style block, while a SMIL file is XML describing a multimedia presentation layout. If you can read caption text in it, it is SAMI.

Encoding. SAMI predates the convention of declaring an encoding, and most surviving files use a Windows code page rather than UTF-8. Opened with the wrong assumption, accented and non-English characters become symbol pairs. Re-open the original with the correct encoding — once a mis-decoded file has been saved, the original characters are gone.

Only if something in the chain requires it. For web playback WebVTT is the correct format, and for anything broadcast it is SCC, MCC or EBU-STL. The reason to work with SAMI in 2026 is to get archive material out of it, typically as part of migrating an older video library to a current platform.

Work with SAMI files

Bring a legacy caption library forward

Closed Caption Creator reads SAMI with the correct encoding, separates its language classes, and derives proper end times on export.

Convert an archive to WebVTT, SRT, IMSC or SCC in bulk rather than file by file.