SMI Subtitle Format
What this format can express
- Text styling
- Bold and italic
- On-screen positioning
- Yes
- Karaoke timing
- No
- Line breaks inside a cue
- Yes
- Timeline
- Start and end time for every cue
- Timing resolution
- 1 ms
- Timing stored as frame numbers
- No
- Right-to-left text
- Yes
Examples
A typical SAMI file, and what is read out of it
File
<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial; }
.ENCC { Name: English; lang: en-US; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=1000>
<P Class=ENCC>Hello there.
<SYNC Start=3000>
<P Class=ENCC>
<SYNC Start=3500>
<P Class=ENCC>How are you?<br>Fine, thanks.
<SYNC Start=6000>
<P Class=ENCC>
</BODY>
</SAMI>
What it holds
2 cues, 3 lines of text
Start=1000 = 00:00:01.000 → 00:00:03.000
Hello there.
[Class=ENCC]
Start=3500 = 00:00:03.500 → 00:00:06.000
How are you?
Fine, thanks.
[Class=ENCC]
Outside the cues:
head a <STYLE> block with CSS for the paragraphs, kept as it came in
cue ends the next <SYNC> tag — a SAMI file writes no end time of its own
clearing a <P> block blanks the screen; the two here are kept as clearing blocks, not turned into cuesThe right-hand side is not a converted file — it is what this site reads out of the left-hand side, and what every conversion of that file starts from.
An awkward SAMI file, and what is still read out of it
File
<SAMI>
<BODY>
<SYNC Start=abc>
<P Class=ENCC>this block's start cannot be read
<SYNC Start=2000>
<SYNC Start=4000>
<P>no attributes here<br>second line
<SYNC Start="6000">
some loose text before any P
</BODY>
</SAMI>What it holds
3 cues, 3 lines of text
Start=2000 = 00:00:02.000 → 00:00:04.000
(no text)
Start=4000 = 00:00:04.000 → 00:00:06.000
no attributes here
second line
Start=6000 = 00:00:06.000 → 00:00:08.000
some loose text before any P
Outside the cues:
head no <STYLE> block and no <TITLE> — just the <SAMI> and <BODY> tags
cue ends the next <SYNC> tag; the last cue has none after it, so its end time was given a default
loose text text between two <SYNC> tags that belongs to no <P> is kept and attached to the cue open at that point
Reported while reading — repaired or skipped, never silently:
1 × SYNC blocks whose start time could not be read (they were skipped)
1 × the last cue has no following timestamp, so its end time was generatedReal files arrive with a byte-order mark, Windows line endings, a stray line before a timecode, or a timecode that cannot be read at all. None of it throws: whatever cannot be understood is reported rather than dropped in silence.
Convert SAMI (SMI) to another format
Each of these runs entirely in your browser. The labels say what that direction costs before you open it.
- Precision
- Format-specific content
- Styling
- Positioning
- Format-specific content
- Format-specific content
- Timing
- Styling
- Positioning
- Precision
- Format-specific content
- Styling
- Positioning
- Frame rate
- Format-specific content
- Styling
- Positioning
- Format-specific content
- Styling
- Positioning
- Format-specific content
- Precision
- Format-specific content
- Format-specific content
- Timing
- Styling
- Positioning
- Line breaks
- Format-specific content
- Positioning
- Format-specific content
Converting into this format
- SubRip (SRT) → SAMI (SMI)
- WebVTT (VTT) → SAMI (SMI)
- Advanced SubStation Alpha (ASS) → SAMI (SMI)
- SubStation Alpha (SSA) → SAMI (SMI)
- YouTube SBV → SAMI (SMI)
- LRC Lyrics → SAMI (SMI)
- MicroDVD → SAMI (SMI)
- TTML (Timed Text) → SAMI (SMI)
- SubtitleMatrix JSON → SAMI (SMI)
- Plain Text (TXT) → SAMI (SMI)
- CSV Spreadsheet → SAMI (SMI)
SAMI (SMI) is one of the subtitle formats this site handles, and this page is its reference: what it can store, what it cannot, and a page for every format you can convert it to.
The table above is the whole of it — there is no hidden feature list. When a row says no, that is exactly what is lost by converting into SMI, and each conversion page linked below says so before you open a file.
Every one of those conversions runs in your browser. Nothing is uploaded and no account is needed, which matters for material under an NDA, a patient record or a broadcast embargo.
Frequently asked questions
What is a SMI file?
`.smi` is Microsoft's SAMI: subtitles written as an HTML fragment, where each `<SYNC Start=…>` tag says what is on screen from that moment on. Windows Media Player and the DVD and broadcast tooling of that era read it, and `.smi` files still turn up in archive material.
Does SMI store styling?
A little, and inside the text rather than beside it: emphasis and colour are part of the cue (`<b>`, `<i>`, `<u>`, `<font color="…">`). Nothing declares a font size, an outline or a margin, so the page displaying the subtitles decides those. A SAMI file can also carry CSS for the paragraphs in a `<STYLE>` block in its head — that is where a caption file usually says which font and colour the channel uses. A file that has one keeps it; a file that has none gets a small default one on the way out.
Does every SMI cue store both a start and an end?
Yes, and a moment in a SMI file reads `Start=4126`. That is as fine as SMI goes — to the millisecond — and the number is exact, so a cue can be short, long, or overlap the next one without anything being implied.
Which format should I convert SMI to?
Nothing on this site takes everything a SMI file holds, so there is no free direction — each conversion page names its own list of losses. Pick the target by which of those lists you can live with, not by which format you have seen most often.
What does a SAMI file keep outside its cues?
A `<STYLE>` block in the head holding CSS for the paragraphs — for a caption file that is usually the channel's look: font, size, colour, and where on screen the text sits — plus a `<TITLE>`, and attributes on each paragraph such as `Class=ENCC`, which is how a paragraph is pointed at one of those CSS rules. None of that is part of the cue model, so a format with no equivalent cannot take it, and each conversion page lists it as a loss.