Bilingual Subtitle Files: SRT, VTT and ASS Compared

The hard part of bilingual subtitles is not the translation — tools handle that. What actually trips people up is: after translating, how do you fit two lines of text into one subtitle file.

There are two ways to do bilingual subtitles: two lines in a single file (one cue carries two lines of text) and dual tracks (original and translation each on their own track, toggleable separately). Dual tracks suit watching on your own machine; for delivering to a platform or a client, use two lines in a single file — many platforms accept only one track, and if the user does not enable it, nothing shows at all. What follows covers the single-file, two-line approach.

SRT: Best Compatibility, But No Styling

Bilingual SRT is simply two lines of text, and their order is the layout:

1
00:00:01,000 --> 00:00:03,000
Hoy vamos a hablar de tres cosas
We'll cover three things today

The two lines belong to the same cue and share the same time range, with no blank line between them — a blank line gets parsed as "the next subtitle starts here". Also, SRT supports no inline styling at all: both lines have identical font size, color and position.

This means that in SRT, order is your only layout tool: whatever line you put on top is the one viewers read first.

Fits: YouTube CC uploads, subtitle import on the vast majority of platforms, delivery to clients.

VTT: Styling Possible, Platform Support Varies

A VTT (WebVTT) file must start with a WEBVTT line, and millisecond values use a period as the separator (00:00:01.000) — SRT uses a comma, which is the most visible difference between the two. Bilingual VTT is also two lines, but you can tag each line with a class:

WEBVTT

1
00:00:01.000 --> 00:00:03.000
<c.es>Hoy vamos a hablar de tres cosas</c>
<c.en>We'll cover three things today</c>

Combined with CSS ::cue rules, or with cue positioning parameters (line, position, align) to place the two lines apart, VTT is considerably more expressive than SRT.

Fits: web players, HLS streaming. Note: local players and some platforms support VTT less universally than SRT, and once a file "imports successfully", how it actually renders varies widely from one platform to another.

ASS / SSA: Strongest Bilingual Layout, Mostly for Burning

ASS is the only format that can style the two lines separately: define one style per language (font size, font, color, outline, margins), then write two Dialogue records at the same time point in the Events section.

[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:01.00,0:00:02.50,ES,,0,0,0,,Hoy vamos a hablar de tres cosas
Dialogue: 0,0:00:01.00,0:00:02.50,EN,,0,0,0,,We'll cover three things today

The two lines point at different styles — the source-language line a bit larger, the English line smaller — and positions can be controlled precisely. Neither SRT nor VTT can do this.

Cost: ASS mainly serves local playback and burning subtitles into the picture; most online platforms do not accept it as an upload format. Its time format is hours:minutes:seconds.centiseconds (two digits), different from both SRT and VTT.

Line Order: No Standard Answer, But Be Consistent

The eye reads top to bottom, so the top line gets read first — order determines priority.

Your audience mix Suggested order Why
Mostly international (TikTok, Reels, Shorts) Translation on top, original below Target viewers read the line they understand first
Mostly domestic, going global on the side Original on top, translation below Keeps existing viewers' habits unchanged
Bilingual teaching, language learning Original on top, translation below Learners read the original first, then check the translation

More important than "which order is correct" is staying consistent across the whole video — switching order midway forces viewers to keep re-locating the lines. Also, bilingual cues only have two lines of space with no room for wrapping; common guidelines recommend no more than 16 characters per line for Chinese and 42 for English, so compress the translation in advance.

Generate Bilingual SRT Directly with a Tool

Assembling lines by hand is error-prone — missing blank lines, mis-copied timelines, cue counts that no longer match. The bilingual SRT generator skips those steps: upload the original SRT, and the tool parses the timeline, translates the text, assembles the file as "original + translation" top to bottom, and you download the bilingual SRT directly. Free, no login; the limits are single files up to 1 MB and up to 500 subtitle cues, with 3 uses per tool per IP per day.

If you do not have an SRT yet, SmileSub's main workflow starts directly from the video: upload a video → automatic speech recognition → translation → burn the bilingual subtitles into the picture → download the finished video, with mutual translation across 20 languages including Chinese, English, Japanese and Korean. Keeping a subtitle file alongside the finished video also gives you a ready-made CC track for YouTube.

FAQ

Why does my bilingual subtitle show only one line in the player?

Usually a blank line was accidentally added between the two lines — the second line gets parsed as a new cue, but it has no timeline of its own, so both get dropped. Check whether the cue count still equals the original count and you can locate the problem.

Can SRT give the two lines different font sizes?

No. SRT has no styling layer; the two lines are completely identical. To give each language a different size or color, you need ASS, or you need to burn the subtitles into the picture and set them separately at render time.

Do VTT and SRT use the same millisecond separator?

No, and this is the easiest thing to get wrong: SRT uses a comma (00:00:01,000), VTT uses a period (00:00:01.000). Renaming an SRT file to .vtt usually makes it unparseable, because the file also lacks the WEBVTT header line.