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.
| Property | Value |
|---|---|
| Full name | Synchronized Accessible Media Interchange |
| Extensions | .smi, .sami |
| Origin | Microsoft, for Windows Media Player |
| File structure | HTML-like markup with a CSS style block in the head |
| File encoding | Undeclared in practice. Often a legacy Windows code page |
| Timing | Millisecond start values on each synchronisation point |
| Timing model | Start only. A caption clears when an empty entry follows it |
| Positioning | Through CSS in the style block, inconsistently honoured |
| Styling | CSS class definitions: colour, font, alignment |
| Languages per file | Multiple, using one CSS class per language |
| Current status | Legacy. Encountered as archive material |
| Closed Caption Creator | Read 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.
| Capability | Supported | Notes |
|---|---|---|
| Dialogue text | Yes | Subject to the file's encoding being identified correctly |
| Multiple languages in one file | Yes | One CSS class per language, selected by the player |
| Explicit end times | No | A caption stays up until an empty entry replaces it |
| Text colour | Yes | Defined in the CSS style block |
| Font family and size | Yes | Requested through CSS, honoured at the player's discretion |
| Text alignment | Partial | Expressible in CSS, but support varied widely between players |
| Positioning | Partial | CSS-based, and unreliable outside Windows Media Player |
| Italics and bold | Yes | Through inline tags or CSS classes |
| Speaker identification | No | Written into the caption text itself |
| Declared encoding | No | The most common cause of unreadable SAMI files |
| Frame-accurate timing | No | Milliseconds 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.
| Convert SAMI to | What survives | What to watch for |
|---|---|---|
| WebVTT | Text, basic styling, language separation | End times must be derived. Each language class becomes its own WebVTT track. |
| SRT | Text and line breaks | End times derived, styling discarded, and one file produced per language. |
| TTML / IMSC | Text, styling, language separation | The most complete target. CSS classes map onto named styles, and languages onto separate divisions. |
| SCC | Text and italics | End times derived, then re-encoded as 608 erase commands. Output must be 29.97 fps, and only one language can be carried per channel. |
| MCC | Text, italics, colour | As SCC, with a wider choice of frame rate and room for a second language as a separate service. |
| EBU-STL | Text and colour | End 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.
| Convert to SAMI from | What carries over | What the conversion has to decide |
|---|---|---|
| SRT | Text and line breaks | End times become empty clearing entries rather than being stored directly. |
| WebVTT | Text and basic styling | Cue settings have no reliable SAMI equivalent. Styling moves into CSS classes. |
| TTML / IMSC | Text and styling | Regions flatten. Multiple language divisions can become multiple SAMI classes. |
| SCC | Text and italics | Grid 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.
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.
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.